Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Avances En El Motor/visor...

Iniciado por BeRSeRKeR, 21 de Septiembre de 2005, 02:35:56 PM

« anterior - próximo »

BeRSeRKeR

 Bueno pues aquí estamos otra vez para informar de los avances del motor y del visor.

Lo más importante es que se han implementado tres tipos de niebla y los decals.

Niebla

  • Linear
  • Exponential
  • Exponential Square
  • Layered
En esta imagen podéis ver un ejemplo de niebla de tipo "exponential square" (click para ver tamaño original).



Y en esta otra un ejemplo de niebla de tipo "layered" (click para ver tamaño original).



Decals

Los decals son planos que se superponen a las superficies para dar detalle extra como pueda ser sangre, barro, musgo, carteles, etc. En otras palabras, y tal como se traduce la palabra decal, son como calcomanías :P. Por ejemplo, en la siguiente imagen podéis ver los decals que se han utilizado para añadir manchas de sangre al suelo (click para ver tamaño original).



Ahora la versión wireframe para que podáis ver los quads que forman los decals (click para ver tamaño original).



Los decals no tienen por qué ser un quad. Pueden ser un patch de Bèzier moldeado para distorsionar la textura aplicada al decal.

Lo siguiente

Lo siguiente que se hará será algo similar a los decals pero no exactamente lo mismo. Implementaremos los detail maps que como su nombre indica se utilizan para añadir detalle a las texturas y de paso disimular la repetición de las mismas. El funcionamiento será como en el caso del mapa de tipo Blend en MAX. Una textura base, el detail map y una máscara que indica qué partes de la textura de detalle se verán.

Otra cosa que habría que implementar es otro tipo de niebla, la volumétrica. La niebla de tipo layered queda muy bien y a simple vista pudiera parecer que se trata de un volumen de niebla, pero lo cierto es que afecta a toda la escena. Así que habrá que implementar volúmenes de niebla. En principio se me ocurrió una técnica con la que se podría utilizar cualquier volumen convexo pero al final no funcionó como se esperaba, así que habrá que buscar otros métodos.

¡Eso es todo por ahora!.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Mars Attacks

 Como siempre, me quito el sombrero ante vosotros. Chapeau.


[Vil]

 Muy chulo, sin salir de la linea. Tengo una dudilla, lo de los "decals" no es un poligono puesto encima pa dar detalle? ya sea un quad o una malla compleja... pero que supone "implementarlo" y no que el grafista los ponga a mano desde el modelador. ¿es para colocar la sangre en tiempo real? (como hace doom3 y muchos otros antes)

Bueno... seguid adelante, q esto va genial

BeRSeRKeR

 
Cita de: "[Vil"]Tengo una dudilla, lo de los "decals" no es un poligono puesto encima pa dar detalle? ya sea un quad o una malla compleja... pero que supone "implementarlo" y no que el grafista los ponga a mano desde el modelador. ¿es para colocar la sangre en tiempo real? (como hace doom3 y muchos otros antes)
En realidad el grafista simplemente tiene que poner el plano que forma el decal y la textura y marcar el objeto como "decal". Después ya el motor hace lo que tenga que hacer con ellos. Pero principalmente se encarga de activar el depth_bias (para evitar el z-fighting) y el alpha blending. También se asigna una prioridad de render superior al resto para que al ordenar por dicha prioridad, se rendericen después de los objetos opacos.

Lo de marcar el objeto como "decal" se hace a través de una de las múltiples herramientas que se han desarrollado para MAX (siempre con MAXScript :P). Aunque bien es cierto que lo ideal es que en lugar de crear los materiales a partir de los de MAX, es crear un script de material que permite especificar muchas más cosas que con los materiales de MAX, que no tienen todas las opciones que soporta el motor. Para eso se ha desarrollado un nuevo tipo de material (nuevamente con MAXScript) a través del cual puedes especificar el script a utilizar. Evidentemente, tal como están las cosas ahora mismo, es más cómodo utilizar los materiales de MAX a pelo ya que no te obligan a escribir el script, pero en cuanto el editor de materiales esté desarrollado, eso no será ningún problema, con la ventaja de poder disponer de la potencia del sistema de scripts.

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

zupervaca

 ¿pero los decal no eran para producir esos efectos en tiempo de ejecucion? yo creo que lo mejor es asociar a la textura un shader que haga ese efecto y asi evitar cambios en el codigo fuente del motor, pero bueno yo nunca los he implementado

