"Este capítulo quisiera especialmente dedicarlo a Divi4p, que desde las jornadas de Zaragoza, en 2008 (hace más de dos años ya), me ha estado dando la lata constantemente sobre las ventajas del uso del Render to Texture y la pre-iluminación, y que sin embargo apenas le hice caso. ¡Cuanta razón tenía, y cuanto lamento no haberle prestado más atención con anterioridad!"5. Sombras precalculadasPodemos pre-iluminar nuestros objetos con una iluminación global "falseada". Esta pre-iluminación de los edificios permitirá que estén difuminadas las sombras bajo salientes y en torno a los detalles. Esta iluminación no debe tener una dirección predominante muy marcada, ya que recordemos que el objeto también recibirá la iluminación dinámica del juego. Esto proporcionará una apariencia más real y contribuirá a acentuar el detalle de los objetos sin incrementar sus polígonos.
Veamos con un ejemplo lo que pretenderemos conseguir con esta técnica, comparando el estado actual de la casilla con el que podría presentar gracias a una pre-iluminación:
El efecto de penumbra difuminando las sombras lo podemos apreciar bajo el tejado, en las vigas, en la lámpara y en los huecos de ventanas y puerta.
Para conseguir este aspecto del modelo serán necesarios unas acciones:
- Generar una iluminación adecuada del modelo en 3ds Max. Para esto vendrá en nuestra ayuda un script: E-Light.
- Calcular las sombras que se deben proyectar en las texturas del modelo. En este caso usaremos el "Render to Texture" de 3ds.
- Aplicar las sombras precalculadas a las texturas del modelo.
5.1. Pre-iluminación - E-LightVayamos entrando en materia.
Como paso previo deberemos instalar en nuestro 3ds el script E-Light, creación freeware de
Ronnie Olsthoorn y que podemos encontrar en su web
www.skyraider3d.com. Haciendo click en “Download this Maxscript” obtendréis un archivo comprimido que más adelante veremos cómo se “instala”.
¿Qué es E-Light? E-light es un script de iluminación para 3dsmax que genera una “cúpula” de luces de manera que podemos obtener una luz “neutra” que ilumine nuestro modelo, resaltando las zonas sombreadas, cubiertas y recovecos:
La cúpula generada lo es en base a un conjunto de parámetros que pueden ser modificados para ver su efecto sobre un renderizado del modelo.
Una vez descargado el enlace de la web de
Ronnie Olsthoorn, comprobaremos que se trata de un archivo ZIP y que en su interior hay tres archivos: un E-Light_ReadMe.txt, que nos indica su uso, y dos scripts para 3ds Max, uno específico para la versión 5 de Max, y otro genérico, que es el que he usado satisfactoriamente en mi versión 2009.
Copiaremos el script adecuado
"E-Light.ms" al directorio "Scripts" que encontraremos, por ejemplo, en la ruta:
"C:\Program Files\Autodesk\3ds Max 2009\Scripts" de nuestra instalación de Max.
Desde el editor podemos ejecutarlo desde el menú "
MAXScript -> Run Script...", que nos abre una ventana para que lo seleccionemos. Al ejecutarlo nos abrirá una ventana como la mostrada:
Si hemos llegado hasta aquí todo está bien.
Un script es un conjunto de acciones que se ejecutan en nuestro 3ds para automatizar funciones repetitivas. En este caso, este útil script nos generará ese conjunto de luces en disposición de semiesfera y permite manipular sus parámetros de forma global, sin tener que ir ajustándolas una a una. Los parámetros que muestra la ventana son los de configuración de los focos: intensidad de la luz, color, número de focos, etc...
Procedamos ahora a pre-iluminar nuestro modelo.
Personalmente prefiero trabajar estos temas en una copia de la escena con el modelo, por lo que pueda pasar. Igualmente, al trabajar la iluminación es muy conveniente que las texturas del modelo las reemplacemos por otras de color blanco puro. Por tanto empezaremos por crear una textura alternativa de blanco uniforme, que podemos llamar "blanco.ace".
Ahora abrimos el 3ds y cargamos la casilla, para proceder a guardar la escena con otro nombre (con el fin de duplicarla) por ejemplo "ES_Casilla_01_Preilum.max". En esta nueva escena seleccionaremos los objetos:
- 2_1250_Casilla
- 1_0256_Sombra
- 1_0128_Sombra_Lampara
Para eliminarlos mediante la tecla "suprimir". Es decir, nos quedaremos con los elementos constructivos en el LOD de mayor detalle, y eliminaremos los objetos sombra en su totalidad, con lo cual nos quedaremos con aquellos que participarán de la pre-iluminación del modelo.
Una última operación en esta versión de la casilla consistirá en abrir la "caja de las bolas" y sustituir en el material de la Casilla la textura original por la que hemos creado "blanco.ace".
La casilla se verá totalmente de este color. Recuerdo que debe ser blanco puro.
Con estos cambios en la escena de trabajo podemos proceder a efectuar un Render de la casilla:
Para ello seleccionaremos el Viewport en Perspectiva, donde pondremos la casilla en la posición que deseemos para apreciar las sombras que se producirán. La mostrada es una buena posición. A continuación buscaremos en la barra principal el botón
"Render" (o el menú "Rendering -> Render", o bien las teclas "Mayúsculas" + "Q") para abrir la ventana de render y pulsaremos el botón "Render" de ésta última.
Esta visión de la casilla es para tener una referencia en el proceso que seguirá, y que es uno de los más divertidos que he encontrado en el modelado
![Alegre :D](./images/smilies/icon_biggrin.gif)
.
Con todo preparado no queda más que ejecutar el script de E-Light. De momento no nos preocuparemos de todos estos parámetros que aparecen e iremos directamente a buscar el botón
"Create Environment Light", para a continuación, y sin cerrar la ventana de E-Light, ejecutar un Render del Viewport en Perspectiva:
La vista de la casilla no ha mejorada demasiado, Más bien ha empeorado
![Twisted Evil :twisted:](./images/smilies/icon_twisted.gif)
Pero no nos preocupemos, ahora empieza el toqueteo de parámetros y ver el resultado en el Render, volver a ajustar parámetros y vuelta al Render... Pero como norma: "no modificar más de un parámetro antes de ver como afecta al resultado".
Empezaremos por ajustar el
Radius, que está por defecto puesto en 1000 metros. Un radio aceptable viene a ser un valor entre tres a cuatro veces la mayor de las dimensiones del objeto a iluminar. En nuestro caso la casilla tiene 6 metros de longitud, por tanto estaríamos en un valor entre 18 y 24 metros. Vamos a fijar 20 metros. Al "tirar" el render vemos que el aspecto de las sombras ha mejorado notablemente, aunque la escena está un tanto oscura.
El siguiente parámetro es
Segments. Éste determina la densidad de focos que poseerá la cúpula de luz. A mayor densidad de focos más difuminada resultará la sombra y mejor resultado obtendremos. Quienes poseen experiencia en este modelo de luces aconseja un valor de 5 segmentos.
Respecto a los parámetros de la luz, el
Color siempre será el blanco puro.
Multiplier determina la cantidad de luz emitida por los focos. Como la escena está muy oscura subiremos este valor hasta 3. Valores superiores de luz nos pueden "quemar" el resultado y hacer desaparecer las sombras.
Por lo que hace referencia a las sombras, el
Color será en este caso siempre negro puro.
Density viene a determinar la intensidad de las sombras. Para los efectos que buscaremos en el caso de la casilla, un valor de 5 en la densidad de las sombras acentuará éstas en un grado suficiente.
El
Map Size no debe hacernos pensar en el tamaño de la textura que hemos usado en su momento para la casilla. Este valor determina el grado de ajuste o dispersión de la sombra. El propio Kuju recomienda trabajar con un valor de 500 para el Map Size. En mi caso he "redondeado" a 512, por aquello de que es un número más "informático", pero puede ser cualquier valor, no debiendo seguir ningún criterio de potencia de dos en absoluto. Una advertencia: no abuséis de este valor, principalmente si vuestro equipo anda "justo" de memoria, pues valores altos de Map Size consumen directamente la memoria del ordenador y puede producir el "cuelgue" de la aplicación al intentar generar un render con esta iluminación.
El "Bias" determina la difuminación global de las sombras. Si éstas están muy marcadas, como debe ser el caso en el momento actual, podemos elevar este parámetro para suavizarlas. En este caso un valor de 0,8 da un aspecto más real. Valores superiores hacen que las sombras tiendan a desaparecer.
Por último el parámetro
Sample Range determina, en valores bajos, que la sombra se ciña a los contornos a sombrear y, en valores altos, que la sombra de expanda alrededor de los contornos a sombrear. El valor por defecto de 4 es suficiente en este caso.
Con todo ello el render nos ha quedado así:
Si lo comparamos con los primeros render que hicimos podemos apreciar el efecto de la iluminación, los detalles del modelado se acentúan, y el modelo gana en presencia.
Por supuesto que podéis obtener otros efectos que os gusten más. Puede que los valores de los parámetros se deban ajustar según el tipo de modelo del que estemos tratando. Tomaros un tiempo para practicar con E-Light y ver como afecta en el resultado del modelo.
Si no hubiésemos sustituido la textura original por una textura blanca, podríamos haber obtenido resultados como éste:
Donde podemos apreciar el realismo que aporta una pre-iluminación correcta de la escena. No obstante, este tipo de renders, con texturas, no es lo que necesitamos para aplicar las sombras pre-calculadas a nuestro modelo. Eso si, lo podemos usar para mostrar nuestros trabajos en el foro, pero el resultado será un poco ficticio, pues no es el mismo aspecto que podremos obtener en el simulador (aunque vamos a intentar acercarnos mucho
![Alegre :D](./images/smilies/icon_biggrin.gif)
).
Con la escena correctamente pre-iluminada, procederemos a guardar el resultado en el archivo de trabajo de la escena, antes de continuar con el siguiente paso: la creación de la textura con las sombras precalculadas.