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.zipDe 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
Joer tio... que pasote! :)
Felicidades! Ya me gustaria a mi saber hacer todas esas cosas ^_^
Adioos!!
rocks, que dirían por ahí XD
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.
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
: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!
El primer paso de un buen Berserker es beber sangre fresca todas las mañanas.... :jaja:
Se sale :!:
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.
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
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
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
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
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
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
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
Seré yo quien tenga que preguntarlo... Y a todo esto, BeRSeRKeR, nos podrías decir si liberarás el código? :?:
Ahm !! no lo sabia gracias por iluminarme !! xD mi engine usa OpenGL sip....... cuando acabe el curro gordo intentare implementarlo
Muchas gracias tio
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.txtSaludos
¡Impresionante!
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:
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
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
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.
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
Espero que no hayan problemas con los drivers pa win al menos , ya pondre la GForce en el linux q ese es un campeon
jejejejejee YO QUIERO UNAAAAAAAAAAAAAAAAAAAAAa xD q tengo una TNT2 !!!
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.
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.
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:
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
Molt.
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:
te has dejado el .avi en la dirección ;)
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í...
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
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
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
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!
EY BESERKER TE IMPORTARIA DARME TU MESSENGER PARA ESTAR ASI EN CONTACTO ??
hey, ya te he añadido
Saludos
yo tb quiero ! quiero foto firmada! :**