lunes, 27 de febrero de 2006

Vegetación Acelerada.

Uno de los mejores desafíos que puede tener un modelador 3D, es el proveer de vegetación para las escenas de cualquier juego.

Un edificio es posible falsearlo por completo usando mapas de texturas, siempre y cuando el programador tenga las herramientas para poder implementarlas de forma adecuada... Por ejemplo, teniendo 1 cara (1 plano) y solo con un mapa normal, podemos generar lo siguiente:





Uds. se preguntaran ¿¿y eso es todo??... ja!... ahora movamos la luz un poco (notese... movemos la luz!!, no cambiamos ni el plano ni la textura) y obtendremos....



Eso solo con un simple planito... y un mapa de normales...

¿¿Que es un mapa de normales??, pues bien es un mapa que define posiciones. Tomenlo como un mapa que hace sumas y restas entre +1 y -1.... es decir, si un punto en el plano esta en la posicion 1,0,0 (X -> ancho, Y-> alto, Z-> Profundidad), y el mapa define que a Z se le sume 1, sera como iluminar un punto 1,0,1... ¿¿Confundidos??... no es tan complicado cuando se tiene en cuenta que los mapas de normales solo afectan el eje Z (profundidad) del objeto.

¿Que tiene que ver esto con la vegentación?... Bueno.. haciendo un poco de ingeniería reversa a algunos juegos que tengo, y viendo la forma de las texturas, se puede inferir que:

#1: Para los efectos de vegetación, nunca se usan mas de 8 caras... por arbol.

#2: Generalmente se usan 2 caras... en forma de cruz, el resto de los efectos es textura/normales.

#3: En el caso de los juegos de vision 3/4, se usan formas de sombrerito, y efectos de Alpha Channel. (Transparencias.)

¿¿Han visto juegos como Half Life 2, o Need for Speed Underground 2, (o most wanted)??, las sombras se ven en serio reales ¿¿cierto??, pues la verdad es que las sombras estan dibujadas en la textura... no actuan luces en ellas, pues de hecho LAS ACELERADORAS GRAFICAS NO PUEDEN HACER RAYTRACING!!!. Si alguna vez han jugado Neverwinter Nights, los efectos de sombras se consiguen haciendo sumas y restas rapidas, pero estas sumas son hechas por el procesador, no por el acelerador... por eso el juego se vuelve sensiblemente lento cuando se activan, no importando mucho la tarjeta de video que se tenga.. Sin embargo si se tienen un buen procesador, no es mayor problema.

Aunque he estado trabajando este ultimo par de dias en generar alguna vegetación ad-hoc al tema de tythalos (Hola nik!), por algun motivo mi tarjeta de video, se niega a aceptar los valores que estoy dando para las normales... bueeee... ya averigue el porque...

ATI y NVIDIA usan cada una un modo diferente de interpretar los mapas normales, y aparte usan un formato distinto para los mapas de normales. (¿Patentes de Software?). Basicamente ATI espera que el canal verde apunte a la normal positiva de la figura. NVIDIA en cambio, espera que apunte a la normal negativa de la figura... Y cada programa usa solo UNO de los 2 metodos para previsualizar las imagenes de como saldrán en la aceleradora... Ej: 3ds max studio, usa el metodo NVIDIA. Diseña algo en eso usando una tarjeta ATI y el programador te preguntara que ·%&$&/$%&·/& estai fumando mientras estas trabajando. como yo tengo una ATI, y el software en el que estaba haciendo pruebas trabajaba según la forma NVIDIA, ya se pueden imaginar mi carita cuando veía resultados que no coincidían para nada con lo que se supone estaba haciendo... pfffff.

Y después dicen que DirectX y Open GL son "Estandares"... aunque tal vez sea que los "estandares" son tomados como "Resultados pueden variar"...

Dejando de lado el punto anterior, aun hay que hacer algunas pruebas para ver como va a quedar el resultado final... Tal vez solo cuando nuestro coder in jefe, se de un poco de tiempo para la arquitectura de renderizado, podremos ver que "·$%·%·"$% va a salir de todo esto... por lo pronto, mejor me dedico a hacer poligonos... las texturas habra que verlas después..

J.

13 comentarios:

Anónimo dijo...

jajaja, yo uso max :P, algo entendi de lo que dijiste, pero los modelos ke he hecho los renderizo con amx asi ke no me he enfrentado a ese tipo de problemas. :P

Saludos

Anónimo dijo...

me equivoque, es MAX no amx

Saludos

J. dijo...

Es la ventaja del renderizado a imagen o animacion (jpg, bmp, avi) Uno no se preocupa de ese tipo de detalles... cuando el renderizado debe ir a DirectX la cosa cambia....

J.

