Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: BeRSeRKeR en 16 de Marzo de 2003, 05:13:52 AM

Título: Visor MD5...
Publicado por: BeRSeRKeR en 16 de Marzo de 2003, 05:13:52 AM
                                Muy buenas a todos!.

Resulta que este último mes y medio he estado algo ocupado terminando un proyecto de Java que tenía que hacer para final de curso por lo que he estado prácticamente dicho tiempo sin tocar ni una línea de código relacionada con el tema de las 3D  :-?

Pero la semana pasada terminé con el dichoso proyecto, ¡¡por lo que estaba en disposición de poder hacer algo relacionado con las 3D!!...así que, pensando en qué podría hacer, llegué a la conclusión de que estaría bien un visor de MD5 (formato de Doom3) ahora que está tan de moda por el foro :jaja:.

Así que aquí os muestro lo que llevo hecho entre el fin de semana pasado y lo que llevamos de este. La parte de per-pixel bumpmapping + diffuse está terminada y ya he implementado cosas para obtener per-pixel bumpmapping + diffuse + specular pero hay que refinarlo bastante para obtener un buen resultado.

Lo próximo que haré cuando termine la parte de render, posiblemente será implementar la animación esquelética...todo se andará. ¡Depende del tiempo que me quede libre!

Ah bueno, por si os interesa, el visor está desarrollado en C++, utilizando Direct3D 9.0 para el render y soporte para vertex & pixel shaders 1.1. Las imágenes del visor están renderizadas con GeForce3. Las podéis descargar de http://www.arrakis.es/~jonathan01/MD5/MD5_...iewer_Shots.zip

De todas formas, he aquí un avance...

