2010-09-22 5 views
2

J'ai besoin de dessiner un globe tournant en utilisant opengl es dans android. Je pense que nous devons dessiner une sphère et ensuite appliquer une carte de texture dessus. Si j'ai raison, nous ne pouvons pas utiliser la bibliothèque d'utilitaires glu dans Opengl ES pour dessiner une sphère. J'ai trouvé du code dans l'objectif C, mais ensuite je devais le faire fonctionner sur android.Spinning globe dans Opengl-es

http://www.iphone4gnew.com/procedural-spheres-in-opengl-es.html

est-il une autre façon de le faire? Je ne sais pas comment aborder ce problème. Pourriez-vous me donner des informations qui me permettraient de regarder dans la bonne direction?

Merci

Répondre

8

Vous pouvez créer votre propre fonction de rendu de sphère. Une sphère tesselated n'est pas plus qu'un empilement de n segments de cône, chacun approché avec m tranches.

Cette image (courtsey de dglwiki.de) illustre ceci: gluSphere construction

(le texte allemand se traduit par « Si la résolution est faible, la sphère dégénère à d'autres organes symetriques)

Pour Pour construire la sphère, vous devez spécifier le point central, le rayon, le nombre de piles et le nombre de tranches par pile.

Le premier pôle de votre sphère peut être n'importe quel point avec une distance de rayon du point central. Le vecteur de ce point au point central définit l'axe de rotation de votre sphère (et donc la position du second pôle). Ensuite, vous devrez approximer plusieurs cercles de latitude équidistants sur votre sphère autour de l'axe de rotation. . Le nombre de cercles devrait être le nombre de piles -1. Chacun de ces cercles devrait avoir autant de sommets que le nombre de tranches désiré.

Après les avoir calculés, vous avez suffisamment d'informations géométriques pour construire vos faces de sphères. Commencez avec un ventilateur triangulaire provenant de l'un des pôles en utilisant les sommets du premier cercle. Ensuite, construisez des bandes triangulaires pour chaque paire de cercles de latitude voisins. La dernière étape consiste à construire un autre éventail de triangle du deuxième pôle au dernier de vos cercles de latitude.

En utilisant cette approche, vous pouvez générer des sphères arbitraires de la douceur arbitraire

+0

Merci, laissez-moi essayer ceci .. – Carl

+0

Je vais essayer aussi! Si je le fais bien, je posterai quelque chose pour aider les autres. Je ne vais pas essayer ce soir ;-) – MrJoeBlow

2

En plus de ce sum1 dit, le lien que vous fournissez Obj-C code est la plupart du temps juste C, ce qui se traduit assez bien à Java/Android. La technique fournie est très similaire à celle suggérée par sum1, bien que l'auteur n'utilise qu'un seul ventilateur en haut, puis dessine tout le reste de la sphère avec une seule bande de triangle. De plus, son globe «coule de son côté», avec le ventilateur au «pôle Est» et l'autre au «pôle Ouest». Cependant, vous pouvez utiliser le lien que vous fournissez tel quel ou effectuer les réglages assez facilement.

Questions connexes