Reflexos do céu
No Azure Remote Rendering, uma textura de céu é usada para iluminar objetos de modo realista. Para aplicativos de realidade aumentada, essa textura deve se parecer com o ambiente real, para que os objetos pareçam convincentes. Este artigo descreve como mudar a textura do céu. O céu afeta apenas a renderização dos materiais PBR. Materiais de cor e nuvens de ponto não são afetados.
Observação
A textura do céu também é chamada de mapa de ambiente. Esses termos são usados de maneira intercambiável.
Iluminação do objeto
O Azure Remote Rendering emprega renderização baseada em física (PBR) para cálculos de iluminação realística. Embora você possa adicionar fontes de luz à sua cena, usar uma boa textura do céu gera um impacto maior.
As imagens abaixo mostram os resultados da iluminação de superfícies diferentes apenas com uma textura de céu:
Irregularidade | 0 | 0,25 | 0.5 | 0,75 | 1 |
---|---|---|---|---|---|
Não metal | |||||
Metal |
Para mais informações sobre o modelo de iluminação, veja o capítulo de materiais.
Importante
O Azure Remote Rendering usa a textura de céu somente para modelos de iluminação. Ele não renderiza o céu como plano de fundo, já que os aplicativos de realidade aumentada já têm um plano de fundo adequado: o ambiente físico.
Mudar a textura do céu
Para mudar o mapa do ambiente, tudo o que você precisa fazer é carregar uma textura e mudar SkyReflectionSettings
da sessão:
async void ChangeEnvironmentMap(RenderingSession session)
{
try
{
Texture skyTex = await session.Connection.LoadTextureFromSasAsync(new LoadTextureFromSasOptions("builtin://VeniceSunset", TextureType.CubeMap));
session.Connection.SkyReflectionSettings.SkyReflectionTexture = skyTex;
}
catch (RRException exception)
{
System.Console.WriteLine($"Setting sky reflection failed: {exception.Message}");
}
}
void ChangeEnvironmentMap(ApiHandle<RenderingSession> session)
{
LoadTextureFromSasOptions params;
params.TextureType = TextureType::CubeMap;
params.TextureUri = "builtin://VeniceSunset";
session->Connection()->LoadTextureFromSasAsync(params, [&](Status status, ApiHandle<Texture> res) {
if (status == Status::OK)
{
ApiHandle<SkyReflectionSettings> settings = session->Connection()->GetSkyReflectionSettings();
settings->SetSkyReflectionTexture(res);
}
else
{
printf("Texture loading failed!\n");
}
});
}
A variante LoadTextureFromSasAsync
é usada acima porque uma textura predefinida está carregada. Ao carregar a partir de armazenamentos de blob vinculados, use a variante LoadTextureAsync
.
Tipos de texturas do céu
É possível usar tanto cubemaps quanto texturas 2D como mapas de ambiente.
Todas as texturas precisam estar em um formato de textura compatível. Não é preciso inserir mipmaps para texturas de céu.
Mapas de ambiente de cubo
Para uma referência, veja um cubemap não encapsulado:
Use RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
com TextureType.CubeMap
para carregar texturas de cubemap.
Mapas de ambiente de esfera
Ao usar uma textura 2D como um mapa de ambiente, a imagem deve estar no espaço esférico de coordenadas.
Use RenderingSession.Connection.LoadTextureAsync
com TextureType.Texture2D
para carregar mapas de ambiente esféricos.
Mapas de ambiente integrados
O Azure Remote Rendering fornece alguns mapas de ambiente integrados que estão sempre disponíveis. Todos os mapas de ambiente integrados são cubemaps.
Identificador | Descrição | Ilustração |
---|---|---|
builtin://Autoshop | Variedade de luzes de faixa, iluminação de base brilhante em ambientes internos | |
builtin://BoilerRoom | Configuração de luz brilhante em ambiente interno, luzes de várias janelas | |
builtin://ColorfulStudio | Luzes coloridas variadas de acordo com a configuração de mídia óptica do meio | |
builtin://Hangar | Luz ambiente moderadamente brilhante de hall | |
builtin://IndustrialPipeAndValve | Configuração de ambiente interno tremeluzente com contraste escuro | |
builtin://Lebombo | Luz ambiente em cômodo durante o dia, luz brilhante em área de janela | |
builtin://SataraNight | Céu de noite escura e solo com muitas luzes ao redor | |
builtin://SunnyVondelpark | Luz do sol brilhante e contraste da sombra | |
builtin://Syferfontein | Luz no céu clara com iluminação moderada no solo | |
builtin://TearsOfSteelBridge | Sol e sombra moderadamente variados | |
builtin://VeniceSunset | Luz do pôr do sol se aproximando do anoitecer | |
builtin://WhippleCreekRegionalPark | Tom claro, verde exuberante e tons de luz branca, solo escurecido | |
builtin://WinterRiver | Dia com luz ambiente brilhante no solo | |
builtin://DefaultSky | O mesmo que TearsOfSteelBridge |
Documentação da API
- Propriedade RenderingConnection.SkyReflectionSettings em C#
- RenderingConnection::SkyReflectionSettings() em C++