(http://www.arrakis.es/~jonathan01/MD5/fatty_prev.jpg)
(http://www.arrakis.es/~jonathan01/MD5/machinegun_prev.jpg)


Saludos                                
Título: Visor MD5...
Publicado por: MChiz en 16 de Marzo de 2003, 10:50:08 AM
                                Joer tio... que pasote! :)
Felicidades! Ya me gustaria a mi saber hacer todas esas cosas ^_^
Adioos!!                                
Título: Visor MD5...
Publicado por: Mars Attacks en 16 de Marzo de 2003, 11:26:50 AM
                                rocks, que dirían por ahí XD                                
Título: Visor MD5...
Publicado por: NeLo en 16 de Marzo de 2003, 11:44:58 AM
                                Excelente.

Como todo lo que programas :D

Citar
Ya me gustaria a mi saber hacer todas esas cosas ^_^
Para hacer eso no tienes que dormir, como hace BeRSeRKeR xDD

Saludos.                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 16 de Marzo de 2003, 12:40:27 PM
                                Muchísimas gracias.

Ni que decir tiene que todos los créditos por los modelos y texturas van para id Software y que llegaron a mi de forma misteriosa :jaja:

Y nada, a ver si esta tarde termino el tema del specular y lo que también debería hacer es crear un parser para los scripts de materiales ya que si por ejemplo me encuentro con un modelo de varios meshes, siempre cargo la misma textura. Cada mesh tiene una referencia a un material (en doom3 lo mismo lo llaman material que shader) con las distintas características del mismo (por ejemplo la textura a usar)...muy parecido a los del quake3 vamos :ojo:

Pues nada más, si hago más avances ya lo iré poniendo por aquí...

Saludos                                
Título: Visor MD5...
Publicado por: Daventry en 16 de Marzo de 2003, 02:23:16 PM
                                :o  :o  :o  :o  :o  :o  :o  :o  :o  :o  :o  :o

Berserker, de mayor quiero ser como tú. Haz una autobiografía para que sigamos tus pasos  :D

Chaops!                                
Título: ...
Publicado por: Grugnorr en 16 de Marzo de 2003, 03:49:45 PM
                                El primer paso de un buen Berserker es beber sangre fresca todas las mañanas....  :jaja:

Se sale  :!:                                
Título: Visor MD5...
Publicado por: NeLo en 16 de Marzo de 2003, 04:33:51 PM
                                Para ser un BeRSeRKeR hay que sacrificarse mucho para programar. Leer mucho y programar más aún. Fuera el cine, las cenas, las discos, las novias xDDD

Saludos.                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 16 de Marzo de 2003, 04:39:53 PM
                                A veces añoro el ser una persona normal :-?...¡¡en qué me he convertido!! :llorando:

Bueno, hablando un poco del tema, decir que cuando el ángulo entre caras es pronunciado, la iluminación es un poco pésima (digamos que en esos casos la cosa parece per-vertex lighting :jaja:). Esto se nota sobre todo al añadir la componente specular. Por ello creo que tendré que utilizar un normalization cubemap por lo que en vez de hacer el render en una pasada, lo tendré que hacer en 2 (diffuse + specular) en el caso de la GF3...bueno, ¡ya veremos como queda!

Saludos                                
Título: Visor MD5...
Publicado por: MaSteR en 16 de Marzo de 2003, 04:54:46 PM
                                Pues si a formato nuevo se pone de moda yo queria implementarlo hay un source de un visor por ahi, pero fianl mente despues de implementar MD3 y mirar los formatos decidi q me quedaba con MD2 por la facilidad q tiene no me parecio tan importante para mi engine la disision y manejo por partes de MD3 pq lo veo sucio el tener 400 archivos pa un modelo CON LO SENCILLITO Q ES !! un .MD2 y la textura !! xD                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 16 de Marzo de 2003, 05:18:49 PM
                                Hombre como tú has dicho, el formato escogido dependerá de las necesidades de tu juego.

Lo de que son muchos archivos sueltos....el MD5, lo que es el modelo es 1 sólo archivo. Después tienes unos cuantos más (md5anim) que contienen las keys de animación para cada pose (correr, andar, etc) y bueno además tienes los archivos de material. Pero vamos a las alturas que estamos donde lo que se pretende es alcanzar el máximo realismo posible, es normal que proliferen los archivos ya que entran en juego muchos más parámetros de lo que lo hacían hace no mucho tiempo...

De todas formas, esto lo estoy haciendo para ir habituándome a las últimas tecnologías ya que el tema de las 3D lo tenía un poco abandonado. Así que esto será un buen ejercicio para adentrarme en todo el tema de vertex & pixel shaders...

De todas formas, las diferencias que pudieran haber entre MD5 y mi propio formato no serían demasiadas porque MD5 tiene todo lo necesario para hacer animación esquelética (incluído los pesos)...

Saludos                                
Título: Visor MD5...
Publicado por: ethernet en 17 de Marzo de 2003, 06:35:18 PM
rocks ® ¬¬

pixel shader sucks, ahora  qnos habiamos librado de tener q calcular esas cosas ... yo esperare a solo tener q pasarle las normales por pixel y as componentes xDDD
Título: Visor MD5...
Publicado por: BeRSeRKeR en 17 de Marzo de 2003, 06:45:55 PM
                                La verdad es que el cálculo de la iluminación a través de los pixel shaders < 2.0 no es exactamente por pixel ya que hay componentes que se pasan a través del vertex shader per-vertex. Pero esto ya se ha solucionado con los pixel shaders 2.0. En ellos se realizan todos los cálculos de la iluminación y cosas como los normalization cubemap no son necesarios...pero todo eso me pilla algo lejos aún ya que no tengo ninguno de esos monstruos que andan sueltos por ahí xDDD

De todas formas el resultado es bastante bueno y espectacular...¡al menos yo estoy quedando contento con el resultado! :D

Saludos                                
Título: Visor MD5...
Publicado por: MaSteR en 17 de Marzo de 2003, 08:09:24 PM
                                eeeeeeeeeeeeee si claro............. xD no pillo na cm no he tenido problemas con vertex shaders ni cosas asi pq nunca he hecho nada con eso... xD la verdad esq me entero de la mitad pq nuse q calculos tienes q hacer... los shaders q yo sepa en mi ignorancia son para hacer luces dinamicas? y crear sombras y todo el tema, es asi?y si es asi y es complicado no hay un equivalente?Yo suelo ser realmente masoca pero si va siendo hora de pillar el camino mas facil xDDDDDDD                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 17 de Marzo de 2003, 08:47:52 PM
                                Los vertex shaders son pequeños programas (aunque poco a poco se van a ir haciendo más grandes) a través de los cuales puedes modificar las propiedades de un vértice (posición , color, coordenada de textura...). Por lo tanto, puedes hacer cualquier tipo de efecto que afecte a los vértices (moverlo, calcular la iluminación per-vertex, deformación por bones, hacer extrusión de los vértices para crear shadow volumes, etc).

Por otra parte, los pixel shader (denominados fragment programs en la jerga de OpenGL) es lo mismo pero a nivel de pixel. A través de ellos puedes hacer per-pixel lighting, pasar la escena a blanco y negro, texturas procedurales (madera, metales, etc), glows, desenfoque de cámara y un montón de cosas más (cada vez se podrán hacer muchas más cosas).

Lo que sí puedo decir es que más pronto que tarde, todo se hará a través de vertex & pixel shaders ya que permiten un mayor control sobre la GPU y da más libertad creativa al programador.

¿Si es complicado?...pues hombre es como todo. Dedicarle tiempo y ganas. Si tienes un motor, seguramente lo tendrás que modificar en mayor o menor medida para darles cabida. Si utilizas OpenGL, ahora mismo te convendría utilizar Cg (ya que de otra forma tendrás que pelearte con las extensiones propietarias y además tendrás la ventaja de un lenguaje de shaders de alto nivel) y más adelante el GLSlang de OpenGL 2.0. Por el contrario, si utilizas Direct3D (por lo que se presupone que te da igual la portabilidad), lo mejor es utilizar el HLSL de MS que está más optimizado que Cg de nVidia (además creo que también te permite compilar shaders creados con Cg).

Saludos                                
Título: Visor MD5...
Publicado por: Findeton en 18 de Marzo de 2003, 06:09:15 PM
                                Seré yo quien tenga que preguntarlo... Y a todo esto, BeRSeRKeR, nos podrías decir si liberarás el código?  :?:                                
Título: Visor MD5...
Publicado por: MaSteR en 18 de Marzo de 2003, 06:19:57 PM
                                Ahm !! no lo sabia gracias por iluminarme !! xD mi engine usa OpenGL sip....... cuando acabe el curro gordo intentare implementarlo

Muchas gracias tio                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 18 de Marzo de 2003, 08:40:59 PM
                                Pues de momento no tengo pensado sacar el código. Entre otras cosas porque el visor no está completo. Aún le faltan bastantes cosas (una de las más importantes es la animación esquelética).

La verdad es que esto más que un visor (que la verdad, así por sí sólo no tiene demasiado sentido) es un banco de pruebas para ir desarrollando técnicas como iluminación realista, shadow volumes, projective textures, glows, etc. Digamos que me servirá para poner en práctica cosas que he leído y que sólo se consolidan en mi cabeza cuando me meta de lleno en el problema.

De todas formas, te pongo un enlace a un documento (que a lo mejor ya conoces) que puede servirte de ayuda a la hora de crear tu propio cargador de MD5.

http://www.trevorwilkin.com/gamesprogrammi.../MD5%20Spec.txt

Saludos                                
Título: Visor MD5...
Publicado por: Haddd en 19 de Marzo de 2003, 12:01:39 PM
                                ¡Impresionante!                                
Título: Visor MD5...
Publicado por: seryu en 19 de Marzo de 2003, 03:49:28 PM
                                impresionante? bah eso seria si lo renderizara en una game boy advance xD

ahora en serio, sta muy wapo, al final tendre qe ir a por una tarjeta son shaders  :ojo:                                
Título: Visor MD5...
Publicado por: Capiflash en 19 de Marzo de 2003, 03:53:35 PM
                                a todo esto , que tarjeta recomendariais ?? claro esta  que no sea exesivamente cara .Tengo una GForce 2 , pero ya se va qedando atras .... y bueno si no me sale todo un sueldo pq no                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 19 de Marzo de 2003, 04:12:22 PM
                                Capiflash, si no quieres gastarte muchos cuartos, una GeForce4 Ti podría estar bien...aunque no sé a qué precio estarán las Radeon 9500 (con soporte para vertex & pixel shaders 2.0). Pero vamos, éstas últimas bajarán de precio con la salida de la Radeon 9800 (que por cierto va a petar a la GeForceFX con casi total seguridad)....

Saludos                                
Título: Visor MD5...
Publicado por: Capiflash en 19 de Marzo de 2003, 05:28:05 PM
                                Pues entonces esperare unos mesesitos a ve si me pillo una buena .Me parece que esta vez le dare una oportunidad a las Ati , a ver que tal van.                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 19 de Marzo de 2003, 06:58:44 PM
                                Tecnológicamente excelentes, en temas de drivers no sabría decirte...supongo que los drivers de nVidia siguen siendo un ejemplo a seguir pero digo yo que ATI se habrá espabilado en ese tema...

Saludos                                
Título: Visor MD5...
Publicado por: Capiflash en 19 de Marzo de 2003, 08:36:40 PM
                                Espero que no hayan problemas con los drivers pa win al menos , ya pondre la GForce en el linux q ese es un campeon                                
Título: Visor MD5...
Publicado por: MaSteR en 19 de Marzo de 2003, 09:50:19 PM
                                jejejejejee YO QUIERO UNAAAAAAAAAAAAAAAAAAAAAa xD q tengo una TNT2 !!!                                
Título: Visor MD5...
Publicado por: Capiflash en 12 de Abril de 2003, 12:29:05 AM
                                Oye BeRSeRKeR como va el visor tio , que se veia mu bien , a ve si enseñas alguna capturilla mas de esos modelos q de manera misteriosa llegaron a ti  :D .Un saludo.                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 13 de Abril de 2003, 08:00:16 PM
                                Pues es que como ahora estoy haciendo las prácticas en una empresa y me tiro mis 8 horas diarias pos cuando llego a casa estoy hecho polvo y sin ganas de seguir programando (en el curro también programo :D)

De todas formas a ver si estos dias de fiesta puedo darle un empujón. Tenía pensado meter shadow volumes y si no pues empezaré con la animación esquelética (la cual me gustaría hacer en un vertex shader, así se calcularía en la GPU :jaja:).

Pero vamos, que cuando tenga algo nuevo lo mostraré...

Saludos.                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 17 de Abril de 2003, 09:38:38 PM
                                Hola a todos

Al final he decidido continuar el visor incorporando la animación esquelética.

De momento ya cargo los archivos de animación (md5anim) y reproduzco la animación pero de momento sólo el esqueleto.

Ahora lo que falta es transformar la malla en base a los bones y a los pesos y mejorar el control del tiempo, y suavizar los movimientos con SLERP para la rotación y LERP para la traslación.

Si queréis ver algo, bajaros ->este video (453 KB, DivX 5.0.3)<- en el que se muestra el esqueleto de HellKnight realizando la pose "walk1"...¡vamos caminando!  :jaja:

Como veréis es una chorrada pero como había gente que quería ver algo pues ale, ahí está ese algo. Espero que pronto se pueda ver la animación con la malla y no el esqueleto :ojo:

Saludos.

PD: bueno venga, también pongo a ->Fatty intentanto levantarse<-  :jaja:                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 18 de Abril de 2003, 02:59:51 PM
                                Hi there!

Bueno pues esta mañana he conseguido deformar la malla a través de los bones (aplicando pesos). Ahora ya se pueden ver los modelos moviéndose. Lo que falta, como dije en el post anterior, es hacer interpolación para suavizar los movimientos ya que ahora mismo pegan unos pequeños tirones (aunque no tanto como pueda parecer en los videos).

Como podréis ver en los videos, no hay iluminación. Esto es porque ahora tengo que recalcular la normal, binormal y tangente para cada vértice en cada frame lo cual es bastante chungo...no por dificultad sino porque es un "poco lento". Es por esto que quiero hacer todos los cálculos de la animación en un vertex shader con lo cual todo eso lo haría la GPU (la CPU quedaría libre para otros menesteres :D)

Bueno pos no me enrrollo más...aquí están los videos (¡no me apedreéis! :jaja:)

->Fatty pegando un tortazo (DivX 5.0.3, 100KB)<-
->Fatty caminando (DivX 5.0.3, 122KB)<-
->HellKnight haciendo el vago (DivX 5.0.3, 384KB)<-
->HellKnight caminando (DivX 5.0.3, 184KB)<-

¡ale, a disfrutarlos!  :ojo:

Saludos                                
Título: Visor MD5...
Publicado por: Mars Attacks en 18 de Abril de 2003, 03:31:37 PM
                                Molt.                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 18 de Abril de 2003, 05:45:15 PM
                                Hola de nuevo...

Ya he modificado el código para recalcular las normales (y demás) en cada frame. Y bueno, como era de esperar, el frame rate ha bajado una barbaridad, pero aunque es cierto que el código en estos momentos es un desastre, me parece demasiada tela un descenso de ~750fps a ~50fps :jaja:. Ya revisaré el código, aunque como dije, tengo previsto pasarlo todo a un vertex shader con el consiguiente ahorro de bloquear el vertex buffer cada frame (además de que los cálculos se realizan en la GPU)...

Para que tengáis una muestra, os dejo un video (esta vez algo más tocho) de HellKnight (haciendo el vago otra vez 8)) con per-pixel lighting. Como podréis ver, hay una luz que va cambiando de color y de posición...

