是否可以围绕对象的末端旋转Object3D对象?我用const boundingBox = new THREE.Box3().setFromObject(this.object)
找到了对象的中心,以确定中心。在某个点旋转会意味着将对象平移到一个点,然后旋转,然后再平移吗?
答案 0 :(得分:1)
是否可以将Object3D对象绕其末端旋转?
是的。默认情况下,Object3D绕其中心旋转,但是可以通过“包装”父对象(Object3D)中的对象并设置父对象的位置(这也是一个旋转点)来更改旋转点:
function changeRotationPoint(obj, scene, position) {
// create parent and add it to scene
const parent = new THREE.Object3D();
parent.add(obj);
if (obj.parent) {
obj.parent.add(parent);
} else {
// add to THREE scene if obj doesn't have a
// parent
scene.add(parent);
}
// position for rotation,
// for example (put your data): { x: 0.1, y: 0.1, z: 0 }
parent.position.set(position.x, position.y, position.z);
// correct position of obj, so only rotation point
// will be changed
const x = obj.position.x - position.x,
const y = obj.position.y - position.y,
const z = obj.position.z - position.z
obj.position.set(x, y, z);
}
// call function
changeRotationPoint(this.object, scene, { x: 0.1, y: 0.1, z: 0 });
// rotate this.object
this.object.parent.rotation.set(0.1, 0.2, 0.3);