Trabajando con canales UV dentro de Unreal Engine 4

Unreal 4 utiliza el mapeo UV para saber como aplicar los materiales (texturas), pero también para hacer los cálculos de las luces estacionarias y estáticas por medio de Lightmass. Es importante que estos canales UV cumplan ciertas normas.

mapeo UV en Unreal 4
¡Haz clic para puntuar esta entrada!
(Votos: 4 Promedio: 5)

Los canales UV son un conjunto de datos dentro de una malla estática que asigna cada uno de los vértices de la malla a coordenadas en el espacio 2D. Estas asignaciones definen cómo los mapas de textura 2D se envuelven alrededor de la geometría 3D cuando se renderiza la malla. Para que nos entendamos seria como se coloca la piel a un cuerpo humano.

Por lo general, crea y administra sus asignaciones de UV en una herramienta de modelado dedicada como 3d Max, Blender o similar, la misma herramienta que utiliza para crear la geometría de su malla estática (su modelo 3d). Sin embargo, el Editor Unreal ofrece algunas posibilidades para trabajar con los canales UV de sus modelos, descritos a continuación en esta página.

Los canales UV tienen dos propósitos principales en el motor:

Coordenadas de textura en materiales:  cuando crea un material que muestrea un mapa de textura y lo aplica a la superficie de una malla estática, puede usar un nodo Coordinación de textura (o Texcoord ) para especificar un canal UV. 

El material usa el mapeo entre coordenadas 2D y posiciones de vértice 3D contenidas en el canal UV seleccionado para determinar qué áreas de la textura se deben usar para sombrear qué triángulos en el modelo 3D.

Por ejemplo, el canal UV 0 en este plano simple de malla estática (que se muestra en la parte superior derecha de la siguiente imagen) muestra la forma más sencilla de mapear los dos triángulos de la malla (A y B) en el espacio de textura. 

Cuando utiliza este canal UV (establecido por la propiedad indice de coordenadas del nodo TexCoord), el material aplica todo el ancho y alto de una textura al plano.

Ejemplo mapeo de coordenadas en un canal UV y su efecto
Ejemplo mapeo de coordenadas en un canal UV y su efecto

Por otro lado, la imagen a continuación muestra el canal UV 1, que gira y distorsiona el mapeo entre los triángulos y el espacio de textura UV. Cuando se aplica la misma textura de imagen a la malla estática, cambia qué partes de la textura se aplican a qué partes de la malla estática.

Ejemplo mapeo de coordenadas en un canal UV diferente (modificado) y su efecto.
Ejemplo mapeo de coordenadas en un canal UV diferente (modificado) y su efecto.

Los triángulos en el mapeo UV pueden superponerse. Una superposición solo significa que la misma parte de la textura se aplica a varias partes de la geometría de malla estática 3D.

La U en «canal UV» se refiere al eje horizontal de la textura; la V se refiere al eje vertical. Las coordenadas de textura generalmente se mantienen entre 0 y 1, donde (0,0) representa la esquina inferior izquierda de la textura y (1,1) representa la esquina superior derecha. 

Sin embargo, esto no siempre es cierto. Por defecto, cuando un valor U o V excede 1 o está por debajo de 0, el Material se «enrollará» al otro lado de la textura. 

Por ejemplo, un valor V de 1.25 generalmente se trata como 0.25. Sin embargo, puede elegir sujetar estos valores en su Material, limitándolos a un valor mínimo de 0 y un valor máximo de 1 que seria lo ideal.

Mapas de luz : los canales UV también se utilizan para almacenar y aplicar mapas de luz. Un mapa de luz es un tipo especial de textura que almacena información de iluminación precalculada para mallas estáticas. 

Cuando tiene luces en su Nivel que tienen su configuración de Movilidad establecida en Estacionaria o Estática, y construye la iluminación para su Nivel, la herramienta Lightmass guarda la iluminación indirecta (y la iluminación directa para luces Estáticas) en texturas de mapa de luz, usando un canal UV para determinar el mapeo entre la geometría 3D de la malla estática y el espacio de textura 2D.

Osea Unreal por medio de Lightmass y un canal UV crea una suerte de textura en parte iluminada y en parte en sombra según corresponda y la aplica al objeto, como si fuera una nueva piel que establece como se ve respecto a la fuente de luz, esto hace que el motor en tiempo real no tenga que calcular la iluminación porque la misma ya es parte de los objetos (en vez de calcular la sombra cada vez, la calcula una sola vez y la pinta sobre los objetos, eso hace lightmass).