BeRSeRKeR

 Efectivamente también se utilizan para proyectar este tipo de cosas sobre la geometría de forma dinámica. La gran diferencia estriba en que los decals dinámicos deben ser recortados "programáticamente" mientras que éstos los recorta el grafista. Pero vamos que a la hora del render, excepto el tema de proyectar y recortar, lo demás es lo mismo. De hecho Doom3 utiliza esta misma técnica que nosotros utilizamos para poner los chorretones de sangre y los carteles a través del editor de niveles. Ponen un quad o un patch de Bèzier sobre la superficie y le ponen un material marcado como "decal". Personalmente me resulta más sencilla (para el grafista) esta técnica que la de detail mapping ya que no hay que andar utilizando dos o incluso tres canales de coordenadas de textura. Con ésta sólo necesitas un canal. Pero vamos, que también implementaremos el detail mapping.

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

[Vil]

 gracias por la respuesta, todo comprendido  (ole)  

zupervaca

 cuando tengais algo implementado de beziers por hard podiais poner un ejemplo ya que nunca he encontrado ningun tutorial ni nada para directx

saludos

BeRSeRKeR

Cita de: "zupervaca"cuando tengais algo implementado de beziers por hard podiais poner un ejemplo ya que nunca he encontrado ningun tutorial ni nada para directx

saludos
He mencionado los patches pero en realidad el motor no soporta patches. Lo que quería decir era que en MAX se puede utilizar un patch para eso. Fíjate que incluso en Doom3 han descartado las superficies curvas. En el editor se siguen utilizando para hacer curvas pero al compilar el mapa, directamente se tesela en una cierta medida y listo. No es como en quake3 que uno mismo era el que tenía que teselarlas.

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

 Tiene buena pinta.
Citar
Los decals no tienen por qué ser un quad. Pueden ser un patch de Bèzier moldeado para distorsionar la textura aplicada al decal.
...si eso sirviera para que la sangre tenga los reflejos de las luces propios de los líquidos y se extienda por el suelo (en lugar de una calcomanía) sería la ostia.

La niebla quizás deberíais haberla probado en un pasillo largo o un lugar abierto para poder apreciarla mejor pero está bien. Por cierto... ¿habéis probado alguna vez niebla negra para escenas nocturnas?

Una sugerencia: Me gusta un tipo de niebla (que recuerdo haber visto en algunos juegos) que se va desplazando por el viento e incluso se puede apreciar las partículas y que molaría ver en el motor, aunque quizás hacer eso dependa mas del programador que del motor en sí, no se.

Ray

 ...siempre se me olvida.  :rolleyes:  

BeRSeRKeR

 
Cita de: "Ray"
Citar
Los decals no tienen por qué ser un quad. Pueden ser un patch de Bèzier moldeado para distorsionar la textura aplicada al decal.
...si eso sirviera para que la sangre tenga los reflejos de las luces propios de los líquidos y se extienda por el suelo (en lugar de una calcomanía) sería la ostia.
Bueno, lo de que se extienda la sangre se puede hacer un apaño simplemente expandiendo y/o deformando el patch pero de ahí a recrear una simulación físicamente correcta ya... :lol:
Cita de: "Ray"La niebla quizás deberíais haberla probado en un pasillo largo o un lugar abierto para poder apreciarla mejor pero está bien. Por cierto... ¿habéis probado alguna vez niebla negra para escenas nocturnas?
La verdad es que no hemos probado mucho la niebla porque tampoco tenemos muchas escenas donde elegir. (ole)
Cita de: "Ray"Una sugerencia: Me gusta un tipo de niebla (que recuerdo haber visto en algunos juegos) que se va desplazando por el viento e incluso se puede apreciar las partículas y que molaría ver en el motor, aunque quizás hacer eso dependa mas del programador que del motor en sí, no se.
Para simular las partículas se podría echar mano de un noise animado. Eso podría dar el pego. Pero no se si te refieres a eso...

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

 
Citar
Bueno, lo de que se extienda la sangre se puede hacer un apaño simplemente expandiendo y/o deformando el patch pero de ahí a recrear una simulación físicamente correcta ya...

Si, la verdad es que sería complicado simular sangre realista.

Otro problema que surge es cuando disparás a los bichos y salpicas sangre a las paredes o al suelo durante un rato, al final hay que hacerlas desaparecer lentamente o algo porque si se acumulan muchas puede bajar el rendimiento, imagino que tendréis que tener en cuenta eso.

Citar
La verdad es que no hemos probado mucho la niebla porque tampoco tenemos muchas escenas donde elegir

Ok, el eterno problema de los programadores.  Y lo de la niebla negra ya lo contaré cuando llegue el momento.

Citar
Para simular las partículas se podría echar mano de un noise animado. Eso podría dar el pego. Pero no se si te refieres a eso...

Ojala me acordase del juego,  recuerdo que era bastante realista, no se, pero quizas eran solo unos puñeteros sprites de un tono blanco/gris semitransparentes que iban pululando por ahí (deberían ser bastantes).

No se si eran "noises animados" porque de terminología ando fatal. :ph34r:


Ray

 ....y de memoria peor.  :rolleyes:  






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.