在开发中,我们有时候需要知道模型子级的中心点做一些操作,但是常规的模型子级中心点的位置在模型的中心,这时候,就需要我们自己手动获取,方法如下:
model.traverse(child => {
if (child.isMesh) {
let center = new THREE.Box3().setFromObject(child).getCenter();
}
});
当我们获取中心点位置后,就可以根据中心点位置做一些我们想要的功能,例如给子级添加标签等等。
调整旋转中心的方式如下:
// 调整模型自身旋转中心
function changeModelCenter(x, y, z, obj) {
const wrapper = new THREE.Object3D(); // 存放目标模型
wrapper.position.set(x, y, z);
obj.position.set(-x, -y, -z);
wrapper.add(obj);
return wrapper;
}