Si el mapeo UV es erróneo, entonces la luz y las sombras se verán mal, por ello es SUPER importante que el mapeo UV sea correcto.

Los canales UV utilizados para mapas de luz tienen que seguir algunas reglas especiales. Debido a que cada parte de un objeto generalmente recibe diferentes cantidades de iluminación, no hay dos triángulos en la malla que puedan solaparse en el espacio de textura 2D. 

Cada triángulo debe cubrir su propia área en la textura (no puede haber triángulos superpuestos). Además, todos los valores de coordenadas UV deben estar entre 0 y 1. Las texturas de mapa de luz no pueden «ajustarse» de la misma manera que las asignaciones de textura regulares.

Por estos motivos, los UV de mapas de luz se generan, o empaquetan, a partir de mapeos UV más simples.

Por ejemplo, el canal UV de mapeo de texturas de este pilar mapea la geometría de cada uno de los cuatro lados a las mismas áreas superpuestas de la textura. Cuando usa este canal UV para aplicar una textura a la geometría, cada uno de los lados usa las mismas partes de la textura. Osea el pilar se ve EXACTAMENTE igual de cualquiera de sus cuatro lados.

Correcto mapeo UV para aplicar una textura de concreto al pilar.
Correcto mapeo UV en el canal 1 para aplicar una textura de concreto al pilar.

Sin embargo, en el mapa de luz UV (lightmap) del objeto, cada lado debe cubrir su propia área única de espacio 2D porque no puede tener la misma iluminación en cada uno de sus lados, no seria real, necesitamos poder colocar o mapear sobre el objeto lo que pasa con la luz y las sombras en cada una de sus caras, por eso el mapa UV de la luz sera diferente:

Correcto mapeo UV en el canal 2 para aplicar una textura o mapeo de luz al pilar.

Cada malla estática en el motor de Unreal puede tener hasta siete canales UV diferentes, por lo que puede configurar múltiples formas diferentes de envolver texturas para diferentes materiales (o para diferentes nodos de muestreo de textura dentro de un solo material).

Canales UV en el editor de malla estática

En la interfaz de usuario de Static Mesh Editor, puede enumerar, visualizar y eliminar canales UV.

Listado de canales UV

Cuando tiene cualquier activo de malla estática abierto en el editor de malla estática, puede usar el botón UV en la barra de herramientas para enumerar todos los canales UV en uso por la malla estática actual. Para poder acceder a esta ventana simplemente haga doble clic sobre una Static Mesh en la carpeta Geometría.

Ventana que muestra los canales UV aplicados a una Static Mesh
Ventana que muestra los canales UV aplicados a una Static Mesh

Visualizando un canal UV

Seleccione cualquier canal UV en la lista para visualizar el mapeo de los triángulos de la malla en el espacio de textura 2D como una superposición en la ventana gráfica:

Observando el mapeo UV de un objeto segun el canal seleccionado, en este caso canal 1.
Observando el mapeo UV de un objeto segun el canal seleccionado, en este caso canal 1.

Seleccione Ninguno en la parte superior de la lista para ocultar la superposición UV.

Eliminar un canal UV

Cuando tiene un canal seleccionado en la lista, puede eliminarlo. Cada canal UV almacena coordenadas de textura para cada vértice como parte de la malla estática, por lo que puede guardar algo de memoria de tiempo de ejecución eliminando las asignaciones que no use.

Puede eliminar un canal UV seleccionado que no utiliza.
Puede eliminar un canal UV seleccionado que no utiliza.

Todos los demás canales UV que estaban presentes en la lista después del canal eliminado se mueven hacia arriba un punto para llenar el espacio vacío dejado por el canal eliminado. Si elimino el canal 1, el canal 2 pasara a ser el 1, quedando 0 y 1.

No puede eliminar un canal UV si su activo de malla estática está configurado para generar UV de mapa de luz, y el canal UV que ha seleccionado ya está en uso como el canal de origen o de destino para los UV de mapa de luz. Desactive la opción Configuración de compilación> Generar UV de mapa de luz ( Build Settings > Generate Lightmap UVs ) o cambie la Build Settings > Source Lightmap Index  y Build Settings > Destination Lightmap Index para apuntar a diferentes canales UV.

Crear mapeos UV

