Condividi tramite


Riflessi del cielo

In Rendering remoto di Azure, per illuminare gli oggetti in modo realistico viene usata una trama del cielo. Per le applicazioni di realtà aumentata, questa trama dovrebbe essere simile a quella del mondo reale, in modo da rendere gli oggetti convincenti. Questo articolo descrive come modificare la trama del cielo. Il cielo influisce solo sul rendering dei materiali PBR. I materiali di colore e le nuvole di punti non sono interessati.

Nota

La trama del cielo è detta anche mappa ambientale. Questi termini vengono usati in modo interscambiabile.

Illuminazione degli oggetti

Rendering remoto di Azure usa il Physically Based Rendering (PBR) per calcolare l'illuminazione in modo realistico. Sebbene sia possibile aggiungere sorgenti di luce alla scena, l'uso di una buona trama del cielo offre i risultati migliori.

Le immagini seguenti illustrano i risultati dell'illuminazione di superfici diverse solo con una trama del cielo:

Ruvidità 0 0.25 0.5 0.75 1
Non metallico Dibici, Rugosità=0 Dibici, Rugosità=0,25 Dibici, Rugosità=0,5 Dibici, Rugosità=0,75 Dibici, Rugosità=1
Metallo Metallo, Rugosità=0 Metallo, Roughness=0.25 Metallo, Roughness=0.5 Metallo, Roughness=0.75 Metallo, Rugosità=1

Per altre informazioni sul modello di illuminazione, vedere il capitolo sui materiali.

Importante

Rendering remoto di Azure usa la trama del cielo solo per i modelli di illuminazione. Non esegue il rendering del cielo come sfondo, perché le applicazioni di realtà aumentata hanno già uno sfondo appropriato, ovvero il mondo reale.

Modificare la trama del cielo

Per modificare la mappa dell'ambiente è sufficiente caricare una trama e modificare l'elemento SkyReflectionSettingsdella sessione:

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

La LoadTextureFromSasAsync variante viene usata in precedenza perché viene caricata una trama predefinita. Durante il caricamento da archivi BLOB collegati, usare invece la LoadTextureAsync variante .

Tipi di trama del cielo

È possibile usare sia mappe cubi che trame 2D come mappe dell'ambiente.

Tutte le trame devono essere in un formato di trama supportato. Non è necessario fornire mipmap per le trame del cielo.

Mappe ambientali cubiche

Per riferimento, ecco una mappa cubo senza wrapping:

Mappa cubi senza wrapping

Usare RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync con TextureType.CubeMap per caricare trame di mappe cubi.

Mappe ambientali sferiche

Quando si usa una trama 2D come mappa ambientale, l'immagine deve trovarsi in uno spazio di coordinate sferico.

Immagine del cielo in coordinate sferiche

Usare RenderingSession.Connection.LoadTextureAsync con TextureType.Texture2D per caricare le mappe ambientali sferiche.

Mappe ambientali predefinite

Rendering remoto di Azure fornisce alcune mappe ambientali predefinite che sono sempre disponibili. Tutte le mappe ambientali predefinite sono mappe cubi.

Identificatore Descrizione Illustrazione
builtin://Autoshop Varie bande di luce, illuminazione interna di base brillante Skybox autoshop usato per accendere un oggetto
builtin://BoilerRoom Illuminazione interna brillante, più sorgenti di luce naturale BoilerRoom skybox usato per accendere un oggetto
builtin://ColorfulStudio Luci di vari colori in ambiente interno di media luminosità Skybox di ColorfulStudio usato per illuminare un oggetto
builtin://Hangar Illuminazione grande ambiente moderatamente luminoso Skybox SmallHangar usato per accendere un oggetto
builtin://IndustrialPipeAndValve Illuminazione interna soffusa con contrasto chiaro/scuro Skybox IndustrialPipeAndValve utilizzato per accendere un oggetto
builtin://Lebombo Luce diurna naturale, area della finestra con illuminazione brillante Lebombo skybox utilizzato per accendere un oggetto
builtin://SataraNight Cielo notturno scuro e terreno con molte luci circostanti SataraNight skybox usato per accendere un oggetto
builtin://SunnyVondelpark Contrasto luce solare brillante e ombre SunnyVondelpark skybox usato per accendere un oggetto
builtin://Syferfontein Cielo chiaro con illuminazione del terreno moderata Skybox Syferfontein usato per accendere un oggetto
builtin://TearsOfSteelBridge Variazione moderata di sole e ombre TearsOfSteelBridge skybox utilizzato per accendere un oggetto
builtin://VeniceSunset Luce di tramonto prossimo al crepuscolo Skybox VeneziaSunset utilizzato per accendere un oggetto
builtin://WhippleCreekRegionalPark Toni luminosi di bianco e verde, terreno con luce soffusa WhippleCreekRegionalPark skybox usato per accendere un oggetto
builtin://WinterRiver Giorno con luce naturale molto brillante sul terreno Skybox WinterRiver utilizzato per accendere un oggetto
builtin://DefaultSky Uguale a TearsOfSteelBridge DefaultSky skybox usato per accendere un oggetto

Documentazione sull'API

Passaggi successivi