Odbicia nieba

W usłudze Azure Remote Rendering tekstura nieba jest używana do realistycznego oświetlenia obiektów. W przypadku aplikacji rzeczywistości rozszerzonej ta tekstura powinna przypominać rzeczywiste otoczenie, aby obiekty wydawały się przekonujące. W tym artykule opisano sposób zmiany tekstury nieba. Niebo wpływa tylko na renderowanie materiałów PBR. Nie ma to wpływu na materiały kolorowe i chmury punktowe .

Uwaga

Tekstura nieba jest również określana jako mapa środowiska. Te terminy są używane zamiennie.

Oświetlenie obiektu

Usługa Azure Remote Rendering wykorzystuje renderowanie fizyczne (PBR) na potrzeby realistycznych obliczeń oświetlenia. Chociaż możesz dodać źródła światła do sceny, użycie dobrej tekstury nieba ma największy wpływ.

Na poniższych obrazach przedstawiono wyniki oświetlenia różnych powierzchni tylko z teksturą nieba:

Chropowatości 0 0.25 0.5 0.75 1
Bez systemu operacyjnego Dielectric, Roughness=0 Dielectric, Roughness=0.25 Dielectric, Roughness=0.5 Dielectric, Roughness=0.75 Dielectric, Roughness=1
Metal Metal, Roughness=0 Metal, Roughness=0.25 Metal, Roughness=0.5 Metal, Roughness=0.75 Metal, Roughness=1

Aby uzyskać więcej informacji na temat modelu oświetlenia, zobacz rozdział materiały .

Ważne

Usługa Azure Remote Rendering używa tekstury nieba tylko dla modeli oświetlenia. Nie renderuje nieba jako tła, ponieważ aplikacje rzeczywistości rozszerzonej mają już odpowiednie tło - świat rzeczywisty.

Zmiana tekstury nieba

Aby zmienić mapę środowiska, wystarczy załadować teksturę i zmienić sesję SkyReflectionSettings:

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

Wariant LoadTextureFromSasAsync jest używany powyżej, ponieważ jest ładowana wbudowana tekstura. Podczas ładowania z połączonych magazynów obiektów blob użyj wariantu LoadTextureAsync .

Typy tekstur nieba

Mapy modułów i tekstury 2D można używać jako map środowiskowych.

Wszystkie tekstury muszą być w obsługiwanym formacie tekstury. Nie musisz dostarczać map mipmap dla tekstur nieba.

Mapy środowiska modułu

Aby uzyskać informacje na ten temat, oto rozpakowana mapa modułu:

An unwrapped cubemap

Użyj polecenia RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync , TextureType.CubeMap aby załadować tekstury mapy modułu.

Mapy środowiska sfery

W przypadku używania tekstury 2D jako mapy środowiska obraz musi znajdować się w przestrzeni współrzędnych sfericznych.

A sky image in spherical coordinates

TextureType.Texture2D Służy RenderingSession.Connection.LoadTextureAsync do ładowania map środowisk sfericznych.

Wbudowane mapy środowiska

Usługa Azure Remote Rendering udostępnia kilka wbudowanych map środowiskowych, które są zawsze dostępne. Wszystkie wbudowane mapy środowiska to mapy modułów.

Identyfikator opis Ilustracja
builtin://Autoshop Różne światła paskowe, jasne oświetlenie wewnętrznej bazy Autoshop skybox used to light an object
builtin://BoilerRoom Jasne ustawienie światła wewnętrznego, wiele świateł okiennych BoilerRoom skybox used to light an object
builtin://ColorfulStudio Różne kolorowe światła w średnim świetle w pomieszczeniu ColorfulStudio skybox used to light an object
builtin://Hangar Umiarkowanie jasne światło sali otoczenia SmallHangar skybox used to light an object
builtin://IndustrialPipeAndValve Przygaszone ustawienie wnętrz z jasnym ciemnym kontrastem IndustrialPipeAndValve skybox used to light an object
builtin://Lebombo Pokój otoczenia w ciągu dnia, jasny obszar okna światła Lebombo skybox used to light an object
builtin://SataraNight Ciemne nocne niebo i ziemia z wieloma otaczającymi światłami SataraNight skybox used to light an object
builtin://SunnyVondelpark Jasny kontrast światła słonecznego i cienia SunnyVondelpark skybox used to light an object
builtin://Syferfontein Jasne światło nieba z umiarkowanym oświetleniem naziemnym Syferfontein skybox used to light an object
builtin://TearsOfSteelBridge Umiarkowanie różne słońce i cień TearsOfSteelBridge skybox used to light an object
builtin://VeniceSunset Wieczorne światło zachodu słońca zbliża się zmierzch VeniceSunset skybox used to light an object
builtin://WhippleCreekRegionalPark Jasne, bujne zielone i białe odcienie światła, przyciemniony grunt WhippleCreekRegionalPark skybox used to light an object
builtin://WinterRiver Dzień z jasnym oświetleniem gruntowym WinterRiver skybox used to light an object
builtin://DefaultSky Tak samo jak TearsOfSteelBridge DefaultSky skybox used to light an object

Dokumentacja interfejsu API

Następne kroki