Partilhar via


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 Dielétrico, rugosidade=0 Dielétrico, rugosidade=0,25 Dielétrico, rugosidade=0,5 Dielétrico, rugosidade=0,75 Dielétrico, rugosidade=1
Metal Metal, rugosidade=0 Metal, rugosidade=0,25 Metal, rugosidade=0,5 Metal, rugosidade=0,75 Metal, rugosidade=1

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:

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.

Uma imagem do céu em 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 Autoshop skybox usado para iluminar um objeto
builtin://BoilerRoom Configuração de luz interior brilhante, várias luzes de janela Skybox da sala de caldeiras usada para iluminar um objeto
builtin://ColorfulStudio Luzes de cores variadas em ambientes internos com luz média Skybox ColorfulStudio usado para iluminar um objeto
builtin://Hangar Luz ambiente moderadamente brilhante Skybox SmallHangar usado para iluminar um objeto
builtin://IndustrialPipeAndValve Ambiente interior escuro com contraste claro-escuro Skybox IndustrialPipeAndValve usado para iluminar um objeto
builtin://Lebombo Luz ambiente diurna, luz brilhante da área da janela Skybox Lebombo usado para iluminar um objeto
builtin://SataraNight Céu noturno escuro e chão com muitas luzes circundantes SataraNight skybox usado para iluminar um objeto
builtin://SunnyVondelpark Luz solar brilhante e contraste de sombra SunnyVondelpark skybox usado para iluminar um objeto
builtin://Syferfontein Luz clara do céu com iluminação moderada do solo Syferfontein skybox usado para iluminar um objeto
builtin://TearsOfSteelBridge Sol e sombra moderadamente variáveis Skybox TearsOfSteelBridge usado para iluminar um objeto
builtin://VeniceSunset Luz do pôr-do-sol à noite que se aproxima do crepúsculo VeniceSunset skybox usado para iluminar um objeto
builtin://WhippleCreekRegionalPark Tons claros brilhantes, verde-luxuriante e branco, chão escurecido WhippleCreekRegionalPark skybox usado para iluminar um objeto
builtin://WinterRiver Diurno com luz ambiente brilhante Skybox WinterRiver usado para iluminar um objeto
builtin://DefaultSky O mesmo que TearsOfSteelBridge DefaultSky skybox usado para iluminar um objeto

Documentação da API

Próximos passos