Gracias Gracias:  0
Resultados 1 al 14 de 14

Tema: Exportador en maxscript

  1. #1
    Miembro Nuevo
    Fecha de ingreso
    Jun 2003
    Mensajes
    22

    3dsmax Exportador en maxscript

    Pues eso... deseo hacer un script que me exporte la posición, rotación y escalado de todos los modelos de una escena. No se esi esta es la rama más adecuada del foro para hacerlo... pero es que no sabia donde meterlo.

    Es para hacer la composición de la escena de un juego en max y luego exportar la posición exacta de todos los objetos a un fichero para cargarlos exactamente igual en el motor del juego. Algo así como un editor de mapas pero más sencillo.

    No tengo ni idea de max script así que no se ni como empezar. Se programar sin problemas en lenguajes como c++, etc así que tampoco necesito explicaciones demasiado básicas.

    A ver si alguien me puede ayudar, que parece que el maxscript es ese gran desconocido.

    PD: si nadie sabe como hacerlo me vendria bien al menos algún tutorial en español a ser posible.

  2. #2
    Marqués de Carabás Avatar de alberizo
    Fecha de ingreso
    Nov 2005
    Mensajes
    2,061

    Re: Exportador en maxscript

    si sabes C++ podrías hacerlo con el SDK del max

  3. #3
    El cabreador
    Fecha de ingreso
    Oct 2002
    Ubicación
    S.Compostela.
    Mensajes
    8,790

    Re: Exportador en maxscript

    Creo que alberizo tiene razón, yo estoy aprendiendo a marchas forzadas maxscript, y si ya sabes c++ no tendrías problemas, aun así creo que si le echas un vistazo rápido a la ayuda del maxscript, te haces con él en dos patadas.

    Saludos.

  4. #4
    Marqués de Carabás Avatar de alberizo
    Fecha de ingreso
    Nov 2005
    Mensajes
    2,061

    Re: Exportador en maxscript

    o también tienes la opción exportar como ASE, y hacerte un lector conversor a tu formato, que sin duda es la opción más sencilla y que más gente usa

  5. #5
    H = E + L
    Fecha de ingreso
    Mar 2004
    Ubicación
    Entre dos vectores
    Mensajes
    870

    Re: Exportador en maxscript

    Hola.

    Cita Iniciado por imported_darkwin
    Pues eso... deseo hacer un script que me exporte la posición, rotación y escalado de todos los modelos de una escena.
    Prueba con esta función:

    Código:
    fn exportPRSData nodes file = (
    	format "numObjects %\n" nodes.count to: file
    	for node in nodes do (
    		format "\nname \"%\"\n" node.name to: file
    		format "position ( % % % )\n" node.transform.row4.x node.transform.row4.y node.transform.row4.z to: file
    		format "rotation ( % % % % )\n" node.transform.rotationPart.x node.transform.rotationPart.y node.transform.rotationPart.z node.transform.rotationPart.w to: file
    		format "scale ( % % % )\n" node.transform.scalePart.x node.transform.scalePart.y node.transform.scalePart.z to: file
    	)
    )
    Luego, para utilizarla, pon algo así:

    Código:
    fileName = getSaveFileName caption:"Save PRS data" types:"PRS data (*.prs)|*.prs"
    if fileName != undefined do (
    	local file = createFile fileName
    	if file != undefined do	(
    		exportPRSData $geometry file
    		close file
    	)
    )
    Con eso escribiras en el archivo seleccionado la matriz de transformación (posición, rotación y escala) de todos los meshes en la escena.

    Consulta la referencia de MAXScript para obtener más información.

    Tienes que tener en cuenta que no he hecho ningún tipo de conversión a Direct3D o a OpenGL.

    Cita Iniciado por imported_darkwin
    PD: si nadie sabe como hacerlo me vendria bien al menos algún tutorial en español a ser posible.
    Espero sacar pronto la primera parte de la serie de tutoriales sobre MAXScript que tengo previsto escribir.

    Saludos.
    Última edición por HalfVector; 19-07-2006 a las 22:48

  6. #6
    Miembro Nuevo
    Fecha de ingreso
    Jun 2003
    Mensajes
    22

    Re: Exportador en maxscript

    alberizo gracias por tus comentarios, pero por lo que me han comentado el sdque del max es un auténtico infierno y cambia en cada nueva versión de max... con lo cual aprender a desarrollar algo es muy muy difícil.

    Me estudiare a fondo la referencia tomando como base el código de HalfVector, al que estoy realmente agradecido.

    Espero ese tutorial con impaciencia y ánimo con el.

    Gracias a todos!

  7. #7
    H = E + L
    Fecha de ingreso
    Mar 2004
    Ubicación
    Entre dos vectores
    Mensajes
    870

    Re: Exportador en maxscript

    Cita Iniciado por imported_darkwin
    por lo que me han comentado el sdque del max es un auténtico infierno y cambia en cada nueva versión de max... con lo cual aprender a desarrollar algo es muy muy difícil.
    Es cierto que es un infierno, pero no porque cambie en cada versión (yo lo conozco desde la versión 6 más o menos y para mí que mucho no ha cambiado) sino porque hay una maraña de clases impresionante. Pero es lógico. Estamos hablando de una aplicación mastodóntica como MAX.

    En cualquier caso, para aplicaciones sencillas como ésta, sin duda la mejor opción es MAXScript. Como ves, en unas pocas líneas tienes lo que quieres.

    Saludos.

  8. #8
    Miembro Nuevo
    Fecha de ingreso
    Jun 2003
    Mensajes
    22

    Re: Exportador en maxscript

    Hola HalfVector, me queda una duda.. el engine que estamos usando trabaja sobre direct x, pero el max lo suelo tener con open gl. Para evitarme conversiones... bastaria con cambiar el max a direct x?

  9. #9
    H = E + L
    Fecha de ingreso
    Mar 2004
    Ubicación
    Entre dos vectores
    Mensajes
    870

    Re: Exportador en maxscript

    Cita Iniciado por imported_darkwin
    Hola HalfVector, me queda una duda.. el engine que estamos usando trabaja sobre direct x, pero el max lo suelo tener con open gl. Para evitarme conversiones... bastaria con cambiar el max a direct x?
    No, el hecho de tener activado OpenGL o Direct3D no cambia el sistema de coordenadas. MAX utiliza el suyo propio (right-handed, como OpenGL, pero con +Z apuntando hacia arriba y +Y hacia dentro de la pantalla).

    Así que, para Direct3D, al exportar tendrás que hacer algunas cosas. Por ejemplo en la posición y en la escala tendrás que intercambiar la Y por la Z y en la rotación también tendrás que hacer unos cambios. En el script que te he puesto la rotación se especifica como quaternion pero para hacer la conversión a Direct3D de forma más sencilla yo lo haría en formato Axis-Angle o Euler y entonces sería cuestión de intercambiar la Y por la Z. Y no me acuerdo si también había que negar el ángulo. Eso ya es cuestión de que vayas probando hasta que salga.

    Saludos.

  10. #10
    Miembro Nuevo
    Fecha de ingreso
    Jun 2003
    Mensajes
    22

    Re: Exportador en maxscript

    Hola HalfVector, he estado probando el script y va perfecto. Ahora solo quería añadirle ciertos datos y me he atascado en una cosa.. a ver si me puedes echar una mano.

    Cuando monte la escena me gustaría añadir algunos datos a cada modelo mediante un plugin (por ejemplo categoría del objeto (string) o ruta de la malla donde esta ese obeto exportado (string)...o cualquier otro que se me ocurra).

    He aprendido a crear mediante un script un nuevo modificador pero no se como sacar esos datos para incluirlos en tu script.

    Muchas gracias por tu ayuda... esto del maxscript es todo un mundo

  11. #11
    H = E + L
    Fecha de ingreso
    Mar 2004
    Ubicación
    Entre dos vectores
    Mensajes
    870

    Re: Exportador en maxscript

    Si puedes pon el modificador ese para que pueda ver cómo sacar los datos.

    Otra opción que tienes para asignar valores a un objeto es utilizar las "User Properties". Un ejemplo:

    Código:
    setUserProp $ "renderable" true
    setUserProp $ "path" "/base/objects"
    Con eso asignas una propiedad "isRenderable" de tipo boolean y otra de tipo string, "path", al objeto seleccionado.

    Luego, para recoger los valores, haces algo así:

    Código:
    isRenderable = getUserProp $ "renderable"
    format "isRenderable: %\n" (if isRenderable != undefined then isRenderable else "Propiedad no definida")
    objPath = getUserProp $ "path"
    format "path: %\n" (if objPath != undefined then objPath else "Propiedad no definida")
    Para más información sobre esos métodos consulta la referencia.

    De todas formas, si me pones el modificador que has hecho, te podre decir cómo acceder a sus propiedades.

    Saludos.
    Última edición por HalfVector; 25-07-2006 a las 01:39

  12. #12
    Miembro Nuevo
    Fecha de ingreso
    Jun 2003
    Mensajes
    22

    Re: Exportador en maxscript

    Hola halfvector!
    Una vez más gracias por tu ayuda. Te copio el script con el que añado un modificador propio:


    plugin modifier MyGames
    name:"MyGames Identifier"
    classID:#(0x133067, 0x54374)
    versión:1
    (
    parameters main rollout:params
    (
    archivo type: #string --estos parámetros aun no sé como se usan
    )

    rollout params "General"

    (
    edittext narchivo "Nombre de archivo:" labelOnTop:true
    )

    )




    Mi idea es correr este script cuano lo termine y luego ir montando la escena, rellenando los datos que necesite para cada objeto. Cuando termine tendré que correr el otro script para exportar los datos básicos de la geometría y los que introduzca en ese modificador.

    Como ves estoy un poco atascado, me gustaría mejorar el modificador que te he puesto y terminar el otro script.

    Muchas gracias por tu ayuda!

  13. #13
    H = E + L
    Fecha de ingreso
    Mar 2004
    Ubicación
    Entre dos vectores
    Mensajes
    870

    Re: Exportador en maxscript

    Ese bloque de parámetros sirve para que el plugin sepa qué parámetros y con qué valor tiene que guardar en disco. Lo único que te ha faltado es asociar ese parámetro "archivo" con el control de edición de texto del rollout "narchivo":

    Código:
    plugin modifier MyGames
    name:"MyGames Identifier"
    classID:#(0x133067, 0x54374)
    versión:1
    (
    	parameters main rollout:params
    	(
    		archivo type:#string ui:narchivo --estos parámetros aun no sé como se usan
    	)
    
    	rollout params "General"
    	(
    		edittext narchivo "Nombre de archivo:" labelOnTop:true
    	)
    )
    Luego, si al objeto seleccionado le añadiste ese modificador, puedes acceder a la propiedad "archivo" de la siguiente forma:

    Código:
    $.modifiers["MyGames Identifier"].archivo
    Con eso debería bastar.

    Saludos.

  14. #14
    Miembro Nuevo
    Fecha de ingreso
    Jun 2003
    Mensajes
    22

    Re: Exportador en maxscript

    Perfecto... gracias!!

    Ya he robado los dos scripts y funcionan! Eres un crack!

Temas similares

  1. exportador de panoramas
    Por carcube en el foro Render, Iluminación y Cámaras
    Respuestas: 0
    Último mensaje: 08-04-2010, 18:32
  2. algun exportador MD2 decente
    Por exavi en el foro Videojuegos
    Respuestas: 4
    Último mensaje: 14-05-2007, 16:46
  3. Exportador de curvas Blender a Max
    Por SHAZAM en el foro Programación y Scripts
    Respuestas: 2
    Último mensaje: 05-05-2007, 17:51
  4. nuevo exportador obj de MOI
    Por fernando aponte en el foro Infografía General
    Respuestas: 1
    Último mensaje: 21-11-2006, 14:17
  5. exportador de panoramas
    Por pixeldesing en el foro Infografía General
    Respuestas: 1
    Último mensaje: 03-07-2006, 18:17

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •