7
votes

Comment changer le centre de rotation dans OpenGL

J'ai un modèle 3D (opengl ES 1.1 iPhone sdk v3.0) qui est un peu complexe ( c'est-à-dire des milliers de sommets et faces ) et je voudrais Faites pivoter ce modèle autour de l'axe des Y ou à proximité du centre du modèle. Le problème est que le glrotate tourne mon modèle autour d'un point à / près du centre de l'un de ses bords inférieurs , non proches du centre du modèle . Imaginez une voiture conduisant des cercles très serrés autour d'un post clair, et c'est essentiellement ce que j'ai. Je veux que la voiture soit empalée sur le post clair et être tournée autour de lui. (Une source ci-dessous) xxx

la question:

est là un moyen facile de changer le centre de rotation dans OpenGL?


1 commentaires

Pourriez-vous également nous montrer le code qui dessine la voiture?


3 Réponses :


12
votes

Bien sûr. Traduisez l'objet vers le bas. Puis faites-le pivoter.


5 commentaires

Je suis incapable de ré-positionnez le modèle en raison de contraintes dans le jeu. Donc, je ne peux pas traduire. Je vais mettre à jour avec une source dans une seconde ..


Traduisez-le de sorte que le point que vous souhaitez faire pivoter est à l'origine, puis faites-la tourner, puis la traduisez-la à l'emplacement que vous le souhaitez.


@John, cela le fera orbiter la nouvelle origine, pas tourner autour de "lui-même" (pensez année au lieu de la journée).


Traduire >> Tourner >> Traduire le dos Travaillé. Merci!


Ne va pas faire semblant de comprendre les maths ... mais votre solution m'a aidé @rexonronoides



1
votes

Vous devez utiliser votre API modèle pour modifier le modèle origine. Si vous pouviez dire lequel vous utilisez-vous, peut-être que je pourrais aider d'autres.

Si vous avez accès à un logiciel pouvant éditer votre modèle, vous pouvez corriger cela directement dans le fichier de modèle et supprimer tous les hacks de votre code.


0 commentaires

2
votes

Il convient de rappeler que toutes les opérations de OpenGL sont effectuées par rapport à l'origine. Vous ne pouvez pas «changer le centre de rotation dans OpenGL». Vous déplacez le monde par rapport à cette origine.


2 commentaires

Son parle du centre de rotation d'un maillage, vous pouvez certainement traduire cela puis faire pivoter autour de la nouvelle "origine" du maillage. (voir réponse acceptée)


La réponse acceptée est de savoir traduire par rapport à l'origine mondiale, tournez puis traduisez ensuite. Exactement ce que je disais. Si vous ne comprenez pas comment OpenGL fonctionne, je ne peux pas vous aider.