Cuando un material usa texturas como datos de origen para sus canales (como su color base, mapa normal, rugosidad, etc.), generalmente usa el mapeo UV del modelo para determinar qué partes de esas texturas se envuelven alrededor de qué partes de la geometría. 

Por lo tanto, cuando un modelo no tiene mapeos UV, o tiene mapeos UV mal diseñados, a menudo verá problemas visibles cuando intente usar un Material con textura. 

Por ejemplo, si el mapeo UV tiene muchas costuras: Lugares donde los triángulos adyacentes en la geometría de la malla no son adyacentes en el mapeo UV: la textura mostrará una junta visible en esas costuras. O, si su mapeo UV asigna áreas de espacio UV de manera desigual a los triángulos de la malla, de modo que los triángulos grandes en la malla se asignan a áreas pequeñas de la textura o viceversa, la textura se verá estirada o distorsionada en diferentes partes de la malla.

Para obtener los mejores resultados artísticos, siempre debe intentar crear las asignaciones de UV para sus objetos 3D en una herramienta de modelado dedicada. Sin embargo, esto no siempre es posible. 

Por ejemplo, cuando importa datos de algunos tipos de aplicaciones de modelado CAD en Unreal Engine, es posible que no pueda crear un mapeo UV de alta calidad en su aplicación fuente. Para estos casos, puede crear asignaciones de UV en el Editor de Unreal.

El Editor Unreal ofrece dos formas de crear asignaciones UV para una malla estática:

Configuración del proyecto (project setup): para utilizar cualquiera de los métodos de generación de canales UV descritos a continuación, debe instalar el complemento de edición de polígonos ( Polygon Editing ) para su proyecto de Unreal Engine.

Opción 1: desenvolver la geometría de malla

En este enfoque, los triángulos que componen su geometría de malla estática se despliegan y aplanan automáticamente. El área de superficie de los triángulos se ajusta automáticamente para preservar la adyacencia de los triángulos vecinos, y las costuras se introducen en cualquier lugar donde el ángulo entre las superficies adyacentes cruza un umbral establecido.

Para desenvolver una malla estática en un nuevo mapeo UV:

  1. Elija la malla estática que desea desenvolver y realice una de las siguientes acciones:
    • Haga clic derecho en su malla estática en el Navegador de contenido (Content Browser) y seleccione Desenvolver UV (Unwrap UV) en el menú contextual.
Hacer un Unwrap UV automatico en Unreal Engine 4
Hacer un Unwrap UV automatico en Unreal Engine 4

Abra la malla estática que desea generar en el editor de malla estática. Luego, desde la barra de herramientas del editor de malla estática, seleccione UV> Desenvolver UVs ( UV > Unwrap UVs ).

Esta ventana muestra como hacer un Unwrap UV desde el editor de Malla Estatica.
Esta ventana muestra como hacer un Unwrap UV desde el editor de Malla Estatica.

Si no ve ninguna de las opciones del menú, asegúrese de haber habilitado el complemento de edición de polígonos para su proyecto.

  1. Configure los parámetros para controlar los resultados del desenvolvimiento:
Controlar y generar Unwrap UV en Unreal Engine 4
Controlar y generar Unwrap UV en Unreal Engine 4
AjusteDescripción
Channel SelectionDetermina cómo el proceso de Unwrap elige en qué canal guardar la nueva asignación UV.

Configuración automática ( Automatic Lightmap Setup ) del mapa de luz : Guarda el mapeo UV en el canal que está configurado para esta malla estática como la fuente de los UV de mapa de luz, luego genera nuevos UV de mapa de luz a partir del nuevo mapeo UV.

Primer canal vacío ( First Empty Channel ): guarda el resultado del Unwrap en el primer canal UV vacío en la malla estática.

Especificar canal ( Specify Channel ): elija esta opción para especificar un canal en la configuración del canal UV donde guardar el Unwrap.
UV ChannelCuando Channel Selection se establece en  Specify Channel, use esta configuración para determinar el índice del canal UV en el que se guarda el Unwrap con el mapeo UV.
Angle ThresholdDetermina el ángulo máximo entre dos caras adyacentes para que esas caras permanezcan conectadas después de desenvolver. Elevar este valor minimiza el número de «islas» UV separadas, manteniendo más triángulos conectados a sus vecinos y reduciendo el número de costuras que pueden causar roturas en el mapeo de texturas. Sin embargo, esto también puede introducir más distorsión en las texturas envueltas, ya que los triángulos pueden necesitar un cambio de tamaño más agresivo en el espacio 2D para permanecer conectados a sus vecinos.
  1. Haz clic en Continuar .

