ThreeJS collada 文件未居中

ThreeJS collada file not centred

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

https://threejs.org/examples/#webgl_loader_collada

我在 800 像素的方形模态 window 中工作正常,看起来不错。问题是当我加载任何其他 .dae 文件时它没有居中。

演示显然是使用所有正确的设置创建的,可以将对象和相机放在正确的位置,但我不知道要加载什么文件。

有没有办法让相机直接注视物体,使其居中并将其定位得足够远,以便物体填满容器?

camera.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.Object3D docs、three.js r89。