Aunque se puede usar cualquier material aleatorio con el actor Terreno, el sistema de materiales dentro de Unreal Engine 5 (UE5) proporciona algunos nodos de material específicos para el terreno que pueden ayudar a mejorar las texturas de tu terreno. En este documento, explicamos cómo funcionan estos nodos de material y cómo puedes usarlos en los materiales de tu terreno.
Para usar los materiales con terrenos, los modificas de la misma manera en que modificarías otros materiales, en el editor de materiales.
Ordenamiento y pesos de las capas
Los terrenos usan la mezcla de capas en lugar de la mezcla de alfas, de modo que los factores de mezcla para todas las capas en cualquier lugar sumarán 1.0. La mezcla de alfas es útil porque no depende del orden, así que puedes pintar cualquier capa en cualquier momento. Además, cuando usas la mezcla de alfas, el peso de la capa alfa aumenta, mientras que el peso del resto de las capas disminuye.
Sin embargo, la desventaja de usar la mezcla de alfas es que, cuando una capa se pinta al 100%, el valor del peso de todas las demás capas será 0%. Esto se muestra al usar la herramienta de pintura para quitar una capa que ya está en 100%. Dado que las demás capas están en 0%, la herramienta no tiene nada disponible para remplazar la capa al 100% que estás eliminando, de modo que parece como si la capa no se hubiese cambiado.
Nodos de material específicos del terreno
Dentro del editor de materiales, hay seis nodos específicos que se pueden usar con el sistema de terreno. Puedes encontrar todos estos nodos en el menú Paleta, bajo la categoría Terreno.
Haz clic en la imagen para ampliarla.
Nodo de mezcla de capas de terreno
El nodo LandscapeLayerBlend te permite mezclar múltiples texturas o redes de materiales para poder usarlas como capas de terreno. LandscapeLayerBlend usa un array para almacenar información sobre las capas de terreno. Para añadir capas a este array, selecciona el ícono del signo de más (+).
Haz clic en la imagen para ampliarla.
Cuando agregas varias capas al nodo LandscapeLayerBlend, los nombres de las capas se completan en el nodo LandscapeLayerBlend.
Haz clic en la imagen para ampliarla.
| Número | Propiedad | Descripción |
|---|---|---|
| 1 | Capas | La lista de capas presentes en el nodo. Puedes agregar capas haciendo clic en el ícono del signo de más ( |
| 2 | Capas adicionales | Así lucen las capas adicionales cuando están retraídas. |
| 3 | Nombre de capa | El nombre único que le das a la capa. El nombre de capa corresponde al nombre de capa que se usa en el modo de pintura en la ventana de la herramienta de terreno. |
| 4 | Tipo de mezcla | LB_AlphaBlend, LB_HeightBlend o LB_WeightBlend. Consulta los tipos de mezcla de capas en esta página. |
| 5 | Vista preliminar de peso | Este es el valor del peso de la capa para previsualizar la mezcla en el editor de materiales. |
| 6 | Entrada de capa const. | Se usa para suministrar un valor numérico como un color en caso de que no quieras usar una textura. Se utiliza principalmente para hacerle debugging a una capa si hay un problema. |
| 7 | Entrada de altura const. | Se usa para suministrar un valor numérico como una altura en caso de que no quieras usar una textura. |
La siguiente tabla detalla las entradas y salidas del nodo Mezcla de capas.
Haz clic en la imagen para ampliarla.
| Número | Elemento | Descripción |
|---|---|---|
| 1 | Capa LayerName | Cada capa agrega una entrada para que se mezcle con la capa. Esta entrada solo está disponible después de que se agregan capas y se les asigna un nombre en el panel de detalles. |
| 2 | Altura de LayerName | Aquí es donde suministras un mapa de altura para mezclar. Esta entrada solo es visible en capas con la propiedad Tipo de mezcla establecida en LB_HeightBlend. |
| 3 | Salida sin etiquetar | El resultado de las capas mezcladas. |
Cómo mezclar capas
Al usar ciertas combinaciones de modos de mezcla de capas, podrías terminar con manchas negras sobre todo el terreno donde convergen diferentes capas. Este problema es especialmente prevalente al usar el modo LB_HeightBlend para múltiples capas de terreno. LB_HeightBlend funciona modulando el factor de mezcla, o peso, para la capa que usa el valor de altura especificado. Cuando hay varias capas pintadas en un área y todas tienen un tipo de mezcla LB_HeightBlend, es posible que todas las capas pintadas en un área en particular tengan simultáneamente un valor de altura 0, de modo que el factor de mezcla deseado para cada capa se hace 0.
Dado que no hay un orden implícito o explícito, el resultado serán manchas negras porque ninguna capa tendrá contribución alguna en esa área. La situación es peor cuando mezclas un mapa de normal, ya que resulta en un valor de normal de (0,0,0), que no es válido y causará problemas de renderización con la iluminación. La solución a este problema es usar LB_AlphaBlend para una de las capas como en el ejemplo de abajo.
En la imagen izquierda, todas las capas son LB_HeightBlend, lo que ocasiona que algunas áreas sean negras. A la derecha, la capa roja de "1" se cambió para que usara LB_AlphaBlend, lo que resolvió el problema.
Haz clic en la imagen para ampliarla.
Abajo hay un ejemplo de las propiedades del nodo Mezcla de capas de terreno para todas las capas que se están mezclando. Asegúrate de notar cómo la capa Suelo tiene establecido el modo de mezcla LB_AlphaBlend mientras que las demás capas tienen establecido el modo LB_HeightBlend. Esto es para evitar el problema mencionado anteriormente (las manchas negras donde convergen las capas).
Haz clic en la imagen para ampliarla.
Si necesitas borrar una capa, haz clic en la flecha desplegable que está a la derecha del número de elemento de la capa para abrir el menú y selecciona Borrar.
Haz clic en la imagen para ampliarla.
Nodo de coord. de capas de terreno
] El nodo LandscapeLayerCoords genera coordenadas de UV que se pueden usar para mapear redes de materiales con terrenos.
Haz clic en la imagen para ampliarla.
| Número | Propiedad | Descripción |
|---|---|---|
| 1 | Tipo de mapeo | El tipo ELandscapeCoordMappingType que especifica la orientación para usar al mapear el material (o la red) con el terreno. |
| 2 | Tipo de UV personalizado | El lugar del mapeo para usar en el terreno. El tipo CustomUVType genera las coordenadas de UV para mapear el material con el terreno según los valores de propiedad dados. |
| 3 | Escala de mapeo | Aplica un escalamiento uniforme a las coordinadas de UV. |
| 4 | Rotación de mapeo | Aplica la rotación, en grados, a las coordenadas de UV. |
| 5 | Pan [U] de mapeo | Aplica la compensación en la dirección de [U] a las coordenadas de UV. |
| 6 | Pan [V] de mapeo | Aplica la compensación en la dirección de [V] a las coordenadas de UV. |
| 7 | Salida sin etiquetar | Genera las coordenadas de UV para mapear el material con el terreno según los valores de propiedad dados. |
Nodo de cambio de capas de terreno
El nodo LandscapeLayerSwitch te permite excluir algunas operaciones de material cuando una capa en particular no está contribuyendo con una región del terreno. Esto te permite optimizar tu material al eliminar cálculos innecesarios cuando el peso de una capa en particular es de cero.
Haz clic en la imagen para ampliarla.
| Número | Propiedad | Descripción |
|---|---|---|
| 1 | Nombre de parámetro | El nombre único que le das al parámetro. |
| 2 | Uso de vista previa | Si se habilita, usa una vista previa. |
| 3 | LayerUsed | Cuando la región actual del terreno está usando la capa especificada en las propiedades del nodo. |
| 4 | LayerNotUsed | Cuando la región actual del terreno no está usando la capa y esta última tiene un peso de 0. |
| 5 | Salida sin etiquetar | Las entradas LayerUsed o LayerNotUsed, dependiendo de si la capa contribuye o no con la región en particular del terreno. |
Nodo de peso de capa de terreno
La expresión LandscapeLayerWeight permite que las redes de materiales se mezclen con base en el peso de la capa asociada obtenido del material de terreno. El peso de esta capa se usa como el valor alfa para mezclar las dos redes de entrada.
Haz clic en la imagen para ampliarla.
| Número | Propiedad | Descripción |
|---|---|---|
| 1 | Nombre de parámetro | El nombre único que le das al parámetro. |
| 2 | Vista preliminar de peso | El peso que se usará para la vista previa en el editor de material. |
| 3 | Base const. | Puedes especificar un color base aquí que te gustaría que tuviera tu terreno. |
| 4 | Base | La red con la que se mezclará esta capa. Por lo general, es el resultado de cualquier mezcla de capas anterior, pero puede estar vacía si esta es la primera capa. |
| 5 | Capa | La red que se mezclará para crear esta capa. |
| 6 | Salida sin etiquetar | Genera el resultado de la mezcla entre las entradas Base y Capa según los pesos de capa de las capas involucradas. |
Nodo de máscara de visibilidad de terreno
El nodo LandscapeVisibilityMask elimina las partes visibles de tu terreno para que puedas crear agujeros en tu terreno para crear cuevas, por ejemplo.
Haz clic en la imagen para ampliarla.
| Número | Propiedad | Descripción |
|---|---|---|
| 1 | Salida sin etiquetar | Genera las propiedades de la máscara de visibilidad. |
Asegúrate de que la salida esté conectada con el espacio Máscara de opacidad de tu material y que el Modo de mezcla de materiales esté configurado en Enmascarado. De lo contrario, es posible que el nodo no funcione correctamente.
Haz clic en la imagen para ampliarla.
Tipos de mezcla de capas de terreno
El nodo de material Mezcla de capas de terreno tiene tres modos de mezcla diferentes para escoger. Cada tipo de mezcla de capas se usa cuando quieres alcanzar un resultado diferente.
| Tipo de mezcla | Función |
|---|---|
| Mezcla de peso LB | Úsalo si importarás capas desde un programa externo, como World Machine, o si quieres pintar cualquier capa independiente de las demás sin preocuparte por el orden de la capa. |
| Mezcla de alfa LB | Úsalo si quieres pintar en detalle y tener un orden de capas definido. Por ejemplo, pintar nieve sobre roca o césped los ocluirá, pero borrar la nieve revelará la roca y el césped debajo de ella. |
| Mezcla de altura LB | Es lo mismo que LB_WeightBlend, pero también añade detalles a la transición entre las capas de acuerdo con un mapa de altura. Por ejemplo, esto permite que aparezca tierra en los espacios entre las rocas en el punto de transición de las capas, en lugar de solo hacer una mezcla suave entre roca y tierra. |
Este es un ejemplo de la mezcla de altura LB en acción. Como puedes ver, la tierra aparece en los espacios entre las rocas en el punto de transición de las capas. De esta forma, obtienes una buena transición donde convergen las capas.
Información técnica de la mezcla de capas de terreno
En esencia, estos nodos de capa se comportan como un nodo de parámetro de cambio estático, que te permite pasar de usar una parte del material a usar otra. A partir del material de terreno principal se crea una propia MaterialInstanceConstant para cada componente que solo se aplica a ese componente. Si una capa en particular no se usa en un componente de terreno específico, el subárbol de nodos conectados con la capa se desechará, lo que reduce la complejidad general del material y le permite al material aplicado al terreno tener cualquier cantidad de muestras de textura, siempre y cuando la cantidad de muestras usadas en cualquier componente individual nunca exceda el máximo establecido por las especificaciones del modelo de sombreador (16 para SM 3.0).
Esto significa que es posible establecer un material principal que contenga todas las texturas o redes usadas en el terreno, lo que puede terminar en una colección muy compleja de redes mientras todavía se mantienen los materiales finales aplicados a los componentes dentro de los parámetros permitidos por el hardware.
Cualquier red de expresiones de materiales se puede conectar con las entradas de la capa en lugar de con una simple TextureSample. Esto permite hacer efectos más complejos, como la transición desde texturas detalladas hacia macrotexturas más grandes según la distancia desde la que se esté viendo la capa.
Teselado y desplazamiento
Los canales Multiplicadores de teselado y Desplazamiento de mundo del material se pueden usar en conjunto con los terrenos para proporcionar detalles adicionales y deformación cuando el terreno está cerca de la cámara. Estos canales funcionan exactamente como lo harían con cualquier otro material, y la mezcla de capas se puede usar con ellos así como con Color base, Normal o cualquier otro canal. El terreno únicamente renderizará el teselado por hardware en el nivel de detalle (LOD) más alto, que se desvanecerá a medida que el terreno se acerque al segundo LOD. Los LOD subsecuentes ya no tendrán habilitado el teselado, lo que mejorará significativamente el rendimiento cuando se active el teselado para el desplazamiento en tu terreno.
Estas funciones solo se pueden usar con DirectX 11 activado. De por sí, se deberían usar como efectos de pulido secundarios, a menos que te centres específicamente en el hardware de DirectX 11. Puedes leer más sobre cómo habilitar y usar el teselado en tu proyecto revisando la página Multiplicador de teselado.
En la imagen de arriba, el LOD más alto (blanco) se renderiza con el teselado habilitado, mientras que los demás LOD (colores) se renderizan sin teselado.
Materiales de terreno en móviles
Los terrenos móviles ya no están limitados a solo tres capas de terreno. Aunque tres sigue siendo un caso optimizado, se puede usar cualquier cantidad de capas siempre y cuando haya suficientes muestrarios de textura. La asignación de capas de terreno ahora recibe el nodo de material "Cambio de nivel de función", lo que permite que un solo material de terreno de PC o consola también tenga una versión móvil. La siguiente imagen muestra cómo luce el terreno usado en las versiones para PC y consola de Fortnite Battle Royale cuando se usa en dispositivos móviles.
Cómo usar el mezclado de capas
La capacidad para mezclar varias redes de texturas y materiales en capas de terreno pintables es la base para aplicar texturas a terrenos. Para mezclar capas, puedes usar varios nodos LandscapeLayerWeight o de uno a dos nodos LandscapeLayerBlend dependiendo de si estás usando un mapa de normal o no.
Cómo usar los nodos de peso de capa de terreno
Establecer y usar los nodos LandscapeLayerWeight es un proceso bastante sencillo que se resumirá abajo.
Todos los nombres de las capas deben ser únicos, así que te recomendamos nombrar tus capas con un nombre descriptivo que indique lo que contiene la capa. Esto te ayudará a recordar dónde está el contenido en tu capa y a navegar más rápido a través de las capas.
-
En el editor de material, agrega un nodo LandscapeLayerWeight al gráfico del material. Por defecto, su nombre de parámetro será "None".
Haz clic en la imagen para ampliarla.
- En el panel de detalles, cambia el nombre de parámetro por un nombre descriptivo para la capa, como "Roca". Después de ingresar un nombre de parámetro, se actualizará en el propio nodo.
Haz clic en la imagen para ampliarla.
-
Agrega nodos LandscapeLayerWeight adicionales, hasta que haya uno para cada capa que quieres que tu material tenga. En este ejemplo, usaremos solo dos nodos LandscapeLayerWeight.
-
Añade y conecta Muestras de textura, u otra expresión de red de materiales, con tus nodos LandscapeLayerWeight.
-
Añade un nodo LandscapeLayerCoords, cambia su teselado de UV a lo que quieras y conéctalo con los nodos Muestra de textura.
-
Arrastra el pin de salida de cada nodo de capa al pin base del siguiente nodo de capa para conectarlos con una línea (sin conectar el pin base del primer nodo de capa).
-
Arrastra desde el pin de salida del nodo de capa final hasta la entrada Color base del nodo base del material.
Al terminar, deberías tener algo parecido al siguiente ejemplo usando nodos LandscapeLayerWeight:
Haz clic en la imagen para ampliarla.
Puedes previsualizar los efectos de diferentes pesos en el material cambiando la propiedad Vista preliminar de peso de los nodos LandscapeLayerWeight.
Cómo usar los nodos de mezcla de capas de terreno
Como una alternativa a mezclar capas manualmente con el nodo LandscapeLayerWeight, el nodo LandscapeLayerBlend mezcla múltiples capas usando la mezcla de alfas o la mezcla de alfas con una compensación basada en la altura. La compensación basada en la altura le permite a una capa mezclarse con otras capas en función de una entrada de mapa de altura.
-
En el editor de materiales, añade un nodo LandscapeLayerBlend.
-
En el panel de detalles, junto a Capas, haz clic en el ícono del signo de más (
) para agregar una capa.Haz clic en la imagen para ampliarla.
- Expande la capa para ver sus propiedades.
-
Cambia el nombre de capa a un nombre descriptivo para la capa, como "Nieve".
Haz clic en la imagen para ampliarla.
-
Determina si quieres que la capa se mezcla según el alfa o según la altura, y establece el tipo de mezcla en consecuencia.
-
Agrega tantas capas adicionales como quieras para tu material de terreno. Cámbiales el nombre y establece sus tipos de mezcla adecuadamente.
-
Conecta la salida del nodo LandscapeLayerBlend con la entrada Color base del nodo base de tu material.
-
Agrega nodos de muestra de textura y conecta sus salidas principales con las entradas de capa de los nodos LandscapeLayerBlend. Alternativamente, puedes crear una red de materiales más compleja y conectarla con la entrada capa de mezcla de capas de terreno. Para cualquier capa mezclada según la altura, conecta la salida de alfa de la muestra de textura con la entrada Altura de LandscapeLayerBlend.
Cuando termines, la red de tu material de terreno lucirá de la siguiente manera:
Haz clic en la imagen para ampliarla.
Puedes previsualizar los efectos de diferentes pesos en el material cambiando la propiedad Vista preliminar de peso de los nodos LandscapeLayerBlend.
Cómo crear materiales de agujero de terreno
Puedes crear agujeros en tu terreno en el modo de manejo, pero solo puedes hacerlo borrando componentes completos del terreno de a uno. Para evitar esto, puedes usar un material de agujero de terreno para ocultar la visibilidad y colisión de una ubicación determinada en tu terreno. Esto es genial si quieres hacer algo como la entrada de una cueva en el interior de una montaña.
Puedes usar el mismo material para tu material de terreno y tu material de agujero de terreno, pero ten en cuenta que los materiales que usan máscaras de opacidad tienden a ser más costosos en cuanto al rendimiento que los materiales que no lo hacen. Por esta razón, tienes la opción de crear un material de agujero de terreno separado.
-
Abre el editor de material y, en el panel de detalles, pon el modo de mezcla en enmascarado.
Haz clic en la imagen para ampliarla.
- Luego, añade un nodo LandscapeVisibilityMask al gráfico del material y conecta sus salidas con la entrada de la máscara de opacidad.
Haz clic en la imagen para ampliarla.
-
Después de que el material se haya compilado, es momento de asignarlo al terreno para poder usarlo. Esto se puede hacer en la sección Material de agujero de terreno en el panel de detalles.
Haz clic en la imagen para ampliarla.
-
Ahora puedes armar el resto de tu material como lo harías normalmente; al completarlo, deberías tener algo como esto.
Haz clic en la imagen para ampliarla.
Ahora deberías poder enmascarar y desenmascarar la visibilidad de tu terreno, como en el video de abajo.
Para obtener información sobre cómo usar las herramientas de pintura para crear un agujero de terreno, consulta Cómo usar las máscaras de opacidad para crear un agujero.
Cómo asignar materiales a los terrenos
Después de crear un material para un terreno, debes asignar el material a un actor de terreno en tu nivel para usar el material.
-
Encuentra el material de terreno que quieres usar en el explorador de contenido.
-
Selecciona el terreno en el visor o en el esquematizador de mundo.
-
En el panel de detalles del editor de nivel del terreno, en la sección Terreno, junto a Material de terreno, haz clic en la flecha de asignación (
) para asignar el material seleccionado.Haz clic en la imagen para ampliarla.
Cómo asignar un material de agujero de terreno a un terreno
Puedes asignar un material diferente para que actúe como el material de agujero de terreno, que es un material con ajustes de opacidad específicos.
Consulta la sección sobre materiales de agujero de terreno para conocer información general sobre los materiales de agujero. Para obtener más información sobre las máscaras de opacidad, consulta Cómo usar máscaras de opacidad para crear un agujero.
-
Encuentra el material de agujero terreno que quieres usar en el explorador de contenido y selecciónalo.
-
Selecciona el terreno en el visor o en el esquematizador de mundo.
-
En el editor de niveles, ve a Detalles > Terreno > Material de agujero de terreno. Selecciona la flecha (
) para asignar el material seleccionado.Haz clic en la imagen para ampliarla.