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 | |||||
Metal |
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:
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.
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 | |
builtin://BoilerRoom | Helle Innenraum-Lichtszene, mehrere Fensterlichter | |
builtin://ColorfulStudio | Unterschiedlich farbige Lichter in einer mittelhellen Innenraum-Lichtszene | |
builtin://Hangar | Mäßig helles Umgebungsflurlicht | |
builtin://IndustrialPipeAndValve | Gedimmte Innenraum-Lichtszene mit einem Hell-Dunkel-Kontrast | |
builtin://Lebombo | Tagesumgebungslicht, Innenraum, helles Fensterlicht | |
builtin://SataraNight | Dunkler Nachthimmel und Boden mit vielen umgebenden Lichtern | |
builtin://SunnyVondelpark | Kontrast zwischen hellem Sonnenlicht und Schatten | |
builtin://Syferfontein | Klares Himmelslicht mit mäßiger Bodenbeleuchtung | |
builtin://TearsOfSteelBridge | Moderater Übergang zwischen Licht (Sonne) und Schatten | |
builtin://VeniceSunset | Licht des Sonnenuntergangs am Abend, fast Dämmerung | |
builtin://WhippleCreekRegionalPark | Helle, üppig grüne und weiße helle Töne, dunklerer Boden | |
builtin://WinterRiver | Tagsüber, helles Umgebungsbodenlicht | |
builtin://DefaultSky | Identisch mit TearsOfSteelBridge |
API-Dokumentation
- C# RenderingConnection.SkyReflectionSettings (Eigenschaft)
- C++ RenderingConnection::SkyReflectionSettings()