2009-02-11 8 views
1

Je veux texturer une sphère avec une carte de cubes. Jusqu'à présent, mes recherches ont généré de nombreux résultats sur Google impliquant la génération automatique de coordonnées de texture OpenGL, mais je veux générer mes propres coordonnées.Texture de sphères avec cubes (pas de cartes de réflexion)

Étant donné un tableau de coordonnées comprenant les sommets d'une sphère imparfaite (hauteur mappée mais essentiellement une sphère) centrée sur 0,0,0, comment générer des coordonnées de texture pour une carte de cube?

Répondre

6

Faites-vous cela via GLSL? Dans ce cas, textureCube accepte un vec3 comme coordonnée de texture, qui est un vecteur unitaire sur une sphère. Dans votre cas, vous devez prendre la coordonnée de votre fragment par rapport au centre de la sphère, le normaliser et le passer comme une coordonnée. Pas besoin de s'inquiéter de la représentation interne comme six textures bidimensionnelles. Il fonctionne comme cela aussi dans OpenGL à pipeline fixe. Par ailleurs, voici comment les coordonnées sont utilisées en interne: la plus grande coordonnée en valeur absolue est utilisée pour sélectionner l'une des six textures à lire (le signe sélectionne le positif ou le négatif). Les deux autres coordonnées sont utilisées pour rechercher le texel dans la carte sélectionnée, après avoir été divisé par la plus grande coordonnée.

+0

* gifle la tête * Merci! Je travaille en langage C++ simple, mais je finirai par passer à GLSL dès que j'en saurai plus. –