0
有沒有簡單的方法來改變THREE.Object3D
的旋轉軸? 默認點是Object3d
的位置點。Three.js - 有沒有簡單的方法來改變Object3D的旋轉軸?
我有組(實現爲THREE.Object3D
)的對象,我想旋轉所有對象在THREE.Vector3
點左右,可以在運行時更改。
注意:組的位置不能改變。提前
someButton.onClick(function() {
var object = editor.selected;
if (!object instanceof THREE.Object3D) return;
var pivot = new THREE.Vector3(100, 0, 0);
var vectorToPivot = object.position.sub(pivot);
var moveToPivot = new THREE.Matrix4().makeTranslation(vectorToPivot.x,
vectorToPivot.y, vectorToPivot.z);
var rotation = new THREE.Matrix4().makeRotationZ(Math.PI);
var inverseMove = new THREE.Matrix4().makeTranslation(-vectorToPivot.x,-vectorToPivot.y, -vectorToPivot.z);
var matrix = inverseMove.clone().multiply(rotation).multiply(moveToPivot);
object.applyMatrix(matrix);
editor.signals.objectChanged.dispatch(object);
});
感謝:
我曾經嘗試這樣做(與Derte Trdelnik幫助),但它不工作!
做你的意思是:在所有線路THREE.Matrix4?無論如何,它會導致組內對象的位置變化或組本身的位置。 – RoeePeleg
請看我的問題編輯。 – RoeePeleg
是的我打算使用矩陣,它確實改變了位置,我可能誤解了你的問題 - 你不想在旋轉之後改變位置?在這種情況下,使樞軸矢量[0,0,0],它將圍繞中心旋轉,或者如果由於某種原因,你有一個旋轉矩陣你想使用 - 使用它並將組移回到其前中心 –