Renderizado Basado en Física (PBR) las texturas te permiten representar sombreado y iluminación realistas utilizando múltiples tipos de imágenes de textura, o mapas, en un solo objeto. La combinación de múltiples mapas de textura puede simular con más precisión el color, la rugosidad y la reflectividad en cualquier entorno de iluminación y puede realzar los elementos visuales de tus activos y entorno.


Existen varias aplicaciones y flujos de trabajo disponibles para crear texturas PBR. Puedes usar estas durante las fases de modelado y texturizado de la creación de objetos 3D personalizados, siempre que Roblox Studio admite los mapas de textura específicos que estás utilizando.
Esta guía proporciona instrucciones sobre configuración de tus objetos de malla para usar mapas de textura PBR y describe casos de uso comunes y mejores prácticas para los mapas de textura PBR admitidos por Roblox. Cuando crees tus propias superficies, consulta referencias de materiales para obtener valores de material comunes, comparaciones de imágenes y ejemplos de ropa.
Habilitar apariencia de superficie
Puedes agregar texturas PBR a cualquier MeshPart añadiendo un objeto SurfaceAppearance que sobrescribe la textura originalmente asignada. En general, no puedes modificar las propiedades de SurfaceAppearance mediante scripts durante un juego porque el motor requiere cierto preprocesamiento para mostrar estos gráficos. Al igual que al agregar una textura básica, cada mapa de imagen de textura debe apuntar al ID de activo de imagen cargada correspondiente.
Para habilitar la apariencia de superficie para un MeshPart:
En la ventana de Explorer, coloca el cursor sobre el MeshPart y haz clic en el botón ⊕.
Inserta un SurfaceAppearance desde el menú contextual.

Cuando estés listo para agregar mapas de textura al objeto SurfaceAppearance, puedes hacer clic en cada propiedad del mapa en la ventana de Properties e ingresar un ID de activo.
Mapas de textura
Studio actualmente admite 4 tipos de mapas de textura PBR: color, normal, rugosidad y metallicidad. Cada uno de estos mapas corresponde a un aspecto importante de la apariencia superficial del objeto. Los mapas de textura solo cambian la apariencia visual y no afectan la geometría del objeto MeshPart.
Consulta los siguientes ejemplos para obtener un resumen de los mapas de textura admitidos por Roblox y recursos adicionales:
El ColorMap propiedad establece los datos de color de la superficie, incluida cualquier transparencia presente en el mapa. Consulta color (albedo) para obtener información adicional.



Color (albedo)
El color, o albedo, mapa determina el color de tu textura y consiste principalmente en información de color con poca o ninguna información de iluminación o textura. Para personalización adicional, también puedes agregar transparencia en tu textura de albedo añadiendo opacidad a tu mapa de imagen.
Modos alpha
Para objetos que requieren secciones parciales o completas de transparencia, como hierba, hojas, encaje o decalcomanías como suciedad o grunge, puedes usar varios modos alpha para aplicar transparencia a tu mapa de color. Si el formato de imagen de tu mapa de color admite canales alpha, puedes aplicar un mapa alpha en escala de grises donde 0.0 es transparente y 1.0 es opaco. De manera similar, al usar un formato de imagen como un .png, cualquier opacidad en el mapa de color se aplica como transparencia en el activo.
Puedes aplicar transparencia en dos comportamientos diferentes configurando los siguientes valores AlphaMode:
- Superposición — Superpone el ColorMap sobre el MeshPart.Color subyacente. Los mapas de color que usan el modo de superposición revelan el color base de la malla en cualquier lugar donde haya transparencia. Esta es la configuración predeterminada.
- Transparencia — Elimina la malla visible en función de la transparencia en el ColorMap. Esto renderiza la malla transparente y no revela el color original de la malla siempre que haya transparencia presente.
Opaco
Puedes usar Enum.AlphaMode.Opaque para ignorar por completo el canal alpha de ColorMap. En este caso, el valor alpha se supone que es 1 (completamente opaco).
El siguiente ejemplo demuestra cómo funciona el modo Opaque utilizando un objeto blanco como referencia:


Superposición
Puedes usar Enum.AlphaMode.Overlay para revelar secciones del color original de la malla. Dado que las áreas transparentes del mapa de color exponen el color subyacente, puedes diseñar un mapa de textura único que revele parcial o completamente la propiedad de Color de la malla para tonos de piel personalizados u otras situaciones con colores únicos.
El siguiente ejemplo demuestra cómo funciona el modo Overlay utilizando una esfera blanca como referencia:


El siguiente ejemplo utiliza el modo Overlay para personajes personalizados, revelando el tono de piel original del personaje:


Consulta tono de piel personalizado para obtener más detalles sobre la optimización de una superposición para la piel y aplicaciones similares.
Transparencia
Puedes usar el modo Enum.AlphaMode.Transparency para crear objetos complejos o extremadamente finos, como encajes o redes, eliminando partes visibles de la malla como una alternativa a esculpir la geometría de la malla. Dado que esto no afecta la geometría del objeto de la malla, permite crear objetos detallados sin el impacto en el rendimiento de un modelo de malla intrincado.
El siguiente ejemplo demuestra cómo una transparencia parcial y completa en este modo elimina visualmente secciones de la malla:



