Compartilhar via


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

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:

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.

Uma imagem do céu em coordenadas esféricas

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 Skybox da Autoshop usado para iluminar um objeto
builtin://BoilerRoom Configuração de luz brilhante em ambiente interno, luzes de várias janelas Skybox da BoilerRoom usado para iluminar um objeto
builtin://ColorfulStudio Luzes coloridas variadas de acordo com a configuração de mídia óptica do meio Skybox da ColorfulStudio usado para iluminar um objeto
builtin://Hangar Luz ambiente moderadamente brilhante de hall Skybox da SmallHangar usado para iluminar um objeto
builtin://IndustrialPipeAndValve Configuração de ambiente interno tremeluzente com contraste escuro Skybox da IndustrialPipeAndValve usado para iluminar um objeto
builtin://Lebombo Luz ambiente em cômodo durante o dia, luz brilhante em área de janela Skybox da Lebombo usado para iluminar um objeto
builtin://SataraNight Céu de noite escura e solo com muitas luzes ao redor Skybox da SataraNight usado para iluminar um objeto
builtin://SunnyVondelpark Luz do sol brilhante e contraste da sombra Skybox da SunnyVondelpark usado para iluminar um objeto
builtin://Syferfontein Luz no céu clara com iluminação moderada no solo Skybox da Syferfontein usado para iluminar um objeto
builtin://TearsOfSteelBridge Sol e sombra moderadamente variados Skybox da TearsOfSteelBridge usado para iluminar um objeto
builtin://VeniceSunset Luz do pôr do sol se aproximando do anoitecer Skybox da VeniceSunset usado para iluminar um objeto
builtin://WhippleCreekRegionalPark Tom claro, verde exuberante e tons de luz branca, solo escurecido Skybox da WhippleCreekRegionalPark usado para iluminar um objeto
builtin://WinterRiver Dia com luz ambiente brilhante no solo Skybox da SunnyVondelpark usado para iluminar um objeto
builtin://DefaultSky O mesmo que TearsOfSteelBridge Skybox da DefaultSky usado para iluminar um objeto

Documentação da API

Próximas etapas