trensim.comSimulación Ferroviaria
   

TUTORIAL: Profundizando en 3ds Max y RailWorks

Foro para tratar temas relacionados con Autodesk 3ds Max (3D Studio Max) y Autodesk gmax

Moderador: Moderadores

10. Cristales. Shader TrainGlass.fx.

Notapor Pere » Lun Sep 27, 2010 11:19 pm

10. Cristales. Shader TrainGlass.fx.

Para representar los cristales de la cabina de teléfonos, primero los deberemos modelar mediante sus respectivos polígonos. En la siguiente imagen os muestro los cuatro polígonos que conformarán los cristales en las cuatro fachadas laterales de la cabina:

3ds-cs227.jpg

Están situados en el montante de cada ventana, cómo corresponde.

Ahora es cuando nos plantearemos cual debe ser la forma de definir el material adecuado para unos cristales. Nuevo shader:

"TrainGlass.fx" es un shader específico para cristales, con efecto de brillo sobre su superficie (al igual que en el caso de los metales) reflejos del entorno sobre ellos y transparencia y coloración graduables. Su uso es recomendable para aquellos cristales que estarán cerca de la cámara del simulador, puesto que para un edificio que se verá siempre a lo lejos no es preciso malgastar los recursos de nuestro ordenador en su representación, y en particular ventanas de vehículos: locomotoras, coches y vagones, edificaciones ferroviarias cercanas al trazado: marquesinas, estaciones, torres de enclavamientos, etc., y en general edificios modernos llenos de cristal :D .

Este shader tiene dos slots, pero vamos a necesitar tan sólo una textura para el slot 1, dado que el slot 2 está destinado a contener una textura cualquiera para darle al shader una ubicación para un mapa de entorno que calculará él dinámicamente durante la simulación.

Vamos a analizar la textura a usar en el slot 1:

glass_generic_nm.jpg
glass_generic_nm.jpg (21.04 KiB) Visto 10429 veces

Se trata de una textura diffuse que representará el "tinte" que recibirá el cristal, ese degradado azulado en mi caso, con un canal "alpha" que determina la cantidad de transparencia u opacidad de dicho tinte sobre el cristal, teniendo presente que el negro (valor 0) representa una transparencia absoluta, semejante a haber practicado un agujero en el cristal, y el color blanco (valor 255) será un opacidad intensa, no total, de aproximadamente el 50%. En mi caso el canal alpha tiene un gris claro (valor 160) que producirá una tenue tinción del cristal.

Y ahora podemos proceder a modificar el material de nuestra cabina para trabajar el tema de los brillos en sus superficies. Abriremos el editor de materiales y modificaremos:

