Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cargar Ficheros De Mallas (3ds,md3,md5,...)

Iniciado por DraKKaR, 10 de Noviembre de 2004, 04:21:02 PM

« anterior - próximo »

DraKKaR

 Hola, tenía pensado hacer unos cuantos plugins para cargar modelos y mallas en formatos externos al de mi motor. Me preguntaba si sabéis links a recursos para cargar modelos de este tipo, ya sabeis, por no reinventar la rueda. Lo ideal sería encontrar clases que cargaran internamente la información de los modelos y que se pudiera acceder facilmente a dicha info.

Estoy particularmente interesado en poder cargar modelos de Quake3 (MD3) y Doom3 (MD5).

Pogacha

 De librerias no se ninguna, si la encuentras me avisas.
MD2 y MD3: http://www.gametutorials.com/Tutorials/ope.../opengl_pg5.htm, hay un buen tutorial sobre MD2 y MD3, tambien sobre 3ds pero tenes que comprar el CD.
MD5: www.doom3world.org, aqui hay mucha info sobre md5 pero no se si alguna libreria entera. (berserkerer a hecho un exportador para max que esta my bueno, incluso lo publicaron en el mismo sitio donde se encuentra el Doom 3 sdk)
Ahora que lo mensiono..., tendré que revisar el Doom 3 sdk.
3DS: en el framework de ATI hay codigo, en el de NVidia tambien.
Saludos.

Pogacha


Lord Trancos 2

 Recientemente he hecho un visor de modelos MD5, pero esta en delphi :P

De todos modos, por si te interesa para dios sabe que:
http://www.geocities.com/dxlab/tmp/lt_md5_...odel_viewer.htm
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Pogacha


Sacrifai

  (ole) Un sitio muy util con documentación de muchos formatos, entre ellos formatos de modelos 3d, Wotsit.

Lord Trancos 2

Cita de: "Pogacha"Nadie tendra algo hecho en C/C++?
Para C/C++ puedes probar con el Eskalibur
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

donald

Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

martiño

 DraKKaR,

Nosotros lo que hacemos en el Glest (y lo que se suele hacer en los proyectos comerciales) es cargar un formato propio y luego hacer un plugin para exportarlo desde el MAX, asi indirectamente se soportan todos los formatos que el MAX sea capaz de abrir, ya que luego se pueden exportar a nuestro formato.

Pogacha

 Eso suena bien, lo que yo hacia, sin ir mas lejos, era un conversor de MilkShape3d ascii a mi formato, pero lo abandone hace mucho, despues use formatos como el md2 y md3.
Pero esa idea es mas redonda, aun que no tengo ni creo que pueda tener el 3ds.
Saludos.

DraKKaR

 Muchas gracias pogacha! (ole) la página de gametutorials me ha proporcionado bastantes cargadores a los formatos que quería. Una lástima que no esté el formato MD5.

Lord Trancos, he estado ojeando tu código, y sería perfecto para lo que necesito si estuviera en C++. Y el excalibur no me vale si no peudo obtener el código fuente.

Martiño: si mi motor ya tiene un formato propio, lo que pasa es que quería crear unos cuantos plugins para importar estos formatos directamente.

He conseguido una clase cargadora de modelos md5mesh y md5anim, lo que pasa es que está hecho para la versión 6 del formato, y la última es la 10. Si los cambios a realizar fueran sencillos, se podría modificar...

Lord Trancos 2

 
Cita de: "DraKKaR"Lord Trancos, he estado ojeando tu código, y sería perfecto para lo que necesito si estuviera en C++. Y el excalibur no me vale si no peudo obtener el código fuente.

Te he puesto el Exkalibur, pq viene con el codigo fuente en C/C++. ¿Has mirado la carpeta "src" despues de instalar el programa? :P

La version 6 y 10 cambian lo suficiente como para que las modificaciones no sean triviales (basicamente lo que cambia es el md5anim).

Pero para calcular los vertices y las normales uso basicamente el mismo metodo que con el visor de modelos V6 que encontre (y que probablemente es el mismo que tu tienes).
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

Lord Trancos 2

 Por cierto, pasa de los archivos 3DS. Son demasiado enrevesaos para lo que ofrecen. Te recomiendo que uses .OBJ para las mallas estaticas.  (ole)  
