Leer en inglés

Compartir a través de


Reflejos del cielo

En Azure Remote Rendering, se usa una textura de cielo para iluminar los objetos de forma realista. En el caso de las aplicaciones de realidad aumentada, esta textura debe ser similar a su entorno real para que los objetos parezcan convincentes. En este artículo se describe cómo cambiar la textura del cielo. El cielo solo afecta a la representación de materiales de PBR. Los materiales de color y las nubes de puntos no se ven afectados.

Nota

La textura del cielo también se conoce como mapa de entorno. Estos términos se usan indistintamente.

Iluminación de objetos

Azure Remote Rendering emplea la representación basada en la física (PBR) para los cálculos de iluminación realistas. Aunque puede agregar fuentes de luz a la escena, el uso de una buena textura de cielo tiene el mayor efecto.

En las imágenes siguientes se muestran los resultados de las distintas superficies de iluminación solo con una textura de cielo:

Rugosidad 0 0,25 0.5 0,75 1
No metal Dielectric, rugosidad=0 Dielectric, rugosidad=0,25 Dielectric, rugosidad=0,5 Dielectric, rugosidad=0,75 Dielectric, rugosidad=1
Metálico Metal, rugosidad=0 Metal, rugosidad=0,25 Metal, rugosidad=0,5 Metal, rugosidad=0,75 Metal, rugosidad=1

Para más información sobre el modelo de iluminación, vea el capítulo de materiales.

Importante

Azure Remote Rendering usa la textura de cielo solo para los modelos de iluminación. No representa el cielo como fondo, ya que las aplicaciones de realidad aumentada ya tienen un fondo adecuado: el mundo real.

Cambio de la textura del cielo

Para cambiar el mapa de entorno, lo único que tiene que hacer es cargar una textura y cambiar el valor de SkyReflectionSettings de la sesión:

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");
        }
    });
}

La variante LoadTextureFromSasAsync se usa porque se carga una textura integrada. Si la carga se realiza desde almacenamientos de blobs vinculados, use la variante LoadTextureAsync.

Tipos de textura de cielo

Puede usar mapas de cubo y texturas 2D como mapas de entorno.

Todas las texturas tienen que estar en un formato de textura compatible. No es necesario proporcionar mapas MIP para las texturas de cielo.

Mapas de entorno de cubo

Como referencia, este es un mapa de cubo desplegado:

Mapa de cubo desempaquetado

Use RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync con TextureType.CubeMap para cargar texturas de mapa de cubo.

Mapas de entorno de esfera

Cuando se usa una textura 2D como mapa de entorno, la imagen tiene que estar en un espacio de coordenadas esférico.

Una imagen de cielo en coordenadas esféricas

Use RenderingSession.Connection.LoadTextureAsync con TextureType.Texture2D para cargar mapas de entorno esféricos.

Mapas de entorno integrados

Azure Remote Rendering proporciona una serie de mapas de entorno integrados que siempre están disponibles. Todas las asignaciones de entorno integradas son mapas de cubo.

Identificador Descripción Ilustración
builtin://Autoshop Diversas iluminación base de interior brillante y bandas de luz Skybox Autoshop usado para iluminar un objeto
builtin://BoilerRoom Configuración de luz interior brillante, varias luces de ventana Skybox BoilerRoom usado para iluminar un objeto
builtin://ColorfulStudio Iluminación de variaciones de color en la opción de iluminación media de interior Skybox ColorfulStudio usado para iluminar un objeto
builtin://Hangar Iluminación ambiental de sala moderadamente brillante Skybox SmallHangar usado para iluminar un objeto
builtin://IndustrialPipeAndValve Configuración interior de DIM con contraste claro-oscuro Skybox IndustrialPipeAndValve usado para iluminar un objeto
builtin://Lebombo Iluminación de sala ambiental diurna, iluminación de área de ventana brillante Skybox Lebombo usado para iluminar un objeto
builtin://SataraNight Cielo nocturno oscuro y suelo con muchas luces circundantes Skybox SataraNight usado para iluminar un objeto
builtin://SunnyVondelpark Luz solar brillante y contraste de sombra Skybox SunnyVondelpark usado para iluminar un objeto
builtin://Syferfontein Iluminación de cielo clara con iluminación de suelo moderada Skybox Syferfontein usado para iluminar un objeto
builtin://TearsOfSteelBridge Tono y sombreado de variación moderada Skybox TearsOfSteelBridge usado para iluminar un objeto
builtin://VeniceSunset Luz de puesta de sol que se aproxima a la del anochecer Skybox VeniceSunset usado para iluminar un objeto
builtin://WhippleCreekRegionalPark Suelo atenuado con tonos de luz verde, blanco y brillante Skybox WhippleCreekRegionalPark usado para iluminar un objeto
builtin://WinterRiver Día con luz de tierra en ambiente brillante Skybox WinterRiver usado para iluminar un objeto
builtin://DefaultSky Igual que TearsOfSteelBridge Skybox DefaultSky usado para iluminar un objeto

Documentación de la API

Pasos siguientes