3ds-cs228.jpg

  1. Seleccionaremos el shader "TrainGlass.fx", que proporciona la capacidad de informar un mapa diffuse con transparencia en el canal "alpha", un mapa "dummy" para calcular el mapa de entorno (de reflexión), y también ajusta las propiedades del brillo especular del material y de la reflexión.
  2. Informaremos las texturas en ambos slots, en el slot 1 la textura diffuse de nuestro cristal tal cómo la he mostrado antes, y en el slot 2 repetiremos esta misma textura dado que tan sólo debemos proporcionar una ubicación para que el simulador calcule el mapa de entorno que se reflejará en nuestro cristal.
  3. Phong size - Este parámetro, al igual que en el caso del metal, determina la dispersión del brillo especular, y se informa en el Argumento UV número 1. Puede tomar valores entre 0 y 64, siendo 0 el valor que determina una mayor dispersión del brillo, cómo correspondería a una superficie algo mate del cristal, y siendo 64 el valor que determina una menor dispersión del brillo, cómo correspondería a un cristal perfectamente pulido. Para nuestro caso un valor de 64, cómo corresponde a la pulida superficie de un cristal, será apropiado.
  4. Specular power - Este parámetro determina la intensidad del brillo y se informa en el campo del mismo nombre que encontraremos en la sección "Lighting Material". Puede tomar valores entre 0 y 8, siendo 8 el valor de máximo brillo. En nuestro caso nuevamente tomaremos un valor intermedio y lo dejaremos en 4.
  5. Intensidad de la reflexión durante el día - Este parámetro determina el grado en que el mapa de entorno aparecerá reflejado en el cristal, y se informa en el Argumento UV número 2. Puede tomar valores entre 0 y 1, siendo 0 el valor que determina una ausencia de reflejo sobre el cristal, y siendo 1 el valor que determina un reflejo máximo sobre el cristal. Para nuestro caso un valor de entre 0,5 y 0,8 será el apropiado (dependiendo del grado de limpieza que queramos dar al cristal ;) ).
  6. Intensidad de la reflexión durante la noche - Este parámetro determina el grado en que el mapa de entorno aparecerá reflejado en el cristal durante la noche, y se informa en el Argumento UV número 3. Actúa de la misma manera que el parámetro anterior tomando valores entre 0 y 1, siendo 0 el valor que determina una ausencia de reflejo sobre el cristal, y siendo 1 el valor que determina un reflejo máximo sobre el cristal. La existencia de este parámetro, que parece redundante respecto a la anterior, es debida a que el reflejo durante la noche, en condiciones de poca luz, es mucho más acusado que durante el día, y conviene tener un valor inferior al que se usará durante el día para evitar efectos desagradables. Para nuestro caso un valor de entre 0,2 y 0,3 será el apropiado.
  7. Un último punto que hay que tener presente y no olvidar, dar a Z-Bufer Mode el valor "TEST ONLY", de igual forma que para todos los materiales que incluyan transparencias.
Con estos simples ajustes en el material, podemos volver a exportar el modelo y ver el resultado del cambio en el simulador:

rw-cs068.jpg

La total transparencia anterior de los cristales ha desaparecido, lo cual ya ha mejorado el aspecto, y el sutil reflejo del entorno en los mismos le añade un grado de verosimilitud a la escena.

En el presente caso no sería estrictamente necesario, pero podemos duplicar los polígonos de las ventanas y voltearlos ("fliparlos") para reproducir también los reflejos en el interior de la cabina. El material soporta perfectamente diferentes niveles de transparencias, unas tras otras, sin provocar interferencias entre objetos que las incluyan. Los que hayan modelado objetos con semitransparencias (canal alpha) en otras plataformas sabrán agradecer el no tener que preocuparse por la ordenación de los canales alpha para evitar que otros objetos desaparezcan tras las ventanas del nuestro.

Un re-exportación del modelo con "dobles" cristales nos muestra que ahora también se producen brillos y reflejos en el lado interior de los cristales de la cabina:

rw-cs069.jpg

A modo de resumen, muestro juntas las cuatro fases de desarrollo de la cabina con la adición de los diferentes efectos de brillos en metal, cristales exteriores y cristales interiores, siempre desde una misma ubicación y ángulo de cámara, y a una misma hora del día:

rw-cs070.jpg

Para finalizar un par de vistas in-game del objeto relacionándose con otros objetos de su entrono. Vista exterior:

3ds-cs231.jpg

Y vista a través de los cristales desde el interior:

3ds-cs230.jpg

Espero que os sea útil y tan sólo cabe recordar que todo esto es de aplicación en material móvil.

_______________

Con este capítulo doy por finalizada esta tercera entrega de tutoriales. En ellos hay vertida mucha ilusión en que estos pasos sirvan para ver algún día creaciones de nuevos autores.

No se trata ni mucho menos de todo lo que se puede llegar a realizar en RailWorks con estas herramientas, pero eso sería un tarea casi imposible. De momento creo que hay material más que suficiente para divertirse practicando. Y sobre todo recordemos que en las pequeñas realizaciones también hay mucha satisfacción... que no todo han de ser Big Boys ;) .

Ánimo y suerte.
Avatar de Usuario
Pere
grupo TrenSim
 
Mensajes: 5043
Registrado: Jue Ago 28, 2003 11:44 pm
Ubicación: Barcelona

Anterior

Volver a 3D Studio Max / gmax

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 13 invitados