-
La iluminación en Unity está con más funciones que nunca.
-
El pipeline de iluminación incluye una iluminación global en tiempo real,
-
adicionalmente a las técnicas tradicionales de baked light mapping.
-
Estas combinadas con un physically-based rendering (renderizado basado en físicas)
-
y el standard shader
-
dan mayor poder y versatilidad para iluminar escenas más complejas.
-
Unity utiliza physically-based rendering, o PBR
-
para crear una manera amigable de lograr un aspecto
-
consistente plausible para los materiales debajo de condiciones de iluminación.
-
Para hacer esto, Unity modela cómo la luz en realidad se comporta
-
y sigue las leyes de física acerca de cómo
-
la luz interactúa con los materiales.
-
Estos materiales por lo usual son creados utilizando el standard shader.
-
El standard shader hace que physically
-
based rendering sea fácil y accesible de utilizar.
-
Una de las herramientas más poderosas que hay en el pipeline
-
de Unity es la iluminación global en tiempo real de Unity,
-
o GI.
-
Al usar GI, todas las luces en la escena pueden afectar
-
el objeto dentro de rango con ambas
-
iluminación directa e indirecta.
-
La iluminación directa viene de luces
-
que alumbran directamente a los objetos en la escena.
-
La iluminación indirecta sin embargo
-
es la luz reflejada, o que rebota
-
de las superficies de luz en la escena.
-
Esta luz indirecta que rebota
-
puede iluminar objetos cercanos
-
imitando cómo la luz se comporta en el mundo real
-
Esta luz indirecta es afectada
-
por el color de las superficies de las que rebota,
-
tomando una contribución del color de esa superficie.
-
La iluminación directa e indirecta va a
-
mezclarse para crear un aspecto mucho más real.
-
Adicionalmente a la cámara principal predeterminada
-
una nueva escena en Unity viene con
-
un sky box predeterminado
-
y una luz directional predeterminada alineada
-
con ese sky box.
-
Cada escena también contiene valores
-
predeterminados para la iluminación del ambiente.
-
La luz del ambiente ilumina todas las superficies en la escena.
-
La luz de ambiente es controlada por ajustes en los
-
paneles de iluminación de Environment de la pestaña Lighting.
-
La luz de ambiente se puede crear ya sea
-
utilizando un sky box,
-
un gradiente de usuario generado por 3 colores,
-
o un solo color.
-
Todos los objetos agregados a la escena
-
van a recibir una luz de ambiente
-
al menos de que el valor de intensidad ambient esté configurado en 0
-
o los valores del color de la luz de ambiente estén configurados a negro.
-
Es muy raro, si no imposible
-
para cualquier material del mundo real
-
en no tener reflectividad.
-
Por defecto todos los objetos en la escena
-
también van a recibir información de reflectividad.
-
Incluso si el cubo, la esfera y el plano en la escena
-
no están prendidos y la luz de ambiente es ninguna
-
estos todavía reciben información de iluminación
-
en la forma de reflejos.
-
La fuente por defecto de reflejo es el sky box.
-
Esto se puede cambiar a que sea un cube map personalizado.
-
Para recibir ningún reflejo predeterminado
-
configure ya sea el cube map personalizado a none (ninguno),
-
o quite el sky box.
-
Vale la pena tener en cuenta que el sky box predeterminado
-
es generado procedimentalmente
-
y los sky boxes nuevos procedimentalmentes
-
pueden ser creados y guardados como assets.
-
Cuando ilumine escenas en Unity
-
podemos trabajar con una iluminación en tiempo real,
-
con iluminación baked,
-
o una mezcla de ambas.
-
La iluminación en tiempo real es modificada más fácil en tiempo de ejecución.
-
pero viene con un costo al rendimiento.
-
El Baked lighting (iluminación baked) por el contrario, pre-cálcula
-
información de iluminación más detallada
-
y la guarda en una textura light mapped en disco.
-
Esta información light map es luego
-
leída de la textura en tiempo de ejecución,
-
evitando la necesitad de hacer cualquier
-
cálculo de iluminación cuando el proyecto esté ejecutándose.
-
Esto ahorra rendimiento,
-
pero al precio de cambios dinámicos en la escena.
-
Los baked light maps no son actualizados en tiempo de ejecución.
-
Las luces pueden cambiarse entre realtime (tiempo real), baked,
-
y una mezcla de iluminación basada por luz.
-
El uso exclusivo de una iluminación baked
-
es más apropiado para plataformas destino
-
como lo son dispositivos móviles con capacidades de rendimiento menores.
-
El sistema de light mapping puede funcionar
-
continuously (continuamente) o por demand (demanda).
-
Cuando continuous baking sea seleccionado
-
los cambios de iluminación serán baked en el fondo mientras se edita.
-
Estos cambios pueden ser propiedades
-
ajustadas en el inspector,
-
u objetos cambiados en la escena.
-
Cuando continuous baking no sea seleccionada
-
los cambios solo se van a pre-visualizar en demanda.
-
Cuando el botón Build en el panel de lighting sea seleccionado.
-
En esta escena hay una luz directional
-
que viene a través de una claraboya en el techo.
-
Esta luz contribuye a la iluminación de la escena completa
-
a medida que la luz rebota de las superficies
-
que ilumina directamente,
-
a otras superficies cercanas de una manera indirecta.
-
Esta luz continua iluminando
-
indirectamente superficies cercanas
-
hasta que la fuerza de la luz se desvanece
-
y no puede rebotar más.
-
Disminuya la intensidad de la luz
-
y la iluminación de la escena disminuye de acuerdo a esto.
-
Del mismo modo, si la luz directional
-
es girada para iluminar directamente
-
una diferente parte de la escena,
-
ahora iluminará la escena de una manera diferente,
-
con ambas iluminación directa e indirecta.
-
Ya que los materiales creados con un standard shader
-
pueden imitar una amplia variedad de superficies físicas
-
y los materiales diferentes pueden tener diferentes
-
cantidades de refletividad
-
esto puede afecta la iluminación de la escena.
-
Para ayudar a balancear esto la Bounce Intensity se puede ajustar
-
en una base por luz
-
o globalmente al ajustar los ajustes
-
en el panel de lighting.
-
Los ajustes pueden ser hechos aquí para cambiar
-
artificialmente el rebote potencial de la luz de una superficie iluminada.
-
Ajuste la cantidad de luz indirecta
-
en la escena, y más.
-
Adicionalmente a las luces nosotros podemos utilizar
-
superficies emisivas para contribuir a la iluminación de la escena.
-
Esta escena está prendida con una variedad de luces y
-
tipos de luces, incluyendo superficies emisivas.
-
Las superficies Emissive (emisivas) son una fuente de luz,
-
pero se comportan muy parecido a una luz que rebota indirectamente.
-
Las superficies emisivas principales en la escena
-
se encuentran en el cruce principal del corredor.
-
Pero hay paneles adicionales ubicados a través de la escena.
-
Todas estas superficies emisivas utilizan
-
la propiedad Emission del standard shader
-
al ajustar la escala Emissive.
-
El valor float alado de la propiedad Emission
-
y al agregar un toque de color,
-
el animo de nuestra escena cambia.
-
A medida que estas luces pueden participar en un light mapping en tiempo real
-
estas pueden se controladas en tiempo de ejecución utilizando
-
código o una animación para crear
-
cambios complejos en el animo
-
mientras nuestros proyectos se están ejecutando.
-
El factor final que contribuye en iluminar
-
una escena en Unity son probes.
-
Hay 2 tipos de probes en Unity.
-
Light probes
-
y reflection probes.
-
Los light probes toman muestras de la iluminación en la escena
-
en diferentes posiciones en el mundo.
-
La información en estos probes puede ser utilizada
-
para iluminar elementos dinámicos en la escena
-
como lo son personajes u otros objetos en movimiento
-
a un precio bajo al rendimiento.
-
Los Reflection probes por el contrario
-
funcionan como un solo punto de referencia para
-
calcular reflejo
-
Rodeando cada reflection probe
-
está un cuboid que específica
-
lo que debería ser incluido en ese reflejo.
-
Estos probes toman muestras de los elementos alrededor de ellos
-
utilizando una proyección de una caja,
-
y almacena esa información en un cube map.
-
Los materiales con superficies reflectivas
-
que están en objetos dentro del volumen del reflection probe
-
pueden luego referenciar este cube map
-
parar crear superficies reflectivas.
-
Por defecto hay un reflection probe
-
integrado en cada escena.
-
Este reflection probe por defecto
-
refleja el sky box para crear reflejos básicos.
-
Para más detalles en los reflejos
-
se requiere de reflection probes
-
adicionales y posicionados adecuadamente
-
para los objetos reflectivos.
-
Vale la pena notar que physically-based rendering
-
funciona mejor en el linear colour space.
-
Linear colour space va a dar
-
un resultado más real y matemáticamente correo.
-
Para mejores resultados asegúrese de que
-
el colour space esté configurado a linear
-
en la ventana de los
-
player settings del proyecto.
-
Linear colour space es el ajuste predeterminado.
-
Sin embargo, tenga cuidad que no todas las plataformas
-
soportan linear colour space,
-
y que gamma es el colour space
-
requerido actualmente para la mayoría de plataformas móviles.
-
Cuando mire todos estos aspectos
-
para iluminar una escena en Unity
-
estos pueden ser agregados efectivamente
-
con los factores principales de contribución.
-
Ambient light (luz de ambiente).
-
Reflections (reflejos).
-
y fuentes de luz.
-
Trabajando con materiales creados
-
con el standard shader siendo
-
dibujados utilizando physically-based rendering
-
con iluminación global para calcular
-
la iluminación indirecta y crear
-
escenas más complejas y reales.