Compartir a través de


Materiales de color

Los materiales de color son uno de los tipos de material admitidos en Azure Remote Rendering. Se usan para mallas que no deben recibir ningún tipo de iluminación, sino que siempre aparecen con el brillo completo. Este podría ser el caso de los materiales "brillantes", como los paneles de automóviles, las bombillas o los datos que ya incorporan iluminación estática, como los modelos obtenidos mediante fotogrametría.

Los materiales de color tienen una representación más eficiente que los materiales de PBR debido a su modelo de sombreado más sencillo. También admiten diferentes modos de transparencia.

Propiedades de material de color

Las siguientes propiedades de material se exponen en la API en tiempo de ejecución, por ejemplo, en la clase ColorMaterial de C# o en la clase ColorMaterial de C++, respectivamente.

  • ColorFlags: las marcas de características varias se pueden combinar en esta máscara de bits para habilitar las siguientes características:

    • UseVertexColor: si la malla contiene colores vertex y esta opción está habilitada, el color vertex de la malla se multiplica en AlbedoColor y AlbedoMap. De forma predeterminada UseVertexColor está deshabilitado.
    • DoubleSided: si el valor de doble cara está establecido en true, los triángulos con este material se representan, aunque la cámara apunte a sus caras posteriores. Esta opción está deshabilitada de manera predeterminada. Consulte también Single-sided rendering.
    • AlphaClipped: habilita recortes fijos por píxel, en función del valor alfa que se encuentra por debajo del valor de AlphaClipThreshold (más adelante puede encontrar más información). Esto también se puede usar en materiales opacos.
    • TransparencyWritesDepth: si la marca TransparencyWritesDepth se establece en el material y el material es transparente, los objetos que usen este material también contribuirán al búfer de profundidad final. Consulte la propiedad de material de color ColorTransparencyMode en la sección siguiente. La habilitación de esta característica se recomienda si el caso de uso necesita una reproyección en fase más tardía más plausible de escenas completamente transparentes. En el caso de escenas transparentes u opacas mixtas, este valor puede presentar artefactos de reproyección o un comportamiento de reproyección improbable. Por esta razón, la configuración predeterminada y recomendada para el caso de uso general es deshabilitar esta marca. Los valores de profundidad escritos se toman de la capa de profundidad por píxel del objeto más cercano a la cámara.
    • FresnelEffect: esta marca de material habilita el efecto Fresnel aditivo en el material correspondiente. La apariencia del efecto se rige por los otros parámetros de Fresnel, FresnelEffectColor y FresnelEffectExponent, que se explican a continuación.
  • AlbedoColor: este color se multiplica con otros colores, como AlbedoMap o vertex. Si el elemento transparency está habilitado en un material, el canal alfa se usa para ajustar la opacidad. En este contexto, 1 significa totalmente opaco y 0, completamente transparente. El color de albedo predeterminado es blanco opaco.

    Nota:

    Dado que los materiales de color no reflejan el entorno, un material de color completamente transparente se vuelve invisible. Esto es diferente para los materiales de PBR.

  • AlbedoMap: una textura bidimensional para los valores de albedo por píxel.

  • AlphaClipThreshold: si la marca AlphaClipped se establece en la propiedad ColorFlags, no se dibujarán los píxeles en los que el valor alfa de albedo sea inferior al valor de AlphaClipThreshold. El recorte alfa se puede usar incluso sin habilitar la transparencia y se representa mucho más rápidamente. Sin embargo, los materiales recortados alfa se siguen representando más lentamente que los materiales completamente opacos. De forma predeterminada, el recorte alfa está deshabilitado.

  • TexCoordMode: define el modo que se usa para generar coordenadas de textura para la textura de albedo. Este modo se omite si este material no usa una textura. De manera predeterminada, las coordenadas de textura se capturan de los flujos de vértices de entrada de la malla (modo TextureCoordinateGenerationMode.SourceUv0 o TextureCoordinateGenerationMode.SourceUv1) y, a continuación, se transforman mediante TexCoordScale y TexCoordOffset. Al configurar un material mediante código, este modo también se puede establecer en TextureCoordinateGenerationMode.PlanarObjectSpace o TextureCoordinateGenerationMode.PlanarWorldSpace para generar las coordenadas como la distancia del vértice a dos planos 3D configurables, TexCoordPlaneU y TexCoordPlaneV. Esto se conoce como "asignación de textura plana".

  • TexCoordScale y TexCoordOffset: para las coordenadas de textura de la malla de origen, se puede aplicar una transformación lineal adicional. la escala se multiplica en las coordenadas de textura UV y se le agrega el desplazamiento. Se puede usar para ajustar y desplazar las texturas. La escala predeterminada es (1, 1) y el desplazamiento es (0, 0).

  • TexCoordPlaneU y TexCoordPlaneV: para los modos de asignación plana, definen los planos de textura para la coordenada U y la coordenada V, respectivamente. Los planos se definen en forma normal estándar (A,B,C,D), por lo que una coordenada se calcula como t = Ax + By + C*z + D, donde (x,y,z) es la posición del vértice en el espacio del mundo o del objeto.

  • FresnelEffectColor: el color de Fresnel utilizado para este material. Solo es importante si se ha establecido la marca del efecto Fresnel en este material (consulte más arriba). Esta propiedad controla el color base del brillo de Fresnel (consulte una explicación completa en Efecto Fresnel). Actualmente, solo son importantes los valores del canal RGB y se omitirá el valor alfa.

  • FresnelEffectExponent: el exponente de Fresnel utilizado para este material. Solo es importante si se ha establecido la marca del efecto Fresnel en este material (consulte más arriba). Esta propiedad controla la distribución del brillo de Fresnel. El valor mínimo 0,01 provoca que el brillo se aplique por todo el objeto. El valor máximo de 10,0 limita el brillo solo a los bordes visibles más oblicuos.

  • VertexMix: este valor entre 0 y 1 especifica en qué medida el color vertex de una malla contribuye al color final. En el valor predeterminado de 1, el color del vertex se multiplica por completo en el color albedo. Con un valor de 0, los colores de los vertex se omiten por completo.

  • ColorTransparencyMode: al contrario que los materiales de PBR, los materiales del color distinguen entre diferentes modos de transparencia:

    • Opaque: el modo predeterminado deshabilita la transparencia. Sin embargo, el recorte alfa todavía es posible y, si es suficiente, es la opción preferible.
    • AlphaBlended: este modo es similar al modo de transparencia para los materiales de PBR. Debe usarse para los materiales transparentes, como el cristal.
    • Additive: este modo es el modo de transparencia más sencillo y eficaz. La contribución del material se agrega a la imagen representada. Este modo se puede usar para simular objetos brillantes (pero transparentes, igualmente), como los marcadores que se usan para resaltar objetos importantes.

Nota:

Aunque AlbedoColor y FresnelEffectColor tienen el mismo rango de valores aceptado que para los materiales PBR, sus canales se fijarán eficazmente a [0; 1] en Materiales de color.

Reemplazos de material de color durante la conversión

Un subconjunto de propiedades de material de color se puede reemplazar durante la conversión del modelo a través del archivo de invalidación de material. En la tabla siguiente se muestra la asignación entre las propiedades en tiempo de ejecución documentadas anteriormente y el nombre de propiedad correspondiente en el archivo de reemplazo:

Nombre de propiedad de material Nombre de propiedad en el archivo de reemplazo
ColorFlags.AlphaClipped alphaClipEnabled
ColorFlags.UseVertexColor useVertexColor
ColorFlags.DoubleSided isDoubleSided
ColorFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
ColorTransparencyMode transparent
AlphaClipThreshold alphaClipThreshold

Documentación de la API

Pasos siguientes