2017-06-28 6 views
0

Je souhaite faire pivoter une image le long des trois axes de manière à ce que toutes les rotations soient prises en compte dans l'ordre approprié.
Am utilisant Three Js bibliothèque et la rotation semble fonctionner le long d'un axe et avec les trois axes, la rotation est anormale. J'ai vu quelques idées sur la rotation en utilisant quaternions pour éviter le verrou de cardan et j'ai essayé Euler mais il n'a pas réussi.Comment faire pivoter une sphère le long des trois axes (x, y, z) simultanément

sphericImageMesh_ est ma sphère et this.getRollDeg() est méthode pour obtenir rouleau comme indiqué par la caméra.

Ce que j'ai essayé est ici-bas:

// var euler = new THREE.Euler(- THREE.Math.degToRad(this.getRollDeg()), - THREE.Math.degToRad(this.getHeadingDeg()) , - THREE.Math.degToRad(this.getPitchDeg()), 'XYZ'); 
// this.sphericImageMesh_.setRotationFromEuler(euler); 

// this.sphericImageMesh_.rotateZ(THREE.Math.degToRad(-this.getPitchDeg())); 
// this.sphericImageMesh_.rotateX(THREE.Math.degToRad(-this.getRollDeg())); 
this.sphericImageMesh_.rotateY(THREE.Math.degToRad(-this.getHeadingDeg())); 

Je l'ai vu sur l'utilisation de Quaternions et MatrixX4 et je ne suis pas sûr de savoir comment l'appliquer. Toute aide serait appréciée.

Répondre

0

vous pourriez essayer de réorganiser les rotations. Je pense que XYZ est par défaut, mais je trouve que YXZ ou YZX fonctionne de manière plus intuitive. utilisez n.rotation.order ('YXZ'); et voyez s'il ne se comporte pas plus près de ce à quoi vous pensez. Si vous faites un volim où + Z est en avant, cela fonctionnera plus intuitivement. Vous avez lacé, puis tanguez, puis roulez.

https://threejs.org/docs/index.html#api/math/Euler

+0

Il n'a pas fonctionné, j'ai essayé toutes les combinaisons de commande, ou devrais-je utiliser kappa, oméga, phi au lieu de lacet, roulis et tangage – riotday

+0

? as-tu lu la documentation que j'ai liée? La hauteur et le roulis du lacet ne sont pas des mots-clés pour TROIS js, ni kappa omega phi. J'utilisais simplement la terminologie de «Flightsim». Incluez un violon avec votre projet et décrivez le comportement que vous recherchez. "ça n'a pas marché" peut signifier beaucoup de choses. – OtterFamily