Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: sés en 13 de Abril de 2004, 03:30:33 PM

Título: Formatos 3d
Publicado por: sés en 13 de Abril de 2004, 03:30:33 PM
 Según tengo entendido (yo no lo uso) con el 3D Studio Max se pueden hacer objetos y luego colocar referencias a ese objeto en distintas partes, de forma que si se modifica el original, se modifican todas sus copias.

Hasta aquí bien, ¿pero cómo puedo obtener esa información?

El formato ASE no refleja eso, en su lugar repite cada objeto N veces, lo que no me soluciona mucho.
El formato 3DS no recuerdo que lo tuviera (hace mucho que lo usé).
Supongo que en el formato MAX tiene que venir la escena de esa forma (un solo objeto y referencias a el), pero no encuentro información sobre este formato.

¿Alguien sabe dónde encontrar información del formato MAX o de cómo hacer lo que quiero sin tener que hacer un minieditor de escenarios?
Título: Formatos 3d
Publicado por: Astat en 13 de Abril de 2004, 04:03:57 PM
 Yo uso mi expotador para sacar la info de los XRefs, si te sirve de algo, ahi va el codigo que identifica si un nodo de 3dsmax es un XRef:


IXRefObject *cExport::GetXRef(INode *pNode)
{
 Object *pObj = pNode->GetObjectRef()->FindBaseObject();

 if (pObj->SuperClassID()==SYSTEM_CLASS_ID && pObj->ClassID()==Class_ID(XREFOBJ_CLASS_ID, 0))
   return (IXRefObject*)pObj;

 return NULL;
}
Título: Formatos 3d
Publicado por: sés en 13 de Abril de 2004, 04:22:14 PM
 Supongo que eso es parte del código de un plugin. Esa es otra opción, pero nunca he hecho ninguno y no sé si tardaría mucho en hacer un exportador sencillito.

¿Es muy complicado hacer uno? Lo único que quiero es generar un fichero en un formato propio (y bastante sencillo, al menos de momento).

¿Hay algún ejemplo sencillito?


...*buscando en google*
Título: Formatos 3d
Publicado por: Astat en 13 de Abril de 2004, 04:38:48 PM
 Casualmente el ultimo articulo que escribi para Edevi versa sobre eso, hechale un ojo:

http://edevi.manuelfl.com/  (el nº5)

Solo es la primera parte, pero inlcuye el esqueleto para comenzar a hacer tu propio exportador. Aqui puedes ver la primera version del formato de fichero:


http://www.martinbr.com/misc/format.txt


Un saludo
Título: Formatos 3d
Publicado por: Lord Trancos 2 en 13 de Abril de 2004, 07:46:25 PM
 Otra opcion seria usar MaxScript.
Título: Formatos 3d
Publicado por: sés en 13 de Abril de 2004, 08:24:54 PM
 
Cita de: "Lord Trancos 2"Otra opcion seria usar MaxScript.
¿Y qué es más rápido o sencillo?

*cotilleando los enlaces de Astat*
Título: Formatos 3d
Publicado por: Lord Trancos 2 en 13 de Abril de 2004, 08:30:33 PM
 Hombre... al principio cuesta un poco cogerle el tranquilo al MaxScript.... pero una vez sabes mas o menos como funciona, resulta facil y rapido.

Aqui te pongo un script de ejemplo que me hice para guardar todas las esferas de una escena. Lo usaba para tener información para despues detectar colisiones. Como puedes ver es corto, sencillo y no es necesario compilar.


-- This script will save position and radius of all spheres
-- in the scene inside a binary file.
--
-- by Lord Trancos

-- Count number of spheres
_numSph = 0
if (objects.count > 0) then
(
 for _cnt = 1 to objects.count do
 (
   if iskindof objects[_cnt] sphere do _numSph = _numSph + 1
 )
)

-- Any sphere ?
if (_numSph > 0) then
(

 -- Open save dialog
 _fn = getSaveFileName types:"SPH files|*.sph"
 format "%" _fn

 -- if user choosed a file...
 if _fn != undefined then
 (

   -- Open then file
   _f = fopen _fn "wb"
   if _f != undefined then
   (
     -- Write header
     WriteString _f "SPH"   -- File ID
     WriteLong   _f 1       -- File version
     WriteLong   _f _numSph -- # of spheres
   
     -- Now write sphere array
     for _cnt = 1 to objects.count do
     (
       if iskindof objects[_cnt] sphere do
       (
         WriteFloat _f -objects[_cnt].position.x  -- WARNING! invert X
         WriteFloat _f  objects[_cnt].position.z  -- WARNING! swap Y and Z
         WriteFloat _f  objects[_cnt].position.y  -- WARNING! swap Y and Z
         WriteFloat _f  objects[_cnt].radius
         WriteFloat _f (objects[_cnt].radius * objects[_cnt].radius)
       )
     )

     -- Close the file
     fclose _f
     messageBox "Work finished."
   )
 )
)
else
(
 messageBox "ERROR: 0 sphere(s) found."
)


Todo depende de lo que quieras hacer. Si es muy complejo te recomiendo que uses C que seguro q lo controlas. Si es una chorradita prueba con MaxScript.
Título: Formatos 3d
Publicado por: Lord Trancos 2 en 13 de Abril de 2004, 08:53:58 PM
 Para saber si un objeto es xRef (el codigo de Astat) en lugar de una esfera seria algo asin:


       if ClassOf objects[_cnt] == XRefObject then
...


