Les effets atmosphériques avec Giro3D

By jeudi 12 décembre 2024NewsFR

Cet article concerne des fonctionnalités en cours de développement et sujettes à évolution.

Dans le cadre du développement du mode globe de Giro3D (voir notre article à ce sujet), voyons de plus près les effets atmosphériques proposés en complément de la nouvelle entité Globe: Glow, Atmosphere et SkyDome.

👉 Ces trois entités sont totalement indépendantes de l’entité Globe (et de toutes les autres entités de Giro3D) et peuvent donc être utilisées dans des scènes ne comportant aucun globe (par exemple en remplaçant les globes par de simples sphères colorées).

L’entité Glow

Cette entité permet de représenter un simple halo lumineux sphérique. Il permet de représenter un objets émettant de la lumière (comme le Soleil), ou bien une atmosphère très simplifiée (en terme de puissance de calcul graphique requise). Elle n’est pas sensible à l’éclairage de la scène.

const SUN_RADIUS = 696_340_000;

const glow = new Glow({
    color: '#ff7800',
    ellipsoid: Ellipsoid.sphere(SUN_RADIUS),
});
Création d'un halo lumineux de la taille du soleil
Le globe du soleil seul

Le globe du soleil seul

Le halo du soleil seul

Le halo du soleil seul

Globe et halo combinés

Globe et halo combinés

L’entité Atmosphere

Cette entité permet de représenter fidèlement une atmosphère vue de l’espace. Elle requiert une position du soleil pour fonctionner, via la méthode Atmosphere.setSunPosition().

const atmosphere = new Atmosphere({ ellipsoid: Ellipsoid.WGS84 });

const sunLatitude = 5;
const sunLongitude = 45;

const sunPosition = Ellipsoid.WGS84.toCartesian(
    sunLatitude,
    sunLongitude,
    50_000_000,
);

atmosphere.setSunPosition(sunPosition);
Création d'une atmosphère autour de la terre
L'entité Atmosphere combinée à une simple sphère bleue

L’entité Atmosphere combinée à une simple sphère bleue

Une fois combiné avec un Globe paramétré avec des couches images appropriées, voici le résultat:

Globe terrestre et atmosphère combinés

Globe terrestre et atmosphère combinés

L’entité SkyDome

Cette dernière entité est le pendant de l’entité Atmosphere, mais vu depuis l’intérieur. Elle permet de représenter la diffusion Rayleigh, c’est à dire la diffusion des rayons du soleil dans le ciel (ce qui donne sa couleur au ciel). Le disque solaire est également représenté avec fidélité selon la position apparente du soleil par rapport à l’horizon.

const skyDome = new SkyDome();
instance.add(skyDome);

atmosphere.setSunPosition(sunPosition);
Ajout d'un _Skydome_ à l'instance Giro3D
Un crépuscule

Un crépuscule

Une heure plus avancée

Une heure plus avancée

Conclusion

Combinées aux éclairages dynamiques et aux ombres portées, ces trois nouvelles entités permettront aux utilisateurs de créer de belles scènes réalistes, de l’échelle locale à celle du système solaire.