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 | |||||
Metálico |
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:
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.
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 | |
builtin://BoilerRoom | Configuración de luz interior brillante, varias luces de ventana | |
builtin://ColorfulStudio | Iluminación de variaciones de color en la opción de iluminación media de interior | |
builtin://Hangar | Iluminación ambiental de sala moderadamente brillante | |
builtin://IndustrialPipeAndValve | Configuración interior de DIM con contraste claro-oscuro | |
builtin://Lebombo | Iluminación de sala ambiental diurna, iluminación de área de ventana brillante | |
builtin://SataraNight | Cielo nocturno oscuro y suelo con muchas luces circundantes | |
builtin://SunnyVondelpark | Luz solar brillante y contraste de sombra | |
builtin://Syferfontein | Iluminación de cielo clara con iluminación de suelo moderada | |
builtin://TearsOfSteelBridge | Tono y sombreado de variación moderada | |
builtin://VeniceSunset | Luz de puesta de sol que se aproxima a la del anochecer | |
builtin://WhippleCreekRegionalPark | Suelo atenuado con tonos de luz verde, blanco y brillante | |
builtin://WinterRiver | Día con luz de tierra en ambiente brillante | |
builtin://DefaultSky | Igual que TearsOfSteelBridge |
Documentación de la API
- Propiedad RenderingConnection.SkyReflectionSettings de C#
- RenderingConnection::SkyReflectionSettings() de C++