Reflets du ciel

Dans Azure Remote Rendering, une texture de ciel est utilisée pour éclairer les objets de façon réaliste. Dans les applications de réalité augmentée, cette texture doit ressembler à votre environnement réel, pour que les objets paraissent convaincants. Cet article explique comment modifier la texture du ciel. Le ciel affecte uniquement le rendu des matériaux PBR. Les matériaux de couleur et les nuages de points ne sont pas affectés.

Remarque

La texture du ciel est également appelée carte d’environnement. Ces termes sont utilisés ici indifféremment.

Éclairage des objets

Azure Remote Rendering utilise le rendu physique réaliste (PBR) pour les calculs d’éclairage réaliste. Bien que vous puissiez ajouter des sources de lumière à votre scène, l’utilisation d’une bonne texture de ciel produit le meilleur des effets.

Les images ci-dessous montrent les résultats de l’éclairage de différentes surfaces, obtenus uniquement avec une texture de ciel :

Rugosité 0 0,25 0.5 0.75 1
Non métallique Dielectric, Roughness=0 Dielectric, Roughness=0.25 Dielectric, Roughness=0.5 Dielectric, Roughness=0.75 Dielectric, Roughness=1
Métal Metal, Roughness=0 Metal, Roughness=0.25 Metal, Roughness=0.5 Metal, Roughness=0.75 Metal, Roughness=1

Pour plus d’informations sur le modèle d’éclairage, reportez-vous au chapitre sur les matériaux.

Important

Azure Remote Rendering utilise la texture du ciel uniquement pour les modèles d’éclairage. Il n’effectue pas le rendu du ciel sous forme d’arrière-plan, car les applications de réalité augmentée disposent déjà d’un arrière-plan approprié : le monde réel.

Modification de la texture du ciel

Pour modifier la carte d’environnement, il suffit de charger une texture et modifier l’élément SkyReflectionSettings de la session :

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 variante LoadTextureFromSasAsync est utilisée ci-dessus, car une texture intégrée est chargée. Lors du chargement à partir de stockages d’objets blob liés, utilisez la variante LoadTextureAsync.

Types de texture de ciel

Vous pouvez utiliser des cartes cubiques et des textures 2D en tant que cartes d’environnement.

Toutes les textures doivent se présenter dans un format de texture pris en charge. Vous n’avez pas besoin de fournir de mipmaps pour les textures de ciel.

Cartes d’environnement en cube

Pour référence, voici une carte cubique non wrappée :

An unwrapped cubemap

Utilisez RenderingSession.Connection.LoadTextureAsync/ LoadTextureFromSasAsync avec TextureType.CubeMap pour charger les textures de carte cubique.

Cartes d’environnement en sphère

Lors de l’utilisation d’une texture 2D comme carte d’environnement, l’image doit se trouver dans un espace de coordonnées sphériques.

A sky image in spherical coordinates

Utilisez RenderingSession.Connection.LoadTextureAsync avec TextureType.Texture2D pour charger des cartes d’environnement sphériques.

Cartes d’environnement intégrées

Azure Remote Rendering fournit quelques cartes d’environnement intégrées qui sont toujours disponibles. Toutes les cartes d’environnement intégrées sont des cartes cubiques.

Identificateur Description Illustration
builtin://Autoshop Divers éclairages directs, éclairage intérieur lumineux Autoshop skybox used to light an object
builtin://BoilerRoom Intérieur clair, lumineux, plusieurs sources d’éclairage naturel BoilerRoom skybox used to light an object
builtin://ColorfulStudio Lumières de différentes couleurs et intensités, dans un décor intérieur moyennement éclairé ColorfulStudio skybox used to light an object
builtin://Hangar Éclairage de grande salle, moyennement lumineux SmallHangar skybox used to light an object
builtin://IndustrialPipeAndValve Décor intérieur sombre avec lumière contrastée IndustrialPipeAndValve skybox used to light an object
builtin://Lebombo Pièce claire, ambiance de jour, lumière vive provenant d’une fenêtre Lebombo skybox used to light an object
builtin://SataraNight Sol sombre et nuit noire avec de nombreuses lumières environnantes SataraNight skybox used to light an object
builtin://SunnyVondelpark Lumière du soleil vive et ombre contrastée SunnyVondelpark skybox used to light an object
builtin://Syferfontein Ciel clair avec sol modérément éclairé Syferfontein skybox used to light an object
builtin://TearsOfSteelBridge Soleil et ombre modérément contrastés TearsOfSteelBridge skybox used to light an object
builtin://VeniceSunset Soir, lumière de coucher de soleil à l’approche du crépuscule VeniceSunset skybox used to light an object
builtin://WhippleCreekRegionalPark Sol dans l’ombre ; tonalités vives, vert luxuriant et lumière blanche WhippleCreekRegionalPark skybox used to light an object
builtin://WinterRiver Ambiante diurne, lumière vive et sol clair WinterRiver skybox used to light an object
builtin://DefaultSky Identique à TearsOfSteelBridge DefaultSky skybox used to light an object

Documentation de l’API

Étapes suivantes