Saltar al contenido principal

Guía de Iluminación Unity URP

Descripción General

En esta sección se realiza una descripción de la investigación.

Guía de trabajo

Coloca el proceso o los pasos a seguir de la guía.

Conceptos:

Lighting Mode:

Esta sección determina el comportamiento de todas las luces mixtas en la escena, los modos disponibles son los siguientes:

Baked Indirect: Combina luces directas en tiempo real con luces indirectas bakeadas. Proporciona sombras en tiempo real. Este modo de iluminación permite obtener resultados realistas y una buena resolución de sombras.

*Su uso es apropiado para hardware de gama media.

Shadowmask: También combina luces directas en tiempo real con luces indirectas bakeadas. En este modo se habilitan las sombras para objetos distantes y las mezcla automáticamente con sombras en tiempo real.

*Es el modo de iluminación más realista, pero también es el que mas recursos consume, de igual forma se pueden usar los quality settings para configurar su performance y su calidad visual.

*Su uso se recomienda para dispositivos de gama Alta y Media

Sustractive: Utiliza luces bakeadas directas e indirectas.  Renderiza sombras en tiempo real solamente para una Directional Light.

*Este modo de iluminación no proporciona resultados realistas y es adecuado para arte poco realista o dispositivos de gama baja

Lightmapper:

Lightmappper: Se utiliza para especificar que tipo de calculo de iluminación se utilizará, hay 3 opciones:

Progressive CPU: Utiliza el CPU de la computadora y la memoria RAM del Sistema para generar los lightmaps.

Progressive GPU: Utiliza el GPU (Tarjeta gráfica) de la computadora y la VRAM de esta para generar los Lightmaps y los Lightprobes. (Cabe resaltar que es una versión que continúa mejorando en cada versión de unity)

Tiene como ventaja que realiza el bake de forma más rápida que el Progressive CPU Lightmapper

Enlighten: Este tipo de iluminación utiliza datos de iluminación global pre-calculados en tiempo real para generar iluminación indirecta, es bastante rápido para hacer pruebas de iluminación, sin embargo tiene 2 grandes desventajas por las cuales no se recomienda usar:

  1. Tiene muchas limitaciones si se compara con Progressive Lightmapper

  2. Es un Lightmapper obsoleto para lightmaps bakeados, sin embargo se puede seguir utilizando con iluminación en Real Time

Lightmapping Settings, valores a considerar

Direct Samples y Enviroment Samples: Incrementando este valor, se incrementa la calidad de los lightmaps, al mismo tiempo que incrementa el tiempo de bake.

Indirect Samples: Para algunas escenas, especialmente para escenas exteriores, 100 samples son suficientes, sin embargo para escenas interiores con emissive materials, incrementar el calor hasta que se obtengan los resultados deseados.

Light Probe Sample Multiplier: Incrementando este valor mejora la calidad de los light probes. Para activar esta opción ir a la siguiente ruta:  Project Settings > Editor y desactivar Use legacy Light Probe sample counts. El valor por default es 4.

Min Bounces y Max Bounces: Para la mayoría de las escenas 2 bounces es suficiente, para algunas escenas interiores usar mas de 2 puede ser necesario.

Lightmap Resolution: Este valor especifica el numero de texels por unidad en cada lightmap, incrementar su valor mejora la calidad del lightmap, pero también incrementa en tiempo de bake.

Consideraciones para generar lightmaps

Hay situaciones en la que surgen problemas con los lightmaps UVs generados con los parámetros originales de Unity, por lo que es necesario modificarlos hasta lograr un resultado óptimo, a continuación se mencionaran las propiedades de cada parámetro

Lineamientos para la Generación de Lightmap UVs

Una vez generado las UVs del FBX aparecerá un listado de parámetros debajo, como se muestra en la siguiente imagen:

Hard Angle: Este valor configura como Unity lee los edges de la geometría para generar los UVs, por degfault este valor debe de estar en 88, si se aumenta el valor a 180 Unity va a considerar que todos los edges de la geometría tienen un smooth, lo cuál puede ser muy útil en modelado orgánico, en el caso del 88 que es el valor que se coloca por default es el ideal para modelado geométrico o mecánico.

Angle Error: Este parámetro controla que tan diferentes puenden ser las triangulaciones en la geometría original, normalmente debe de ser un valor bajo para evitar errores cuando se apliquen los lightmaps

Area error: Controla cuan bien Unity preserva las areas de triangulación. Incrementeando el valor te permite crear menos charts. Sin embargo, incrementando el valor puede cambiar la resolución de las triangulaciones, así que hay que asegurarse de que la distorsión resultante no deteriore la calidad del lightmap

