Probablement la question de rotation de troisjs pas 9000, je veux simplement avoir 3 boutons d'interface utilisateur pour faire pivoter un objet de 90 degrés dans chaque direction x, y & z avec chaque clic sur chaque, comment cela pourrait-il être difficile?Comment faire pour faire pivoter Object3d autour de l'axe X, Y et Z sans avoir les axes à retourner ou provoquer le verrouillage de cardan?
L'utilisation de méthodes de rotation régulières qui utilisent euler provoquera un blocage du cardan, et en utilisant des quan- térités, les axes se retourneront de manière aléatoire dans lesquels l'axe z sera à un point ou à un autre.
s'il vous plaît jeter un oeil à ma démo de travail: http://grutex.com/webgl/demos/help/
Edit: voici les fonctions de rotation partie:
function z_rotate(){
var startAngle = 0;
var start = {angle: startAngle};
var end = {angle: startAngle + 90};
var lastAngle=0;
var tween = new TWEEN.Tween(start)
.to(end, 400)
.easing(TWEEN.Easing.Quadratic.Out)
.onUpdate(function(){
startAngle=this.angle;
my_object.rotateOnAxis(new THREE.Vector3(0,0,1),degreeToRadians(startAngle-lastAngle));
lastAngle=startAngle;
})
.start();
}
function x_rotate(){
var startAngle = 0;
var start = {angle: startAngle};
var end = {angle: startAngle + 90};
var lastAngle=0;
var tween = new TWEEN.Tween(start)
.to(end, 400)
.easing(TWEEN.Easing.Quadratic.Out)
.onUpdate(function(){
startAngle=this.angle;
my_object.rotateOnAxis(new THREE.Vector3(1,0,0),degreeToRadians(startAngle-lastAngle));
lastAngle=startAngle;
})
.start();
}
function y_rotate(){
var startAngle = 0;
var start = {angle: startAngle};
var end = {angle: startAngle + 90};
var lastAngle=0;
var tween = new TWEEN.Tween(start)
.to(end, 400)
.easing(TWEEN.Easing.Quadratic.Out)
.onUpdate(function(){
startAngle=this.angle;
my_object.rotateOnAxis(new THREE.Vector3(0,1,0),degreeToRadians(startAngle-lastAngle));
lastAngle=startAngle;
})
.start();
}
Bienvenue sur SO. Veuillez ajouter votre code à votre message. Astuce: évitez d'appeler 'new' à chaque image. Créez une instance d'un objet et réutilisez-la. – WestLangley
Étude [cette réponse] (http://stackoverflow.com/questions/20089098/three-js-adding-and-removing-children-of-rotated-objects/20097857#20097857), et entre la rotation d'un parent temporaire objet, à la place. – WestLangley
@WestLangley merci !, si ce n'était pas pour vous j'aurais été frapper ma tête contre le mur pendant des jours, vous êtes la seule personne que je souhaitais pour me répondre après avoir lu une tonne de vos réponses sur SO concernant three.js, je vais poster le code modifié ci-dessous – Blimpy