on los años y mucho esfuerzo he llegado a atesorar una ignorancia total sobre casi todas las cosas.
Gate to Avalon (mi Blog)

donald

 euh...he oído decir eso a programadores ...y es cierto. pero es que todo depende. Mis dos céntimos de euro Aunque es lo más óptimo y tal, pq acabas metiendo hasta el último estornudo que haga el grafista en Max (o el que sea) yo lo veo chungo para un engine que quieras sacar al gran público.


Yo he visto otros engines (muy, muy pocos) que , además de tener eso hecho para los dos paquetes principales (sería un trabajazo tenerlos para más) , tienen un conversor de formatos standard a el suyo propio. El suyo propio, del engine o juego, suele ser mucho más rápido, perooo...desde el punto de vista del grafo (que al ser una "partecita" del juego, tb cuenta ;) )  está genial poder importar al engine un OBJ, un x o un md5.  Igual luego tu engine convierte (sin fastidiar lo "transportado"!) a un mucho más optimizado formato binario tuyo (lo que incluso puede llevar a poder proteger el artwork) , pero es sencillamente genial, si , por ejemplo, das soporte de OBJ para objetos. Ya que el OBJ lo exporta desde un Anim8or, hasta un Blender, XSI, Max, Maya, Lightwave, CUALQUIERA..... (ayer comentaba eso en el engine de c#)  y es en general muy bueno...  

Yo siempre había defendido el x para los niveles,(por permitir dos canales de uv mapping) pero o Ultimate Unwrap tiene ese límite en exportación, o, lo más probable, *.x no puede exportar más de 65 mil triángulos, o sea , idéntico límite que *.3ds . (siendo éste mi formato más odiado)

Muchos de estos formatos tienen estos estúpidos límites...el md3 y el 3ds no soportan shared UVs, con lo que te meten cortes en el suavizado, jodiendo el modelo....md3 tiene un límte mucho más bajo, 8 mil triangulos, aunque hoy por hoy está bien....Se pueden hacer anims md3 siempre que se sepa de antemano que se vaa exportar en md3, para uv mapearlo escondiendo bien los limites uv (debajo de la barbilla, etc) no se haga en trozos como en el viejo quake3, sino exportando de una pieza(no soporto los "pesos automáticos" de q3, prefiero "pesarlo" yo) y que el engine haga las interpolaciones entre mesh y mesh. La ventaja que le veo al md3 es que muy probablemente tira en tarjetas más viejas, al requerir los otros formatos -bones y pesos- el calculo de pesos por tarjeta.  Que no se hacía en tarjetas muy viejas, y eso por software es lento.

Así que....no sé....si sería factible o inteligente usar por ejemplo una especie de importación(hablo del tema de niveles ahora) en dos fases... me explico :  el engine carga un OBJ exportado por el grafista, importando así la malla, sus características (smoothing, materiales, etc) , y su uvmapping the canal 1, el normal.  Luego, el grafo hace una version del mismo modelo-terreno-loquesea  pero uvmapeado de otra forma (las UVs del canal 2, para el lightmap) , y tb le da al programador el TGA lightmap que ha generado.

La cosa sería que el engine cogiera los dos OBJs y el tga y generara a partir de ahí un fichero de su formato propio con esa malla, esos dos canales de UV, asociando la textura normal en el canal 1, y el lightmap en el canal 2. Con esto lo tienes todo, y es muchísimo más standard de cara a que el grafo te pueda dar el artwork, tenga el paquete que tenga. Incluso aunque curre con paquetes limitados en eso -como el Blender- te podrá generar el lightmap con truquillos, ya que la feature que le falta a muchos paquetes (generar lightmaps standards, en un archivo de multiples UVs, con el tga generado ya asociado al 2º canal)  la estás implementando tú en el engine, realmente.

Otra cuestión es....Hay determinados formatos que se hicieron en un paquete determinado para exportar lo máximo. Por ejemplo, el ASE, de Max. (Ascii Scene Export, creo) O el dotXSI , del Softimage XSI que yo *cough* tengo....  8)

[ Estuve viendo el otro día (ya que me he gastado los dineros, debería empollarme más este chisme...)  que ese dotXSI exporta hasta las cosas más locas.... ]

