Я пытаюсь повернуть объект вокруг оси мира. Я нашел этот вопрос: How to rotate a object on axis world three.js?Вращать объект вокруг оси мира
Но это не решило проблему с помощью этой функции:
var rotWorldMatrix;
// Rotate an object around an arbitrary axis in world space
function rotateAroundWorldAxis(object, axis, radians) {
rotWorldMatrix = new THREE.Matrix4();
rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);
rotWorldMatrix.multiplySelf(object.matrix); // pre-multiply
object.matrix = rotWorldMatrix;
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
}
multiplySelf
и getRotationFromMatrix
не определены (я получаю ошибку консоли). Как решить проблему?
Update
Я пытался использовать Quaternion
, но это, кажется, не правильно себя вести. Я пытаюсь повернуть объект по клику пользователя, это функция, которую я написал:
function mouseUp(event) {
var x= event.clientX;
var y= event.clientY;
var dx= (x - xBegin);
var dy= (y - yBegin);
var quaternion= new THREE.Quaternion();
quaternion.setFromAxisAngle(new THREE.Quaternion(dy,dx,0).normalize(),Math.sqrt(dx*dx+dy*dy)/250.0);
object.quaternion.multiplyQuaternions(quaternion,object.quaternion);
}
Он вращается правильно до тех пор, пока объект находится в вертикальном или горизонтальном положении, но если это для пример при 45 градусах от оси x, он вращается очень медленно и в обратном направлении щелчка.
Спасибо за Ответить. Можете ли вы увидеть мое редактирование? Я попытался использовать Quaternion для поворота объектов одновременно вокруг оси x и y (в соответствии с жестом пользователя), но он не поворачивает объект правильно. –
Пожалуйста, не изменяйте вопрос после его ответа. Я ответил на ваш первоначальный вопрос. Пожалуйста, примите этот ответ, и если у вас возникнут дополнительные проблемы, сделайте новую запись ... Я надеюсь, что вы сами сможете решить проблему, так или иначе, - вы проходите в «Quaternion», где вы должны проходить в ' Vector3'. – WestLangley