Opción 2: proyectar geometría de malla en un canal UV

Puede proyectar la geometría 3D de su malla estática en el espacio de textura 2D utilizando un volumen de proyección: un plano, un cuadro o una esfera. En este enfoque, cada cara de su malla estática se proyecta hacia afuera sobre las caras del volumen de proyección, luego el volumen de proyección se desenvuelve en el espacio de textura 2D.

Actualmente, esta función solo maneja la proyección de la malla 3D a 2D, no las capacidades completas de edición de proyección que se encuentran en una herramienta de modelado y texturizado con todas las funciones.

  1. Abra la malla estática que desea generar en el editor de malla estática. Por ejemplo, haga doble clic en el activo de malla estática en el navegador de contenido .
  2. En la barra de herramientas del editor de malla estática, seleccione UV> Generar UV. Si no ve esta opción de menú, asegúrese de habilitar el complemento de edición de polígonos para su proyecto.
  3. Verá aparecer el panel Generar UV , que ofrece un conjunto de controles que lo ayudan a controlar los resultados de la proyección UV.
Ventana de configuración en Unreal Generar UV
Ventana de configuración en Unreal Generar UV

También verá un volumen verde aparecer alrededor de su malla estática en la ventana gráfica, con un manipulador estándar de Unreal Editor.

Si el volumen y el manipulador no aparecen al principio, active el botón Show Gizmo en la parte inferior del panel Generte UV .

  1. En la configuración Tipo de proyección (Projection Type) , elija el volumen que mejor se adapte a las dimensiones de su malla estática.
  2. Ajuste el tamaño, la posición y la rotación del volumen para que coincida con la extensión de su malla estática. Para hacer esto, puede usar el manipulador en la ventana gráfica o los campos de texto en el panel Generte UV. También puede usar el botón Ajustar (Fit) para que el volumen se ajuste a la extensión de la geometría de malla estática automáticamente como un buen punto de partida.
  3. En la configuración del Canal de destino ( Target Channel ), establezca el índice del canal donde desea guardar el mapeo UV proyectado.

La mayoría de los materiales obtienen coordenadas de textura del canal cero. Si está generando un mapeo UV para mejorar la forma en que las texturas se mapean alrededor de su geometría de malla estática, generalmente querrá establecer en cero este campo.

  1. Haga clic en Aplicar (Apply) para generar el mapeo UV y guardarlo en el canal objetivo en la malla estática.

La siguiente tabla describe todos los ajustes en el panel Generate UV :

AjusteDescripción
Proyection TypeEl volumen al que se proyecta la geometría de malla estática.
SizeLas dimensiones del volumen de proyección.
PositiónLa posición del volumen de proyección con respecto al punto de pivote de la malla estática.
RotatiónLa rotación del volumen de proyección con respecto al punto de pivote de la malla estática.
UV Tilling ScaleLa escala de la proyección en el espacio UV. Los valores más grandes hacen que la proyección sea más grande en el espacio de textura, lo que hace que los detalles de la textura parezcan más pequeños cuando se envuelven alrededor de la superficie de la malla.
UV OffsetControla la colocación de la proyección en el espacio de textura 2D. Los valores más pequeños en el eje X mueven la proyección hacia la izquierda en el mapeo UV; valores mayores mueven la proyección hacia la derecha. Los valores más pequeños en el eje Y mueven la proyección hacia arriba en el mapeo UV; valores mayores mueven la proyección hacia abajo.
Target ChannelEl índice del canal UV donde se guardará la proyección. Este no puede ser el mismo canal que el que está utilizando el editor de malla estática para almacenar los UV de mapa de luz generados. Si el canal de destino ya contiene datos, el Editor solicitará confirmación antes de continuar.
Show GizmoAlterna la representación del volumen de proyección y el artilugio del manipulador en la ventana gráfica.
ApplyGenera la proyección UV según la configuración anterior y guarda el resultado en el canal de destino .
FitHace que el tamaño del volumen de proyección encierre la geometría completa de la malla estática.

Te puede interesar

Por favor recuerde que si esta informacion le pareció útil puede agradecer dejando un comentario y compartiendo esta pagina con amigos o colegas. Así mismo lo invito a ver el curso gratuito de Unreal Engine 4 en mi canal de Youtube 3d4every1 y suscribirse al mismo si le parece interesante.

Temas relacionados que pueden interesarte:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *