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],它将围绕中心旋转,或者如果由于某种原因,你有一个旋转矩阵你想使用 - 使用它并将组移回到其前中心 –