Anónimo dijo...

hmmm.. interesante... 3ds max 8... lo tengo instalado pero ando con poco ram asiq por eso ahora no lo he usado >_<
Eso de las iluminaciones para las sombras no lo sabia... siempre hay algo nuevo que aprender^^

J. ¿Viste el video del directX10 que sale en unos 4-5 meses o.o?
Me refiero a:
http://gametrailers.com/gamepage.php?id=2363

...y dicen que las aplicaciones Directx10 no correran en Windows XP
DirectX 10 incluirá, además, soporte para Shader Model 4.0 (eso no lo entiendo >_<), entre otras características que se anunciarán en su momento.


(por si las dudas.. he leido todo.. pero no me doy el tiempo para comentar ^^U)


Salu2!
BPE || Groovy

Anónimo dijo...

no cacho de dx 10, lo que si he visto es que microsoft esta tratando de meter a la fuerza windows vista, creo que no ha tenido tan buena aceptacion la idea de cambiarse de xp a vista para mucha gente, me incluyo, y estan tratando de presionarlo de varias formas, el halo 2 creo que solo va a salir apra windows vista, y ahora que dices eso de la dx 10, igual no creo que haya ninguna razon tecnica que fuerce que solo s epueda correr en vista aplicaciones dx 10.

max 8 >_< yo el ultimo que tengo es el 6, y el ultimo que use el 5, no seran muchas versiones...

Saludos

Anónimo dijo...

No conosco mucho del tema, pero miren.

*Comentario ninjistico*

Anónimo dijo...

esas imagenes que parecieron reales casi me matan xD

realmente impresionante... y yo que apenas puedo hace una figura con piernas y brazos (solo he hecho una esfera con cara y patas xD... animada.. casi un kirby.. pero no obeso xD)

Anónimo dijo...

casi un kirby.. pero no obeso
Groovy.

No me digai que estai haciendo un Barney virtual >_< .

J. dijo...

Barney??? NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! XDDDDD

J.

Leonard "Nik" Petit-Breuilh dijo...
Este blog ha sido eliminado por un administrador de blog.
Leonard "Nik" Petit-Breuilh dijo...

No es raro eso de que DirectX 10 no corra en Windows XP. El SDK de DirectX, de Febrero 2006 (El que estoy usando yo en este momento) viene con una Preview de DirectX 10 API, la cual no corre en Windows XP, Solo en Windows Vista CTP Preview.(no se para que la incluyen, si supuestamente Vista CTP solo se la pasan a los subscriptores de MSDN, lease a los que pagan los us$1000+ al año para vender su alma a Microsoft).
¿Por que?, por que D3D 10 (DirectX 10 no existe como tal aún) funciona bajo el nuevo modelo de drivers de Windows Vista (que separa el Kernel de los drivers) por lo que la API antigua no funca. Ahora, lo que no es cierto es que D3D10 no tiene soporte para versiones anteriores de DirectX, ua que es oficial que D3D 10 soporta codigo de hasta DX6. De echo ni AERO ni AVALON están echos en Direct3d 10, si no en Direct3D 9EX (la version de DirectX9 para Windoze Vista Driver Model, que viene incluido con Vista). Para sanidad mental (y financiera...), los programadores seguiran ofreciendo veriones DirectX9 de los juegos hasta que las tarjetas Direct3D 10 sean mas comunes. Osea de aqui a 3 años mas.
(Por eso hay que desarrollar codigo pensando en la abstraccion del renderer, osea pasarle todo a una clase renderer que exponga ciertas funciones pero adentro tenga la implementacion, cosa de poder cambiarla sin tener que cambiar todo el programa). En resumen ES UN CACHO! (Claro está a menos que tu nombre sea John Karmack)

J. dijo...

Buueee.. de buena fuente tenia entendido que DX-10 no soportara nativamente via hardware las versiones anteriores de DX (Y de Hecho, NVIDIA esta fabricando tarjetas Hibridas por esa limitación, para sustentar codigo DX-7-9 bajo windows Vista con drivers propios.) .Por eso llevaria DX9-ex-emulacion software. De hecho la prueba que hice para HL2, en la maquina de pruebas donde probe (VLR) comunity version febrero, usando drivers para Vista, la cosa cayo y bastante: 20 FPS (mi maquina actual lo corre a 70 FPS, R9800 Pro, y aqui estamos hablando de una X800!!!).. Aunque tal vez considerando que DX10 como tal aun no existe, tal vez la cosa vaya por otro lado.

Wn.. va a quedar la k..a!!

J.

Anónimo dijo...

nno le deseo mal a a nadie pero....
ojala que Vista sea el fracaso mas grande de microsoft, y alguien les ponga demandas de monopolio

Saludos