Existen dos resultados del modo Transparency, dependiendo de si el MeshPart.Transparency está configurado en 0 o al menos 0.02, aunque la precisión numérica puede resultar en valores pequeños como 0.01 activando la transparencia opaca.
- Cuando se usa alpha para recortar la forma de objetos mayormente opacos con bordes duros como follaje, tela de encaje y redes, establece el MeshPart.Transparency en 0. Cuando partes de la superficie son completamente opacas, el motor de Roblox puede renderizarlas con la oclusión adecuada basada en la profundidad. Las superficies opacas también suelen funcionar mejor con efectos basados en profundidad como DepthOfFieldEffect, refracción de vidrio y agua, y reflexión en agua.
- Cuando se usa alpha para agregar detalle a objetos semi-transparentes u objetos con gradientes suaves de transparencia, establece el MeshPart.Transparency en al menos 0.02. Esto mejora la calidad de la mezcla para objetos como ventanas sucias y plumas con bordes suaves, pero no funcionará con todos los efectos.
Máscara de tinte
Puedes usar el modo Enum.AlphaMode.TintMask para aplicar un tinte SurfaceAppearance.Color a áreas selectivas de una superficie. El tinte es más fuerte donde el canal alpha es completamente visible y no se aplica donde el canal alpha es transparente.

Tinte de color
Puedes aplicar un tinte a tu mapa de color modificando la propiedad SurfaceAppearance.Color. El tinte no afecta el rendimiento y puedes ahorrar memoria reutilizando un solo mapa de color con diferentes tintes. Usa el tinte de color para crear variaciones de bajo costo entre tus texturas PBR MeshPart o para modificar programáticamente los colores de superficie PBR en tiempo real.



El tinte SurfaceAppearance.Color se aplica como un multiplicador, por lo que la apariencia final es una función de Color3 (color de texel) multiplicado por SurfaceAppearance.Color. Esto significa que la creación de tu original SurfaceAppearance.ColorMap en colores de escala de grises cercanos al blanco crea el efecto de tinte más fuerte cuando se aplica esta propiedad.
El tinte solo se aplica al SurfaceAppearance.ColorMap y no a MeshPart.Color. Puedes seguir utilizando canales alpha al aplicar transparencia.
Cuando SurfaceAppearance.AlphaMode se establece en Overlay y hay un canal alpha presente, se revela el MeshPart.Color subyacente y el tinte SurfaceAppearance.Color solo se aplica al mapa de color SurfaceAppearance visible.
Cuando SurfaceAppearance.AlphaMode se establece en TintMask y hay un canal alpha presente, el canal alpha controla la cantidad de tinte SurfaceAppearance.Color. El tinte es más fuerte donde el canal alpha es completamente visible y no se aplica donde el canal alpha es transparente.

Normal
El normal, o superficie, mapa añade profundidad de textura a tu superficie y se comporta de manera similar a un mapa de altura. Como resultado, el efecto puede desvanecerse o intensificarse dependiendo del ángulo de visión y del entorno de iluminación. Cuando un mapa normal no está presente, el valor se establece en 0.0.
En la siguiente figura, puedes alternar entre la referencia de la malla y la referencia del mapa para comparaciones de los valores del mapa normal:



Los canales R, G y B de la imagen corresponden respectivamente a los componentes X, Y y Z del vector de superficie local. Una imagen uniforme de color [127, 127, 255] se traduce en un mapa normal completamente plano. Roblox solo admite mapas normales OpenGL formato - Espacio Tangente.
Los mapas normales afectan prominentemente la superficie visual de una malla y pueden acentuar costuras incómodas en tu textura. Siempre que sea posible, mantén ocultas las costuras de tus texturas para evitar problemas visuales con tu malla.
Rugosidad
Rugosidad, o microsuperficie, los mapas determinan cómo se dispersa la luz en la superficie de tu modelo. Cuando la rugosidad está en 0.0, la superficie no dispersa luz en absoluto, resultando en un reflejo y brillo mucho más agudos y brillantes en tu material. En 1.0, la luz y los reflejos se dispersan uniformemente sobre el modelo, resultando en una superficie mate menos reflectante.
La rugosidad puede afectar cuán reflectante es un objeto en diferentes ángulos, referido como el efecto Fresnel. Consulta fresnel para más detalles y mejores prácticas para mantener un comportamiento reflectante consistente.
La siguiente figura muestra comparaciones de varios valores del mapa de rugosidad:



Fresnel
Fresnel se refiere a la cantidad de reflexión de una superficie en referencia al ángulo de visión actual. El procesamiento de Fresnel de Studio apunta a la precisión física en el mundo real, aunque puedes obtener una contribución especular inesperada en ciertos ángulos incluso con superficies rugosas. En algunos casos, puedes compensar haciendo que tu mapa de rugosidad alrededor de 0.1 sea más rugoso para lograr una respuesta de iluminación consistente con tus materiales.
A pesar de que Roblox renderiza este efecto de iluminación de manera precisa, el brillo y la reflectancia de una superficie pueden no responder de manera consistente entre tu software de contenido de textura, como Substance Painter, y Studio. Consulta ejemplos de ropa para diferencias en la renderización entre aplicaciones.
Metallicidad
Metallicidad determina la reflectividad de una superficie. Los valores de metallicidad oscilan entre 0.0 y 1.0. Roblox establece el valor predeterminado en 0.0 si no hay un mapa de metallicidad presente.
Consulta la siguiente figura para comparaciones de varios valores del mapa de metallicidad:



Diferentes renderizadores PBR utilizan varios flujos de trabajo para procesar la reflectividad. Studio solo utiliza el flujo de trabajo de metallicidad, que determina si un material es un no metálico o un metálico, a veces referido como un aislante o conductor.
En la mayoría de los casos, deberías establecer este valor en 0.0 (no metálico) o 1.0 (metálico). Puedes usar valores de metallicidad parciales al crear superficies menos comunes con propiedades reflectantes moderadas, como el satén o la seda. Esta práctica puede simular sutilmente los reflejos en el material para resaltar el color del mapa de color/albedo en lugar de los colores reflejados en el entorno.

