Partilhar via


Materiais de cor

Os materiais de cor são um dos tipos de material suportados na Renderização Remota do Azure. Eles são usados para malhas que não devem receber nenhum tipo de iluminação, mas aparecem sempre com brilho máximo. Tal pode ser o caso de materiais «brilhantes», como painéis de instrumentos de automóveis, lâmpadas, ou de dados que já incorporam iluminação estática, como modelos obtidos através da fotogrametria.

Os materiais de cor são mais eficientes de renderizar do que os materiais PBR devido ao seu modelo de sombreamento mais simples. Também suportam diferentes modos de transparência.

Propriedades do material de cor

As seguintes propriedades de material são expostas na API de tempo de execução, por exemplo, na classe C# ColorMaterial ou na classe C++ ColorMaterial, respectivamente.

  • ColorFlags: Sinalizadores de recursos diversos podem ser combinados nesta máscara de bits para habilitar os seguintes recursos:

    • UseVertexColor: Se a malha contiver vertex cores e esta opção estiver ativada, a cor da vertex malha será multiplicada em e AlbedoMapAlbedoColor . Por padrão UseVertexColor , está desabilitado.
    • DoubleSided: Se a dupla face estiver definida como verdadeira, os triângulos com este material são renderizados mesmo que a câmara esteja a olhar para as suas faces traseiras. Por padrão, essa opção está desativada. Consulte também Single-sided rendering.
    • AlphaClipped: Permite recortes rígidos por pixel, com base no valor alfa estar abaixo do valor de AlphaClipThreshold (veja abaixo). Isso também funciona para materiais opacos.
    • TransparencyWritesDepth: Se a TransparencyWritesDepth bandeira estiver fixada no material e o material for transparente, os objetos que utilizam este material também contribuirão para o buffer de profundidade final. Consulte a propriedade ColorTransparencyMode do material da cor na próxima seção. A ativação desse recurso é recomendada se o seu caso de uso precisar de uma reprojeção de estágio final mais plausível de cenas totalmente transparentes. Para cenas mistas opacas/transparentes, essa configuração pode introduzir comportamento de reprojeção implausível ou artefatos de reprojeção. Por esse motivo, a configuração padrão e recomendada para o caso de uso geral é desabilitar esse sinalizador. Os valores de profundidade gravados são retirados da camada de profundidade por pixel do objeto mais próximo da câmera.
    • FresnelEffect: Esta bandeira de material permite o efeito de fresnel aditivo sobre o respetivo material. A aparência do efeito é regida pelos outros parâmetros FresnelEffectColor de fresnel e FresnelEffectExponent explicada abaixo.
  • AlbedoColor: Esta cor é multiplicada por outras cores, como as AlbedoMap vertex ou cores. Se a transparência é ativada em um material, o canal alfa é usado para ajustar a opacidade, com 1 significado totalmente opaco e 0 significado totalmente transparente. A cor padrão do albedo é branco opaco.

    Nota

    Como os materiais de cor não refletem o ambiente, um material de cor totalmente transparente torna-se invisível. Isso é diferente para materiais PBR.

  • AlbedoMap: Uma textura 2D para valores de albedo por pixel.

  • AlphaClipThreshold: Se o AlphaClipped sinalizador estiver definido na ColorFlags propriedade, todos os pixels em que o valor alfa do albedo for inferior ao valor de não serão desenhados AlphaClipThreshold . O recorte alfa pode ser usado mesmo sem permitir a transparência e é muito mais rápido de renderizar. No entanto, os materiais cortados alfa ainda são mais lentos de renderizar do que os materiais totalmente opacos. Por padrão, o recorte alfa está desativado.

  • TexCoordMode: Define o modo que é usado para produzir coordenadas de textura para a textura de albedo. Este modo é ignorado se este material não utilizar uma textura. Por padrão, as coordenadas de textura são buscadas nos fluxos de vértice de entrada da malha (modo TextureCoordinateGenerationMode.SourceUv0 ou TextureCoordinateGenerationMode.SourceUv1) e, em seguida, transformadas através TexCoordScale de e TexCoordOffset. Ao configurar um material através de código, este modo também pode ser definido para TextureCoordinateGenerationMode.PlanarObjectSpace ou TextureCoordinateGenerationMode.PlanarWorldSpace para gerar as coordenadas como a distância de vértice para dois planos TexCoordPlaneU 3D configuráveis e TexCoordPlaneV. Isso é conhecido como "mapeamento de textura plana".

  • TexCoordScale e TexCoordOffset: Para coordenadas de textura da malha de origem, uma transformação extra linear pode ser aplicada. A escala é multiplicada nas coordenadas de textura UV, o deslocamento é adicionado a ela. Pode ser usado para esticar e deslocar as texturas. A escala padrão é (1, 1) e o deslocamento é (0, 0).

  • TexCoordPlaneU e TexCoordPlaneV: Para os modos de mapeamento planar, estes definem os planos de textura para a coordenada u e a coordenada v, respectivamente. Os planos são definidos na forma normal padrão (A,B,C,D), de modo que uma coordenada é calculada como t = Ax + By + C*z + D, onde (x,y,z) é a posição do vértice em qualquer mundo ou espaço de objeto.

  • FresnelEffectColor: A cor fresnel utilizada para este material. Apenas importante quando a bandeira do efeito fresnel foi colocada neste material (ver acima). Esta propriedade controla a cor base do brilho fresnel (veja o efeito fresnel para uma explicação completa). Atualmente, apenas os valores do canal RGB são importantes e o valor alfa será ignorado.

  • FresnelEffectExponent: O expoente de fresnel utilizado para este material. Apenas importante quando a bandeira do efeito fresnel foi colocada neste material (ver acima). Esta propriedade controla a propagação do brilho fresnel. O valor mínimo 0,01 causa uma dispersão por todo o objeto. O valor máximo de 10,0 restringe o brilho apenas às bordas mais visíveis do pastoreio.

  • VertexMix: Este valor entre 0 e 1 especifica quão fortemente a vertex cor em uma malha contribui para a cor final. No valor padrão de 1, a vertex cor é multiplicada para a cor albedo completamente. Com um valor de 0, as vertex cores são totalmente ignoradas.

  • ColorTransparencyMode: Ao contrário dos materiais PBR, os materiais de cor distinguem entre diferentes modos de transparência:

    • Opaque: O modo padrão desativa a transparência. No entanto, o corte alfa ainda é possível e deve ser preferido, se suficiente.
    • AlphaBlended: Este modo é semelhante ao modo de transparência para materiais PBR. Deve ser usado para materiais transparentes como o vidro.
    • Additive: Este modo é o modo de transparência mais simples e eficiente. A contribuição do material é adicionada à imagem renderizada. Esse modo pode ser usado para simular objetos brilhantes (mas ainda transparentes), como marcadores usados para destacar objetos importantes.

Nota

Embora AlbedoColor e FresnelEffectColor tenham a mesma faixa de valor aceito que para materiais PBR, seus canais serão efetivamente fixados a [0; 1] para materiais de cor.

O material de cor substitui durante a conversão

Um subconjunto de propriedades de material de cor pode ser substituído durante a conversão do modelo por meio do arquivo de substituição de material. A tabela a seguir mostra o mapeamento entre as propriedades de tempo de execução documentadas acima e o nome da propriedade correspondente no arquivo de substituição:

Nome da propriedade do material Nome da propriedade no arquivo de substituição
ColorFlags.AlphaClipped alphaClipEnabled
ColorFlags.UseVertexColor useVertexColor
ColorFlags.DoubleSided isDoubleSided
ColorFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
ColorTransparencyMode transparent
AlphaClipThreshold alphaClipThreshold

Documentação da API

Próximos passos