Lo que pasa es que algo me dice que tu no te refieres a los objetos proxy (xRefs) si no a simples objetos que han sido clonados usando la opcion de Instancia/Referencia.... en ese caso no se como seria :P
Título: Formatos 3d
Publicado por: Lord Trancos 2 en 13 de Abril de 2004, 08:57:27 PM
Cita de: "sés"¿Alguien sabe dónde encontrar información del formato MAX o de cómo hacer lo que quiero sin tener que hacer un minieditor de escenarios?
Ni se te ocurra meterle mano a ese formato o acabaras loco :P
Título: Formatos 3d
Publicado por: AK47 en 14 de Abril de 2004, 11:02:08 AM
 O podrias guardar las fases en .3ds, usar los Pulsar LM Tools de Lord Trancos y leerte sus ficheros que tiene un formato sencillo. Aunque luego estaria el tema de colocar los items, etc... Yo para eso pienso usar un editor in-game  :)  (No muy complicado, claro)
Título: Formatos 3d
Publicado por: seryu en 14 de Abril de 2004, 11:47:08 AM
 una recomendación, busca exportadores de motores/juegos y métete en su código fuente, es la mejor forma de aprender.

el sdk del max también trae ejemplos útiles, aunque personalmente me parecen peores que los de maya.
Título: Formatos 3d
Publicado por: sés en 14 de Abril de 2004, 12:28:31 PM
 Creo que me decidiré por el plugin. Con el código de Astat me podré guiar bastante bien.
A ver si este finde me puedo poner a trastear con un poco de tiempo.

--- Para Astat ---
Algo que estaría muuuy bien para tu tutorial, como base para un exportador sería un plugin MÍNIMO, o sea, vértices, materiales y, como mucho, luces. Incluso se podrían eliminar los materiales.

Creo que lo ideal (hablo como alguien que busca algo de lo que partir) sería ese plugin mínimo, limitándose a mostrar por pantalla (o por donde sea) lo que va leyendo, sin preocuparse de inventar ningún formato.
Título: Formatos 3d
Publicado por: BeRSeRKeR en 14 de Abril de 2004, 01:45:25 PM
 Hey.

En el SDK de MAX te viene un exportador al formato ASCII (el ASE) que es el que suele utilizar todo el mundo para empezar en esto de los plugins. Sí es cierto que también tiene exportación de las keys de animación y demás, pero creo que viene todo bastante separado de forma que resulte más sencillo de entender.

Saludos.
Título: Formatos 3d
Publicado por: Zaelsius en 14 de Abril de 2004, 01:56:46 PM
 Por cierto, ¿el SDK de 3DS Max 6 ya es compatible con Visual Studio .NET 2002 o 2003? El último que probé fue el 4 pero pedia VC++ 6.0  :angry:  
Título: Formatos 3d
Publicado por: Astat en 14 de Abril de 2004, 02:01:13 PM
 
CitarAlgo que estaría muuuy bien para tu tutorial, como base para un exportador sería un plugin MÍNIMO, o sea, vértices, materiales y, como mucho, luces. Incluso se podrían eliminar los materiales.

Para cuando este el Edevi nº6 (espero que no tarde otros 6 meses en salir, como el nº5.. jeje) mi intencion era tener un exportador de mallas estaticas (con materiales) y un pequeño visor para ver los modelos. Al final de esa serie de tutoriales me gustaria hacer un exportador de escenas (modelos, animaciones, luces, objetos definidos en MaxScript, etc).

Offtopic: No viene mucho a cuento, pero este mes sale la revista "VideoJuegos" una entrevista que me hizieron el mes pasado, si quereis escuchar las tonterias que digo, pues ya sabeis... (nooo)  
Título: Formatos 3d
Publicado por: Zaelsius en 24 de Mayo de 2004, 01:07:33 AM
 Rescato este post para auto-contestarme: el SDK de 3d studio max 6 es compatible con Visual Studio .Net 2002 y 2003.  :)

En el artículo de Astat(edevi nº5) lo comenta pero no me habia fijado  (rules)  
Título: Formatos 3d
Publicado por: Astat en 24 de Mayo de 2004, 02:21:58 AM
 Hablando del tema de formatos 3d, no se si sabeis que compañias como Intel, Adobe, Microsoft y otras 30 mas (agrupadas en el 3D Industry Forum, 3DIF), estan desarrollando lo que seria un formato universal para 3D (U3D). Pretenden que sea extensible y muy flexible para soportar todas las nuevas caracteristicas que vayan surguiendo.

A mi me parece una idea cojonuda, la verdad. Que el grafista use lo que quiera para modelar, que mientras soporte U3D, lo podre cargar en mi motor.

http://www.theregister.co.uk/2004/04/21/intel_u3d/

Título: Formatos 3d
Publicado por: Haddd en 24 de Mayo de 2004, 09:09:39 AM
 ¿Teneis timings sobre U3D?
Título: Formatos 3d
Publicado por: donald en 24 de Mayo de 2004, 09:16:01 AM
  O_O  u3d es el formato nativo de Ultimate unwrap...quiero decir, lo llamó así, hace mucho tiempo.
Título: Formatos 3d
Publicado por: Astat en 24 de Mayo de 2004, 10:10:08 AM
 
Citar¿Teneis timings sobre U3D?

Dicen que estara listo para finales de año  :(
El foro donde hablan del tema esta bastante restringido, asin que solo nos queda esperar (grrr)

Citaru3d es el formato nativo de Ultimate unwrap...quiero decir, lo llamó así, hace mucho tiempo

No tiene nada que ver con eso, a pesar de coincidir en la extension.