Javascript ThreeJS collada文件未居中

Javascript ThreeJS collada文件未居中,javascript,three.js,collada,Javascript,Three.js,Collada,我是3JS新手,我正在尝试将collada文件加载到查看器中。我从复制Elf colladaLoader演示的代码开始 我在一个800px的方形模态窗口中工作得很好,看起来不错。问题是当我加载任何其他.dae文件时,它没有居中 这个演示显然是用所有正确的设置创建的,以将对象和相机放在正确的位置,但我不知道将加载哪些文件 有没有办法让相机直视对象,使其居中,并将其放回足够远的位置,使对象充满容器?相机。lookAt(object.position)可以完成大部分您想要的操作。将相机定位在适当的距

我是3JS新手,我正在尝试将collada文件加载到查看器中。我从复制Elf colladaLoader演示的代码开始

我在一个800px的方形模态窗口中工作得很好,看起来不错。问题是当我加载任何其他.dae文件时,它没有居中

这个演示显然是用所有正确的设置创建的,以将对象和相机放在正确的位置,但我不知道将加载哪些文件

有没有办法让相机直视对象,使其居中,并将其放回足够远的位置,使对象充满容器?

相机。lookAt(object.position)
可以完成大部分您想要的操作。将相机定位在适当的距离有点主观。我通常会这样做:

object.updateMatrixWorld();
const box = new THREE.Box3().setFromObject(object);
const size = box.getSize().length();
const center = box.getCenter();

object.position.x += (object.position.x - center.x);
object.position.y += (object.position.y - center.y);
object.position.z += (object.position.z - center.z);
camera.position.copy(center);
camera.position.x += size / 2.0;
camera.position.y += size / 5.0;
camera.position.z += size / 2.0;
camera.near = size / 100;
camera.far = size * 100;
camera.updateProjectionMatrix();
camera.lookAt(center);

请看,three.js r89。

谢谢,这似乎基本上可行,尽管大多数模型似乎偏离了中心。我猜这是因为物体本身的中心与物体可见部分的中心不匹配?