Partager via


Mappage d’environnement sphérique (Direct3D 9)

Les cartes d’environnement sphériques, ou cartes de sphères, sont des textures spéciales qui contiennent une image de la scène entourant un objet, ou les effets d’éclairage autour de l’objet. Contrairement aux cartes d’environnement cubiques, les cartes de sphère ne représentent pas directement l’environnement d’un objet. L’image de théière dans la rubrique Mappage d’environnement (Direct3D 9) montre les effets de réflexion que vous pouvez obtenir avec le mappage de sphères. Une carte de sphères est une représentation 2D de la vue complète à 360 degrés de la scène entourant un objet, comme si elle était prise à travers une lentille fish-eye, comme illustré dans l’illustration suivante.

illustration d’une carte de sphères de l’intérieur d’un bâtiment

Coordonnées de texture pour les cartes d’environnement sphériques

Les coordonnées de texture que vous spécifiez pour chaque sommet recevant un mappage d’environnement doivent traiter la texture en fonction de la distorsion réfléchissante créée par la courbure de la surface. Les applications doivent calculer ces coordonnées de texture pour chaque sommet pour obtenir l’effet souhaité. Un moyen simple et efficace de générer des coordonnées de texture utilise le vertex normal comme entrée. Bien qu’il existe plusieurs méthodes, l’équation suivante est courante parmi les applications qui effectuent un mappage d’environnement avec des mappages de sphères.

équation de calcul des coordonnées de texture pour une carte de sphères

Dans ces formules, vous et v sont les coordonnées de texture calculées, et NX et NY sont les composants x et y du vertex de l’espace caméra normal. La formule est simple mais efficace. Si la normale a un composant x positif, la normale pointe vers la droite et la coordonnée u est ajustée pour traiter la texture de manière appropriée. De même pour la coordonnée v : positif y indique que la normale pointe vers le haut. L’inverse est vrai pour les valeurs négatives dans chaque composant.

Si la normale pointe directement sur la caméra, les coordonnées obtenues ne doivent pas recevoir de distorsion. Le biais +0,5 pour les deux coordonnées place le point de distorsion zéro au centre de la carte de sphère, et un sommet normal de (0, 0, z) répond à ce point. Cette formule ne tient pas compte du composant z de la norme, mais les applications qui utilisent la formule peuvent optimiser les calculs en ignorant les sommets avec une normale qui a un élément z positif. Cela fonctionne pour les objets à l’ombre plate, car, dans l’espace de l’appareil photo, si la normale pointe loin de l’appareil photo (z positif), le sommet est supprimé lorsque l’objet est rendu. Pour les objets ombrés de Gouraud, une normale peut pointer loin de l’appareil photo (x positif), et le triangle contenant le sommet peut toujours être visible. Si vous ne calculez pas vous et v pour ce vertex, le visage peut toujours être utilisé, ce qui entraîne un comportement inattendu.

Application de cartes d’environnement sphériques

Vous appliquez un mappage d’environnement aux objets de la même manière que pour toute autre texture, en définissant la texture à l’étape de texture appropriée avec la méthode IDirect3DDevice9::SetTexture . Définissez le premier paramètre sur l’index de la phase de texture souhaitée, puis définissez le deuxième paramètre sur l’adresse de l’interface IDirect3DDevice9 retournée lorsque vous avez créé la texture pour la carte d’environnement. Vous pouvez définir les opérations et arguments de fusion de couleur et alpha selon les besoins pour obtenir les effets de fusion de texture souhaités.

Mappage d’environnement