J'ai créé un petit jeu de réservoir il y a un an, comme preuve de concept en utilisant three.js et WebSockets. Cependant dans les versions ultérieures de Three.js cette façon de faire des quaternions a changé. Je ne peux trouver aucun exemple de code de la façon de le faire dans la dernière version. Ceci est mon ancien code:Quaternions dans Three.Js - Coller l'objet au paysage
function calculateQuaternions(tankmesh) {
var n = getLandscapeNormal(tankmesh);
var q1 = new THREE.Quaternion();
q1.setFromAxisAngle(new THREE.Vector3(0, 1, 0), tankmesh.rotation.y);
var q2 = new THREE.Quaternion();
var axis = new THREE.Vector3(0, 1, 0);
var theta = Math.acos(axis.dot(n));
axis.cross(n).normalize();
q2.setFromAxisAngle(axis, theta);
q2.multiply(q1);
tankmesh.quaternion = q2;
}
La fonction getLandscapeNormal renvoie un vecteur normalisé indiquant la direction du réservoir schould être incliné (calculée à partir de la pente du paysage à la position des réservoirs). Lorsque le code a fonctionné, le réservoir a bougé comme dans cette vidéo: https://www.youtube.com/watch?v=CMNllyqq_O0
Quelqu'un peut-il m'aider à faire ce calcul maintenant?
'tankmesh.quaternion .copy (q2); 'est le moyen de le faire. – WestLangley