Estos días he estado metiéndole mano al asunto del terreno, pero he sacado un ratillo para hacer un efecto de "rayos de luz" y colgar un video.
Creo que va quedando bastante majo :)
ViBos Species Editor, Fifth Draft from Jon Valdés on Vimeo.
He tenido que subirlo a Vimeo porque la calidad del video en youtube daba pena. En fin
Por cierto, si el video os va 4 veces más rápido de lo que debería, dadle al pause, volved al principio, y volved a darle al play, y asi parece que se soluciona (en Mac me da este problema, y en windows no :-S Maldito flash...)
Siempre que te crees que has hecho algo bueno, va alguien y te descubre que era una mierda en comparación con lo que otros han hecho. En este caso, un compañero de clase me ha dicho que echara un vistazo al trabajo de un tipo llamado Kevin Boulanger. Despues de mirarlo, se me ha caido el alma a los pies.
Así que me he puesto a mejorar un poco la hierba, y aunque no llegue al nivel de lo que hace este tipo (y no pretendo que llegue), sí que queda bastante mejor. Sobre todo por la idea de que la hierba debe oscurecerse por la parte de abajo, por estar cubierta por el resto de la hierba.
Screenshot al canto.
Edit: Y aplicando un poco de aleatoriedad al color de la hierba en función de la posición... voilà, hierba maja y realista :)
(bueno, vale, igual me he pasado un poco con la aleatoriedad, pero la idea es buena, sólo hace falta ajustarla un poco :P
En sólo un par de horas ayer, y unos minutos buscando texturas por internet esta mañana, he conseguido tener un prototipo de hierba bastante decente. ¿Cómo? Aprendiendo de los profesionales ;)
En este caso, aprendiendo de los libros GPU Gems y GPU Gems 2. Concretamente estos dos capítulos:
http://http.developer.nvidia.com/GPUGems/gpugems_ch07.html
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter01.html
El primero es de hace unos cuantos años y utiliza un método bastante burdo, pero el segundo utiliza quads orientados a la cámara (que necesitan una tercera parte de los polígonos del otro método y además quedan mejor), y es justo el método que estoy usando yo.
La diferencia más importante es que mi método para transformar la posición de los vértices de la hierba es un más sencillo de usar que el que aparece ahi, pero también es más limitado (no permite inclinar la cámara hacia los lados).
Ahora queda convertir ese prototipo en un sistema de hierba potente y configurable (y que no se coma el rendimiento con patatas fritas...), y con opciones de las que aparecen en el capítulo de GPU Gems 2, como modulación del tono, animación de la hierba, etc.
En cuanto a gráficos, el siguiente punto es añadir soft shadows a toda la escena, para así poder tener árboles que provoquen sombras en la hierba y a sí mismos. Bueno, y añadir diferentes texturas de hierba, para que no se repita tanto, como hace ahora. El problema es que todavía me quedan cosas más importantes por hacer, como el terreno 3D. Veremos cuándo me puedo poner a ello.
Ya os contaré ;)
Aquí va un video de lo que he estado haciendo estos 2 últimos días: High Dynamic Range rendering. Para los que no sepan de qué va este asunto, el tema es que las imágenes por ordenador de toda la vida (y las que puede representar cualquier monitor normal), tienen un rango de valores de, pongamos, [0-1], donde 0 es el negro más negro y 1 es el blanco más blanco. El problema es que al pasar al mundo real... ¿a qué le asignamos el blanco? ¿A una bombilla de 50W? ¿A una de 200W? ¿Al sol? ¿A una supernova? Y con el negro nos pasa lo mismo...
¿Solución? Hacer imágenes con valores en coma flotante que puedan pasarse de rango y no pase nada. Luego le aplicamos un gamma, contraste, saturación, etc... y nos quedamos con el rango que nosotros queramos para pasarle al monitor. Solución maja hasta que los monitores con HDR se hagan baratos :)
Y también en este video podeis ver el efecto bloom que he metido. Este es el que tienen ahora todos los juegos, que si miras al Sol y hay algo en medio, la luz del Sol se come un poco al objeto. Todavía tiene algunos fallos con objetos completamente verticales y horizontales, pero aún así el efecto no queda mal.
Ya iré contando más avances ;)
Nota: El vídeo es muy largo y no es que muestre mucha cosa nueva más allá de la mitad, pero no tenía tiempo de recortarlo, asi que ahi va.