-> Video (DivX 5.0.3, 1.575KB) <-

Saludos

PD: he quitado los videos de la animación del esqueleto ya que están un poco pasados de moda ya :ojo:                                
Título: Visor MD5...
Publicado por: Mars Attacks en 18 de Abril de 2003, 05:49:22 PM
                                te has dejado el .avi en la dirección ;)                                
Título: Visor MD5...
Publicado por: Mars Attacks en 18 de Abril de 2003, 05:52:08 PM
                                Visto. Díle que respire un poco, hombre  :jaja:
Nah, el efecto cojonudo, aunque pagando 700 fps por ello no lo veo yo muy así...                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 18 de Abril de 2003, 06:05:02 PM
                                Nada, eso lo solucionaré...algún día...¡¡pero lo solucionaré!! :jaja:

El caso es que si no recalculo las normales por frame, aunque le meta per-pixel lighting me sigue llendo a esos fps (~750) pero se ve que hay algo en el código (el que recalcula las normales, binormales y tangentes) que me he pasado de vueltas o algo así....ya veremos.

Saludos                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 18 de Abril de 2003, 09:35:32 PM
                                He estado probando varios modelos para ver si todo iba bien y mira por donde me he encontrado con Imp, modelo originario del Doom....hmmm ¡en realidad ya no se parece en naaaaaaada!  :jaja:

