Posibles problemas al generar Lightmap UVs en Unity
Lineamientos
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:

2. 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.
3. 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
4. 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
5. 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

7. 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.
8. Min Objet Scale: Este parámetro modifica directamente la escala mínima que tendrá en mesh en todas las escenas en general.
POSIBLES ERRORES UTILIZANDO PROGRESSIVE LIGHTMAPPER
TEXELS INVÁLIDOS
Un error común que surge al hacer los lightmaps por medio de el lightmapper Progressive GPUes el de un tipo de manchas que aparecen en el bake final, estos están relacionadas directamente con Lightmaps UVs inválidos/Lightmap texels inválidos. Para asegurarse de esa e la causa del error hay que visualizar el proyecto con el shadingmode Texel Validity.


- El error anterior normalmente ocurre cuando los "rayos de luz" se topan con una geometría que solamente tiene una sola cara y con las normales en la dirección incorrecta, en este caso los Texels son inválidos y la superficie presentará manchas, para corregir ese error simplemente hay que hacer dobles caras en mesh que presenta el error.
- Este error también se puede presentar cuando se tienen en la escena meshes que se entrecruzan entre si, por ejemplo en el caso de un objeto que se encuentre parcialmente introducido o se cruce con otro también causará que existan texels inválidos,
- En la siguiente imagen se ilustra el ejemplo anterior, en dónde el carro se entrecruza con el suelo y genera texels inválidos en toda la zona de intersección.


- Modificando el Backface Tolerance se puede ampliar el rango de error que se presenta en estos casos, para hacerlo es necesario crear un nuevo Lightmap Parameters, y posteriormente reducir el backface tolerance hasta un 0.2


- Una vez hecha la modificación mencionada anteriormente se reducen de manera significativa los texels inválidos que se tenían en el ejemplo anterior como se muestra en las siguientes imágenes.


FINAL GATHER Y RAY TRACING
Hay ocasiones en las que el Bake final llega a presentar ruido como en la siguiente imagen, ese ruido está directamente relacionado con el Final Gather.

En el caso de utilizar el Lightmapper Enlighten es necesario desactivar la casilla del Final Gatherpara eliminar por completo el ruido que se observa en la imagen anterior. Si no se desactiva la casilla es necesario utilizar un valor alto en la opción de Ray Count para que funcione correctamente, lo cual aumenta considerablemente el tiempo de bake, lo que hace que sea poco óptimo utilizar el Final Gather

Archivos Adjuntos
Elaboró
Luis Martín