26 de octubre de 2008

Y después de tanto tiempo...

nuevo ejemplo subido! En realidad lo subí anteayer, pero no he tenido tiempo de comentarlo hasta ahora. El escogido ha sido el de toon shading, así que ya se puede trastear con él en el lugar habitual.

23 de octubre de 2008

Ahora sí

Saludad a mi nuevo amigo:


He podido hacerme con la expansión del DooM 3 y así como el Lost Soul no chutaba con el cargador de Rubén, con el Forgotten no ha habido problema, así que él será el elegido para aparecer en el ejemplo de shadow mapping omnidireccional. No sé si liarme a meter algún detalle más como alguna partícula de fuego detrás de él para que realmente parezca el foco de luz ya que no quiero complicar el tema más de lo necesario, pero ya lo decidiré.

El ejemplo de toon shading no lo he tocado demasiado, pero ayer me dediqué a limpiar un poco el código y meter alguna chorrada como diferentes modos de visualización (sin siluetas animadas, sin siluetas, con iluminacion "normal", etc). Próximamente más!

22 de octubre de 2008

Toon orgy!

Esto es un no parar. Hoy se me ha ocurrido un método para la animación de las siluetas y bueno... un video vale más que n-cientas palabras! (Es recomendable ir a YouTube y verlo en "Alta Calidad")



Lo malo es que para conseguirlo he usado VTF (Vertex Texture Fetching), así que la demo sólo funcionará en Xbox360 y PCs con gráficas nVidia a partir de la GeForce 6... Básicamente lo que hago es trasladar los vértices a través de su normal de forma "aleatoria". ¿Cómo conseguir esa aleatoriedad? Cuando se carga la aplicación, genero una textura de floats y la relleno de valores aleatorios, y luego hago un lookup de estas valores desde el vertex shader con unas coordenadas de textura que dependen de la posición del vértice y un cierto offset aleatorio que genero cada cierto tiempo (como la animación de los trazos a lápiz). Creo que ya ha llegado el momento de limpiar cosas y prepararse para subirlo... ^^

21 de octubre de 2008

Olescul efex!

Uau, esto parecen los viejos tiempos... xD Hoy he probado un par de cosas en el ejemplo de toon shading... bueno, en realidad tres cosas pero una la he dejado para más adelante.

Por un lado he añadido la animación de los trazos a lápiz que se ve en las partes sombreadas. Esto era realmente sencillo, simplemente es modificar las coordenadas de textura de los trazos cada cierto tiempo (normalmente mayor que el que se tarda en pintar un frame) según lo que dicte un número aleatorio. La verdad es que creo que queda medianamente bien, aunque según la textura usada y la cantidad de pantalla que ocupen estas zonas sombreadas, se puede notar un poco demasiado el 'tileado'... Pero bueno, yo no estoy como para ponerme a hacer texturas perfectas.

Por otro lado he cambiado la forma de dibujar la silueta. Lo cierto es que he añadido una silueta más. :P Aparte del efecto de los trazos que vi en el Valkyria Chronicles y que me inspiró para hacer este ejemplo, quería intentar otra cosa con las siluetas para que el conjunto quedara un poco más espectacular. Y eso que quería probar es lo que se ve en Okami. En este juego (y en muchos otros antiguos como Jet Set Radio) no se usa una detección de siluetas en el pixel shader como se hace hoy en día (y como estaba hecho en la foto de ayer), sino que se usa un truco bastante curioso. Se pinta la geometría normalmente con el sombreado cel "de toda la vida", y luego se giran las normales, se escala un poco el modelo y se pinta de negro. Es decir, se cambia el tipo de culling, se pinta de negro y un poco más grande y voilà, ya se ven unas bonitas siluetas. No son tan precisas como con el método más moderno, pero antiguamente era lo más rápido y además permite hacer ciertas cosas...

Esto me lleva a lo tercero que he querido probar. En los videos de Youtube no se ve demasiado bien, pero creo recordar que en Okami aparte de un cel-shading muy sencillito, se movía la geometría de las siluetas para simular el efecto de que se estaba pintando a mano toda la escena a casi cada frame. Eso fue un detalle que sencillamente me enamoró en su día. He hecho un par de pruebas para representar el mismo efecto y no me ha gustado demasiado el resultado, así que lo he dejado para más adelante. Básicamente, el problema es mover cada vértice de manera suficientemente sutil, aleatoria e independiente de sus vecinos como para que el efecto no resulte antinatural. No se, se me ocurren un par de maneras pero ya es tarde y hay que descansar.... lo justo.

Ah! Y de regalo otro video! En este se ven las siluetas "nuevas" (aunque mantengo las antiguas para que haya más detalle) y la animación de los trazos.

Culo inquieto

Si hay alguien que sigue aunque sea un poco este blog, ya se habrá dado cuenta de que mi capacidad de mantener mi atención sobre algo durante períodos medianamente prolongados de tiempo es... limitada, por decirlo de alguna manera. Y para demostrarlo, aquí está la entrada de hoy.

Todavía no he acabo de dejar lista las sombras omnidireccionales, que ya me han entrado ganas de probar otra cosa. La idea la he sacado de un juego de PS3 llamado Valkyria Chronicles. El juego en sí no me llama un carajo, pero usa un estilo de cell-shading que me gustó mucho la primera vez que lo vi. Tiene la peculiaridad de que las zonas sombreadas tienen un efecto de esbozo a lápiz que me resultó interesante, y no sé porqué hoy me ha dado por probarlo. Todavía no está acabado ni de lejos (sólo le he podido dedicar un rato), pero he avanzado lo suficiente como para tener ganas de seguir cuanto antes! ^^

17 de octubre de 2008

Vuelven los videos!

Primero, lo bonito (o lo que yo espero que sea bonito :P):



Y entonces, qué es lo feo? Bueno, realmente el ejemplo en teoría ya está, pero en vez de una esfera blanca cutre para representar el punto de luz, quería poner algún modelo interesante, en concreto quería usar el siguiente:


Por si no se conoce, es un Lost Soul de DooM 3. Podría añadirlo fácilmente con el importer de Rubén, y como tiene una llama de fuego por detrás queda bastante bien en la escena. Pero no se porqué sólo carga las mandíbulas y no el modelo entero, así que voy a tener que buscar una alternativa (quizás un Forgotten del Resurrection of Evil, pero ahora no lo tengo a mano).

En fin, que ya sólo queda afinarlo un poco para poderlo subir. Próximamente más!

15 de octubre de 2008

Sacando de donde no hay

Pese al curro, el master y los asuntos personales, he conseguido encontrar algo de tiempo para esto:

Quizás no se ve demasiado bien en la tira de fotos, pero se trata de shadow mapping omnidireccional. Ahora mismo lo tengo en fase de "dejar bonito", pero lo básico ya está implementado y funcionando "perfectamente" (tiene algunos fallos propios del tipo de técnica usada, ya entraré en detalles en otro momento).

Ahora voy a tener algo de trabajo extra, pero espero tenerlo listo para el fin de semana. ^^