Margin Method:  En esta sección se puede elegir la forma de calcular el Pack Margin, de manera  Manual o Automática

  • Los lightmaps contienen información sobre la iluminación en texels, así que siempre incluye un margen de distancia entre charts para evitar errores cuando se apliquen los lightmaps. Muchas veces es necesario usar las configuraciones del Pack Margin para asegurarse de que hay un margen suficiente entre los UV charts de la geometría, esto se hace colocando el Margin Method en forma Manual

Min Lightmap Resolution: Para calcular un buen pack margin Unity necesita saber los valores mínimos a utilizar respecto a la resolución, recordando siempre que colocar las UVs muy cerca puede causar errores en la visualización, y colocarlos muy lejos el uno del otro un mal aprovechamiento de la memoria.

Para configurar bien la resolución mínima de los lightmaps es necesario entender la relación que hay entre la resolución del Lighting Setting Asset de la escena y la escala en las propiedades del lightmap del MeshRenderer. Gracias a esto el mismo mesh puede tener una resolución de lightmap diferente en cada escena.

La relación entre ambos parámetros se muestra en la siguiente imagen:

*En la imagen  se muestra la relación que existe entre ambos parámetros, en el caso de que el Min Lightmap Resolution (Import Settings) tenga una mayor resolución que el Lightmap Resolution (Lighting) aparecerá un error ya que la resolucíón mínima del Lightmap del FBX importado es mayor que la del Lightmapping general de la escena, en dado caso se soluciona disminuyendo la resolución del lightmap del FBX.

Min Objet Scale: Este parámetro modifica directamente la escala mínima que tendrá en mesh en todas las escenas en general.

Configuración de una escena

Tipos de luces y dónde usarlas:

Reflection Probes

Un elemento importante que no debe faltar son los reflection probes, estos permiten que los objetos que tengan materiales reflejantes puedan tomar los reflejos a su alrededor, por optimización  las reflection probes deben mantenerse en Baked y deben estar en el centro del escenario y cubrir  toda el área de la habitación/ambiente  que tomara sus reflejos . Otras propiedades que se pueden ajustar son la distancia que tomara en cuenta y la resolución de los reflejos. Si se presentan reflejos con escalas grandes, activar la casilla de Box projection.

Materiales Emisivos

Los materiales emisivos también se pueden usar para iluminar una escena, ya sea colocados en lamparas o usados como luces adicionales para el bake de luces. Estos permiten usar la emision en realtime, baked o none (que no iluminen otros objetos a su alrededor)

Light probes Group

Las lightprobes son una forma de optimización que se refiere a la iluminación, su función es iluminar a los objetos dinámicos sin necesidad de usar luces en tiempo real, cada esfera toma la iluminación a su alrededor y cuando un objeto dinámico pasa por su lugar esta le  pasa su información de luz.  Las lightprobes se colocan por el lugar donde pasarán los objetos dinámicos.

Universal Render Pipeline Asset

Además de los settings de iluminación para los baked lightmaps,  el asset del URP también provee otros settings como el ambient occlusion en tiempo real, esto es mejor mantenerlo apagado para proyectos con Quest, pues al ser en tiempo real consume recursos del performance y además suele causar aliasing y dar un aspecto sucio. Aquí también se encuentra el nivel de anti Aliasing MSAA, preferiblemente usar x4 para aplicaciones que correrán solo en el quest, si correrá conectado a una computadora se puede subir a x8. Otra configuración global que se maneja desde este asset es la calidad de sombras en tiempo real. Además de permitir que otras luces en tiempo real (spot y point lights) produzcan sombras,  para esto hay que activar la casilla Additional Lights y cast shadows. Otros ajustes que contribuyen a mejorar la calidad visual son el Probe blending  y box projection (para corregir las escalas grandes de los reflejos).

Consideraciones

En esta sección debes colocar las consideraciones a tomar en cuenta para la correcta implementación de la guía.

Enlaces de descarga

Los enlaces de descarga ya sean plugins o Assets.

Archivos Adjuntos

(50) Unity VR Optimization : Light Probes - YouTube

Foro sobre problemas de iluminacion: https://forum.unity.com/threads/lightmapping-troubleshooting-guide.1340936/#post-8467232

Comentarios

Comentarios generales o extras de la investigación.

Ventajas

Comentarios generales o extras de la investigación.

Desventajas

Comentarios generales o extras de la investigación.

Elaboró