Himmelsreflexionen

In Azure Remote Rendering wird eine Himmelstextur verwendet, um Objekte realistisch zu beleuchten. In Augmented-Reality-Anwendungen sollte diese Textur der realen Umgebung ähneln, damit die Objekte überzeugend echt erscheinen. In diesem Artikel wird beschrieben, wie Sie die Himmelstextur ändern. Der Himmel wirkt sich nur auf das Rendern von PBR-Materialien aus. Farbige Materialien und Punktwolken sind nicht betroffen

Hinweis

Die Himmelstextur wird auch als Environment Map bezeichnet. Beide Begriffe werden synonym verwendet.

Objektbeleuchtung

In Azure Remote Rendering werden mithilfe von Physically Based Rendering (PBR) realistische Lichteffekte berechnet. Obwohl Sie auch Lichtquellen zu Ihrer Szene hinzufügen können, ist die Verwendung einer guten Himmelstextur die effektivste Methode.

Die folgenden Bilder zeigen, was geschieht, wenn verschiedene Oberflächen nur mit einer Himmeltextur beleuchtet werden:

Roughness 0 0.25 0.5 0,75 1
Nicht metallisch Dielectric, Roughness=0 Dielectric, Roughness=0.25 Dielectric, Roughness=0.5 Dielectric, Roughness=0.75 Dielectric, Roughness=1
Metall Metal, Roughness=0 Metal, Roughness=0.25 Metal, Roughness=0.5 Metal, Roughness=0.75 Metal, Roughness=1

Weitere Informationen zum Belichtungsmodell finden Sie im Kapitel Materialien.

Wichtig

Himmelstexturen werden in Azure Remote Rendering nur für Belichtungsmodelle verwendet. Damit lässt sich nicht der Himmel als Hintergrund rendern, da Augmented-Reality-Anwendungen bereits über einen angemessenen Hintergrund verfügen: die echte Welt.

Ändern der Himmelstextur

Zum Ändern der Environment Map müssen Sie lediglich eine Textur laden und das SkyReflectionSettings-Objekt der Sitzung ändern:

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

Oben wird die Variante LoadTextureFromSasAsync verwendet, da eine integrierte Textur geladen wird. Wenn Sie stattdessen Daten aus verknüpften Blobspeichern laden, verwenden Sie die Variante LoadTextureAsync.

Typen von Himmelstexturen

Sie können sowohl Cube Maps als auch 2D-Texturen als Environment Map verwenden.

Alle Texturen müssen in einem unterstützten Texturformat vorliegen. Für Himmelstexturen müssen Sie keine MipMaps bereitstellen.

Cube-Environment-Maps

Dies ist ein Beispiel für eine aufgeklappte Cube Map:

An unwrapped cubemap

Verwenden Sie RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync mit TextureType.CubeMap, um Cube-Map-Texturen zu laden.

Sphärische Environment Maps

Bei einer 2D-Textur als Environment Map muss sich das Bild in einem sphärischen Koordinatenraum befinden.

A sky image in spherical coordinates

Verwenden Sie RenderingSession.Connection.LoadTextureAsync mit TextureType.Texture2D, um sphärische Environment Maps zu laden.

Integrierte Environment Maps

Azure Remote Rendering bietet einige integrierte Environment Maps, die immer verfügbar sind. Alle integrierten Environment Maps sind Cube Maps.

Bezeichner Beschreibung Abbildung
builtin://Autoshop Vielfalt von Lichtstreifen, helle Innenraumgrundbeleuchtung Autoshop skybox used to light an object
builtin://BoilerRoom Helle Innenraum-Lichtszene, mehrere Fensterlichter BoilerRoom skybox used to light an object
builtin://ColorfulStudio Unterschiedlich farbige Lichter in einer mittelhellen Innenraum-Lichtszene ColorfulStudio skybox used to light an object
builtin://Hangar Mäßig helles Umgebungsflurlicht SmallHangar skybox used to light an object
builtin://IndustrialPipeAndValve Gedimmte Innenraum-Lichtszene mit einem Hell-Dunkel-Kontrast IndustrialPipeAndValve skybox used to light an object
builtin://Lebombo Tagesumgebungslicht, Innenraum, helles Fensterlicht Lebombo skybox used to light an object
builtin://SataraNight Dunkler Nachthimmel und Boden mit vielen umgebenden Lichtern SataraNight skybox used to light an object
builtin://SunnyVondelpark Kontrast zwischen hellem Sonnenlicht und Schatten SunnyVondelpark skybox used to light an object
builtin://Syferfontein Klares Himmelslicht mit mäßiger Bodenbeleuchtung Syferfontein skybox used to light an object
builtin://TearsOfSteelBridge Moderater Übergang zwischen Licht (Sonne) und Schatten TearsOfSteelBridge skybox used to light an object
builtin://VeniceSunset Licht des Sonnenuntergangs am Abend, fast Dämmerung VeniceSunset skybox used to light an object
builtin://WhippleCreekRegionalPark Helle, üppig grüne und weiße helle Töne, dunklerer Boden WhippleCreekRegionalPark skybox used to light an object
builtin://WinterRiver Tagsüber, helles Umgebungsbodenlicht WinterRiver skybox used to light an object
builtin://DefaultSky Identisch mit TearsOfSteelBridge DefaultSky skybox used to light an object

API-Dokumentation

Nächste Schritte