Reflexos do céu
Na Renderização Remota do Azure, uma textura de céu é usada para iluminar objetos de forma realista. Para aplicações de realidade aumentada, esta textura deve assemelhar-se ao seu ambiente do mundo real, para fazer com que os objetos pareçam convincentes. Este artigo descreve como alterar a textura do céu. O céu afeta apenas a renderização de materiais PBR. Os materiais coloridos e as nuvens de pontos não são afetados.
Nota
A textura do céu também é referida como um mapa ambiental. Estes termos são utilizados indistintamente.
Iluminação de objetos
A Renderização Remota do Azure emprega renderização baseada em física (PBR) para cálculos de iluminação realistas. Embora você possa adicionar fontes de luz à sua cena, usar uma boa textura do céu tem o maior impacto.
As imagens abaixo mostram resultados de iluminação de diferentes superfícies apenas com uma textura do céu:
Rugosidade | 0 | 0.25 | 0.5 | 0,75 | 1 |
---|---|---|---|---|---|
Não-metálicos | |||||
Metal |
Para obter mais informações sobre o modelo de iluminação, consulte o capítulo de materiais .
Importante
A Renderização Remota do Azure usa a textura do céu apenas para modelos de iluminação. Ele não renderiza o céu como um fundo, uma vez que os aplicativos de Realidade Aumentada já têm um fundo adequado - o mundo real.
Alterar a textura do céu
Para alterar o mapa do ambiente, tudo o que você precisa fazer é carregar uma textura e alterar o SkyReflectionSettings
:
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 LoadTextureFromSasAsync
variante é usada acima porque uma textura embutida é carregada. Ao carregar a partir de armazenamentos de blob vinculados, use a LoadTextureAsync
variante.
Tipos de textura do céu
Você pode usar cubemaps e texturas 2D como mapas de ambiente.
Todas as texturas têm de estar num formato de textura suportado. Você não precisa fornecer mipmaps para texturas do céu.
Mapas de ambiente do cubo
Para referência, aqui está um mapa de cubo desembrulhado:
Use RenderingSession.Connection.LoadTextureAsync
/ LoadTextureFromSasAsync
com TextureType.CubeMap
para carregar texturas de cubemap.
Mapas de ambiente da esfera
Ao usar uma textura 2D como um mapa de ambiente, a imagem tem que estar no espaço de coordenadas esféricas.
Use RenderingSession.Connection.LoadTextureAsync
com TextureType.Texture2D
para carregar mapas de ambiente esférico.
Mapas de ambiente integrados
A Renderização Remota do Azure fornece alguns mapas de ambiente internos que estão sempre disponíveis. Todos os mapas de ambiente integrados são cubemaps.
Identificador | Description | Ilustração |
---|---|---|
builtin://Autoshop | Variedade de luzes listradas, iluminação de base interior brilhante | |
builtin://BoilerRoom | Configuração de luz interior brilhante, várias luzes de janela | |
builtin://ColorfulStudio | Luzes de cores variadas em ambientes internos com luz média | |
builtin://Hangar | Luz ambiente moderadamente brilhante | |
builtin://IndustrialPipeAndValve | Ambiente interior escuro com contraste claro-escuro | |
builtin://Lebombo | Luz ambiente diurna, luz brilhante da área da janela | |
builtin://SataraNight | Céu noturno escuro e chão com muitas luzes circundantes | |
builtin://SunnyVondelpark | Luz solar brilhante e contraste de sombra | |
builtin://Syferfontein | Luz clara do céu com iluminação moderada do solo | |
builtin://TearsOfSteelBridge | Sol e sombra moderadamente variáveis | |
builtin://VeniceSunset | Luz do pôr-do-sol à noite que se aproxima do crepúsculo | |
builtin://WhippleCreekRegionalPark | Tons claros brilhantes, verde-luxuriante e branco, chão escurecido | |
builtin://WinterRiver | Diurno com luz ambiente brilhante | |
builtin://DefaultSky | O mesmo que TearsOfSteelBridge |
Documentação da API
- C# RenderingConnection.SkyReflectionSettings propriedade
- C++ RenderingConnection::SkyReflectionSettings()