Enga, aquí dejo un ->video (DivX 5.0.3, 434KB)<-

Saludos                                
Título: Visor MD5...
Publicado por: DvD en 12 de Mayo de 2003, 01:19:53 AM
                                HOLA BERSERKER TE AKUERDAS DEL MENDA???
JEJEJE BUENO QUE ME PARECE EXCELENTE LO QUE TE HAS CURRADO ES UNA PENA QUE NUESTRO PROYECTO NO LLEGASE A BUEN PUERTO PERO QUE SE LE VA A HACER QUIZA ALGUN DIA HAGAMOS ALGO JEJEJE ALE SIGE ASIN                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 12 de Mayo de 2003, 04:25:07 PM
                                Hey DvD que tal. Pues si, fue una pena tener que dejarlo. Sobre todo porque es difícil encontrar a grafistas tan buenos como vosotros :ojo:

Fíjate que incluso esto me está costando terminarlo por falta de tiempo...pero bueno, si algún día nos desliamos pues, ¡¡a ver si volvemos  a las andadas!!

Enga, saludos!                                
Título: Visor MD5...
Publicado por: DvD en 13 de Mayo de 2003, 12:00:43 AM
                                EY BESERKER TE IMPORTARIA DARME TU MESSENGER PARA ESTAR ASI EN CONTACTO ??                                
Título: Visor MD5...
Publicado por: BeRSeRKeR en 13 de Mayo de 2003, 09:22:23 PM
                                hey, ya te he añadido

Saludos                                
Título: Visor MD5...
Publicado por: ethernet en 14 de Mayo de 2003, 07:52:16 AM
yo tb quiero ! quiero foto firmada! :**