Problema? el de siempre, el dotXSI no se exporta desed otro paquete que yo sepa, y el ASE, casi lo mismo. El único paquete que uso (comprado o frebie, y yo uso una cantidad ingente de softwares) que exporta ASE aparte de Max, es Ultimate Unwrap. (y no sé desde max, pero desde ultimate unwrap exporta un chorro de cosas: vertex colors, multiple uv sets(canales uv), smoothing, multisuboject materials....O sea, que yo sepa, todo lo esencial para hacer muy buenos niveles.)

O sea, si haces soporte de dotXSI, tendrá el tema , a nivel pragmàtico, muy poca diferencia(aunque yo como usurio creo que tengo el sdk, pero xsi creo que lo da gratis) de portar lo necesario para cualquier juego, idem en el caso de Max con ASE, siendo algo más soportado pq se puede exportar tb desde Ultimate Unwrap(40$) y seguramente desde algún paquete más,(Blender tiene un viejo, no incorporado ASE export plugin, no sé si rula en las ultimas) pero me temo que rara vez los paquetes implentarán bien un exportado ASE.

Es más, si Blender 2.34 o las ultimas builds (cercanas ya a la 2.35) , teniendo en cuenta qu elos exporta bien el ultimate, y el Max, bueno, pues casi tendría sentido darle soporte, ya q tengo entendido que no es un formato complejo para programadores.  pero el OBJ es muchísimo más standard, por si es aplicable mi idea de arriba que implicaba al OBJ.

Parece que -si no se ha colgado el equipo- mientras escribía esto, el Ultimate ha exportado bien un ASE de la copa del arbol del otro día , teniendo no sé si 140 mil triángulos o más, y habiéndole yo generado dos canales ed UV para probar. Ventaja respecto al x que soiporta por tanto más de 65 mil, y frente al OBJ qu esoporta no solo 2 canales de UV sino tb vertex colors (tb soportado por *.x)

El md5 e sun estupendo formato, muy moderno y más potente que el *.x ...mi pena es que  aún esté menos soportado que el *.x por los paquetes.


Ya están las especificaciones de la versión del juego, creo que aquí :

http://www.doom3world.org/phpbb2/viewtopic...t=2884&start=60

Igual te interesa leerte todo el thread, pero he visto un tut por ahí :

http://home.planet.nl/~monstrous/tutmd5mesh.html

página de tools que exportan o importan md5 :
http://www.doom3world.org/phpbb2/viewtopic.php?t=5474

http://www.doom3world.org/phpbb2/viewtopic.php?t=6733


El formato de md5 final debe estar en algún sitio. Digo yo. Supongo que igual en el SDk que han sacado, lo tienes todo.

veo que ASE es precisamente un formato que usa también Doom3.

Mi planteamiento es que si vas a hacer u njuego moddeable, o un engine genérico, o simplemente, no tienes a un grafista enamorado de tí pa siempre, las opciones mejores son las de dar un soporte más global en cuanto a formatos.

Por ejemplo OBJ (casi diría que lo veo esencial:muy bueno y super standard) y ASE(vertex colors(extra lighting) y dos(puede que más) canales uv) para objetos y niveles,  md5 para personajes parece que está bastante bien.

Yo casi te diría que ya con esos 3 (el x es muy standard, aunque dicen por aquí que es dificil de cara a ciertas cosas para el programador)  va que chuta.

Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S

donald

 
por cierto, buscando un link directo a las specs de md5, he pillado un thread de ahora mismo, en que un par de tipos podrían estar dando soporte MD5 para XSI 4, lo cual es INTERESANTÍSIMO, las capacidades de animación de personajes de xsi son brutales, y sólo cuesta 500$.

Si sale, estaría chulo poder animar un modelo en xsi y exportarlo a md5.

Lo que uno está haciendo es convertir de dotxsi a md5...no sé, hay tb un SDK, pero parece que el dotxsi que está pensado para exportado hacia juegos, es bastante completo.

La opción que personalmente tengo pal md5 es Blender,(recientemente *cough* Gmax... ;) ) y no mola la mitad de la mitad, para esto en concreto....



Me paso por aquí de cuando en cuando (1 vez cada 3 o 4 meses) ...así que si no respondo a algo no es por antipático. ;) Posteo, y me acuerdo del foro tres meses después... ;)    :-S






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.