Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Visor MD5...

Iniciado por BeRSeRKeR, 16 de Marzo de 2003, 05:13:52 AM

« anterior - próximo »

BeRSeRKeR

                                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...





Saludos                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

MChiz

                                Joer tio... que pasote! :)
Felicidades! Ya me gustaria a mi saber hacer todas esas cosas ^_^
Adioos!!                                

Mars Attacks

                                rocks, que dirían por ahí XD                                

NeLo

                                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.                                
Drowning deep in my sea of loathing

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Daventry

                                :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!                                
img src='http://www.danasoft.com/sig/vipersig.jpg' border='0' alt='user posted image'>

Grugnorr

                                El primer paso de un buen Berserker es beber sangre fresca todas las mañanas....  :jaja:

Se sale  :!:                                
hat the hells!

NeLo

                                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.                                
Drowning deep in my sea of loathing

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

MaSteR

                                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                                

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

ethernet

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

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

MaSteR

                                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                                

BeRSeRKeR

                                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                                
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






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.