1
我想旋轉圍繞世界軸的對象。我發現這樣一個問題: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
(我得到一個控制檯錯誤)。如何解決這個問題?
更新
我試圖用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);
}
它只要正確旋轉的物體在垂直或水平位置,但如果它是例如與x軸成45度角,它會非常緩慢地旋轉,並且與咔嗒聲的方向相反。
謝謝你的回覆。你能看到我的編輯?我嘗試使用Quaternion同時圍繞x和y軸(根據用戶手勢)旋轉對象,但它不能正確旋轉對象。 –
回答後請不要更改問題。我回答了你原來的問題。請接受這個答案,如果你還有其他問題,請發表一個新帖子......我希望你自己能夠找出問題 - 無論如何 - 你正在傳遞一個「四元數」,你應該傳遞一個' Vector3'。 – WestLangley