Quels sont les avantages et les inconvénients de ces deux solutions ? En particulier pour un jeu en 3D.
Réponses
Trop de publicités?Les skyboxes et les skyspheres sont à peu près équivalentes en ce sens que vous obtiendrez le même type d'effet visuel, c'est-à-dire un joli arrière-plan qui semble se trouver à une grande distance.
Cependant, je recommanderais normalement une boîte à ciel pour les trois raisons suivantes :
- Moins de polygones nécessaires
- Si vous configurez correctement vos matrices de projection, vous ne pouvez pas dire que vous êtes à l'intérieur d'une boîte (si vous vous trompez, vous pouvez voir des distorsions).
- Il est plus facile d'obtenir des images de boîtes à ciel carrées (une pour chaque direction de taille).
En ce qui concerne le dernier point, il est assez facile de configurer un moteur de rendu pour produire des images carrées tracées par rayons qui s'adaptent exactement à une boîte à ciel en créant un champ de vision de 90 degrés, par exemple dans POVRay, vous utiliseriez quelque chose comme ce qui suit :
camera {
right -x
up y
direction -z
location 0
}
J'utilise généralement des textures carrées de 1024*1024 ou 2048*2048.
La seule bonne raison à laquelle je peux penser pour utiliser une sphère céleste est que vous utilisez une sorte d'approche de texture procédurale qui nécessite une génération aux points (approximativement) d'une sphère unitaire. Je pense qu'il s'agit là d'un cas assez particulier et qu'il est peu probable qu'il soit nécessaire pour la plupart des applications de jeu.
Il est plus facile de créer des textures pour la boîte à ciel. Le nombre de polygones sera également plus faible (mais c'est négligeable avec les cartes actuelles).
Le seul problème de la boîte à ciel est que les bords du cube peuvent être visibles dans certaines conditions.
Un autre aspect qui fait la différence :
- la skybox n'entre jamais en collision avec la géométrie - l'image est seulement projetée à partir d'une autre caméra qui tourne en même temps que la caméra de l'utilisateur et qui est "coincée dans la boîte"
- dans le cas d'une sphère céleste, l'arrière-plan sera rendu directement (le joueur peut "se cogner dans le ciel")
Une bonne description et un exemple OpenGL sont aquí .