Dela via


Reflektioner av himmel

I Azure Remote Rendering används en skystruktur för att tända objekt realistiskt. För program för förhöjd verklighet bör den här strukturen likna din verkliga omgivning för att få objekt att verka övertygande. Den här artikeln beskriver hur du ändrar himlens struktur. Himlen påverkar bara återgivningen av PBR-material. Färgmaterial och punktmoln påverkas inte.

Kommentar

Himlens struktur kallas även för en miljökarta. Dessa termer används omväxlande.

Objektbelysning

Azure Remote Rendering använder fysiskt baserad rendering (PBR) för realistiska ljusberäkningar. Även om du kan lägga till ljuskällor till din scen, har användning av en bra himmelsstruktur störst inverkan.

Bilderna nedan visar resultat av belysning av olika ytor endast med en himmelsstruktur:

Strävhet 0 0.25 0,5 0.75 1
Icke-metall Dielectric, Roughness=0 Dielectric, Roughness=0.25 Dielectric, Roughness=0.5 Dielektrisk, Grovhet=0,75 Dielektrisk, grovhet=1
Metall Metall, grovhet=0 Metall, grovhet=0,25 Metall, grovhet=0,5 Metall, grovhet=0,75 Metall, grovhet=1

Mer information om belysningsmodellen finns i materialkapitlet .

Viktigt!

Azure Remote Rendering använder endast himlens struktur för belysningsmodeller. Det återger inte himlen som en bakgrund, eftersom Augmented Reality-program redan har en riktig bakgrund - den verkliga världen.

Ändra himlens struktur

Om du vill ändra miljökartan behöver du bara läsa in en struktur och ändra sessionens 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");
        }
    });
}

Varianten LoadTextureFromSasAsync används ovan eftersom en inbyggd struktur läses in. Använd varianten LoadTextureAsync när du läser in från länkade bloblagringar i stället.

Sky-strukturtyper

Du kan använda både kubkartor och 2D-texturer som miljökartor.

Alla texturer måste ha ett texturformat som stöds. Du behöver inte tillhandahålla mipmaps för sky-texturer.

Kubmiljökartor

Här är en oöppnad kubkarta som referens:

En oöppnad kubkarta

Använd RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync med TextureType.CubeMap för att läsa in kubkartans texturer.

Sfärmiljökartor

När du använder en 2D-struktur som en miljökarta måste bilden vara i sfäriskt koordinatutrymme.

En himmelsbild i sfäriska koordinater

Använd RenderingSession.Connection.LoadTextureAsync med TextureType.Texture2D för att läsa in sfäriska miljökartor.

Inbyggda miljökartor

Azure Remote Rendering innehåller några inbyggda miljökartor som alltid är tillgängliga. Alla inbyggda miljökartor är kubkartor.

Identifierare beskrivning Illustration
builtin://Autoshop Variation av randljus, ljus inomhusbasbelysning Autoshop skybox används för att tända ett objekt
builtin://BoilerRoom Ljus inomhusljusinställning, flera fönsterljus BoilerRoom-skybox som används för att tända ett objekt
builtin://ColorfulStudio Varierande färgade lampor i medelljus inomhusmiljö ColorfulStudio skybox används för att tända ett objekt
builtin://Hangar Måttligt ljust omgivande hallljus SmallHangar skybox används för att tända ett objekt
builtin://IndustrialPipeAndValve Dim inomhusinställning med ljus-mörk kontrast IndustrialPipeAndValve skybox används för att tända ett objekt
builtin://Lebombo Dagtid omgivande rum ljus, ljust fönster område ljus Lebombo skybox används för att tända ett objekt
builtin://SataraNight Mörk natthimmel och mark med många omgivande ljus SataraNight skybox används för att tända ett objekt
builtin://SunnyVondelpark Starkt solljus och skuggkontrast SunnyVondelpark skybox används för att tända ett objekt
builtin://Syferfontein Klar himmelsljus med måttlig markbelysning Skybox med Syferfontein används för att tända ett objekt
builtin://TearsOfSteelBridge Måttligt varierande sol och skugga TearsOfSteelBridge skybox används för att tända ett objekt
builtin://VeniceSunset Kvällssolens ljus närmar sig skymningen VeniceSunset skybox används för att tända ett objekt
builtin://WhippleCreekRegionalPark Ljusa, grönskande och vita ljustoner, nedtonad mark WhippleCreekRegionalPark skybox används för att tända ett objekt
builtin://WinterRiver Dagtid med starkt omgivande markljus WinterRiver-skybox som används för att tända ett objekt
builtin://DefaultSky Samma som TearsOfSteelBridge DefaultSky skybox som används för att tända ett objekt

API-dokumentation

Nästa steg