Udostępnij za pośrednictwem


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 Dielektryk, Chropowatość=0 Dielektryk, Chropowatość=0,25 Dielektryk, Chropowatość=0,5 Dielektryczna, Szorstkość=0,75 Dielektryk, Chropowatość=1
Metal Metal, Chropowatość=0 Metal, Szorstkość=0,25 Metal, Szorstkość=0,5 Metal, Szorstkość=0,75 Metal, Chropowatość=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:

Niezapisana mapa modułu

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.

Obraz nieba we współrzędnych kulistych

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 używany do oświetlenia obiektu
builtin://BoilerRoom Jasne ustawienie światła wewnętrznego, wiele świateł okiennych Skybox BoilerRoom używany do oświetlenia obiektu
builtin://ColorfulStudio Różne kolorowe światła w średnim świetle w pomieszczeniu Skybox z kolorową aplikacjąStudio używaną do oświetlenia obiektu
builtin://Hangar Umiarkowanie jasne światło sali otoczenia Skybox SmallHangar używany do oświetlenia obiektu
builtin://IndustrialPipeAndValve Przygaszone ustawienie wnętrz z jasnym ciemnym kontrastem Skybox IndustrialPipeAndValve używany do oświetlenia obiektu
builtin://Lebombo Pokój otoczenia w ciągu dnia, jasny obszar okna światła Skybox Lebombo używany do oświetlenia obiektu
builtin://SataraNight Ciemne nocne niebo i ziemia z wieloma otaczającymi światłami Skybox SataraNight używany do oświetlenia obiektu
builtin://SunnyVondelpark Jasny kontrast światła słonecznego i cienia Skybox SunnyVondelpark używany do oświetlenia obiektu
builtin://Syferfontein Jasne światło nieba z umiarkowanym oświetleniem naziemnym Syferfontein skybox używany do oświetlenia obiektu
builtin://TearsOfSteelBridge Umiarkowanie różne słońce i cień Skybox TearsOfSteelBridge używany do oświetlenia obiektu
builtin://VeniceSunset Wieczorne światło zachodu słońca zbliża się zmierzch Skybox VeniceSunset używany do oświetlenia obiektu
builtin://WhippleCreekRegionalPark Jasne, bujne zielone i białe odcienie światła, przyciemniony grunt WhippleCreekRegionPark skybox używany do oświetlenia obiektu
builtin://WinterRiver Dzień z jasnym oświetleniem gruntowym Skybox WinterRiver używany do oświetlenia obiektu
builtin://DefaultSky Tak samo jak TearsOfSteelBridge DefaultSky skybox używany do oświetlenia obiektu

Dokumentacja interfejsu API

Następne kroki