This project is read-only.

Render To Texture

Introducción

Hola a todos, en el siguiente tutorial/artículo intentaré enseñaros como hacer la técnica conocida como “Render to Texture” con la ayuda del 3D Studio.
Pero antes de nada veamos qué es esta técnica y cuando puede venir bien utilizarla.
La idea básica del render to texture consiste en utilizar como textura de un modelo una imagen renderizada previamente de ese modelo, si lo leemos así parece algo inútil… ¿para qué vamos a querer poner como textura de un objeto la misma textura que ya tiene? La razón es que en esa textura no sólo vamos a tener la misma textura anterior, si no que podremos aplicar efectos de iluminación avanzados, reflexiones, sombras etc. Ahora es cuando se le empieza a ver la utilidad de esta técnica, ya que podemos modelar nuestra escena en 3D Studio u otro programa similar, con varias luces, sombras, reflexiones… para posteriormente generar un render to texture y tener toda la información de la escena en una textura sin necesidad de tener que aplicar shaders en tiempo real, que por lo general, bajarán el rendimiento de la aplicación, es por eso que esta técnica suele usarse en su mayoría para aplicaciones en tiempo real, como los videojuegos.

Parece obvio que si esto es así todo el mundo usaría el render to texture para sus aplicaciones gráficas en tiempo real, pero quizás algunos de vosotros os preguntéis, vale sí, todo esto está muy bien, ¿pero qué ocurre si tenemos iluminación dinámica? ¿y si tenemos objetos moviéndose por el escenario, se verán afectados por la iluminación? Lamentablemente esta técnica no sirve para estos casos, al tener luces que cambien de posición u otro tipo de objetos móviles no se verán afectados ya que la escena tiene toda la iluminación precalculada en una textura y ésta no se actualizará, es por eso que esta técnica sólo es útil para modelar escenarios estáticos, que sabemos que no cambiarán durante la ejecución del programa.


Comenzando

Pues bueno, una vez comentado todo esto, vamos a ponernos manos a la obra, como punto de partida tomaré el ejemplo de Javi de generación de terrenos con 3D Studio, que lo podéis encontrar en la sección de artículos también, cuando lo terminemos tendremos algo como esto:

captura1.JPG

El siguiente paso que vamos a hacer es añadir una luz a la escena para generar unas sombras, para ello debéis hacer click en el botón de luces bajo el menú de crear, lo podéis ver en esta imagen:

captura2.JPG

Elegimos Estándar en la pestaña y hacemos click sobre Target Direct, ahora nos vamos a algún viewport y pinchamos y arrastramos para crear la luz. Una vez creada quizás nos interese moverla para que enfoque bien a nuestro terreno, a mi me ha quedado algo tal que así:

captura3.JPG

Bien, una vez que ya tenemos la iluminación vamos a tocar algunos parámetros para tener sombras en la escena, hacemos click en selección por nombre (círculo rojo en el dibujo) y elegimos la luz que acabamos de crear:

captura4.JPG

Con la luz seleccionada nos vamos al panel de la izquierda donde creamos la luz y elegimos la pestaña de modificación (Círculo azul en la imagen) , como se observa en el panel hay que activar la casilla donde pone ON para las sombras (shadows) y si queréis también podéis tocar algún parámetro más, yo he modificado ligeramente la zona de penumbra y la zona que reciba luz:

captura5.JPG

Si hacemos ahora un render de la escena tenemos algo asi:

render1.jpg

Pues bien, ya tenemos nuestra escena configurada para realizar el render to texture, el siguiente paso es ir al menú render y elegir la opción de render to texture:

captura6.JPG

A continuación se nos abre una ventana:

captura7.JPG

Es importante tener seleccionado el plano para indicar que vamos a aplicar el render to texture sobre ese objeto, si no lo tuviéramos seleccionado no aparecería nada en el cuadro donde aparece Plane01. En maping coordinates elegimos las opciones que tengo marcadas, use automatic unwrap (esto generará en el plano unas coordenadas para la textura) y dejad el channel 3, que luego lo utilizaremos.
Hacemos click sobre Add debajo de output:

captura8.JPG

Seleccionamos Complete Map y le damos a Add Elements

captura9.JPG

Se nos aparece la pantalla anterior de nuevo, a la derecha de file name and type podemos elegir donde guardar la textura y con qué formato, a continuación debajo podemos definir la altura y la anchura de la textura, seleccionamos shadows aunque por defecto viene seleccionada y en el menú baked material hacemos click sobre output into source. Ya está todo listo, hacemos click sobre render y nos aparecerá un render algo extraño jeje, estará guardado en donde se lo indicastéis.
Una vez hecho esto vamos a crear un nuevo material, para ello pulsad la tecla M del teclado y se abrirá el editor de materiales, elegimos un material vacío y al lado diffuse color hacemos click (justo donde aparece la M vosotros no deberíais tenerla)

captura10.JPG

A continuación elegimos bitmap y buscamos la textura que generó el render to texture:

captura11.JPG

Se nos abrirán más opciones en el editor, sólo tenemos que tocar el canal de la textura, que será el canal 3 ya que fue ahí donde se guardaron las coordenadas que generó el render to texture:

captura12.JPG

Una vez hecho esto podemos asignar este material a la escena, eliminar las luces y lanzar un nuevo render del terreno para ver que tenemos luz y sombras incluso habiendo eliminado la luz! :)

render3.jpg

Ya solo falta exportar el proyecto a FBX y cargarlo en XNA para ver como efectivamente tenemos sombras y luz sin necesidad de perder rendimiento por ello.
Pues bien, con esto concluye este tutorial, espero que os resulte útil, un saludo y hasta la próxima.


David Mariscal Fernández
31/08/2009
Blog: aprendiendoxna.wordpress.com

Last edited Aug 31, 2009 at 12:59 PM by mariscal, version 4

Comments

No comments yet.