我是ThreeJS的新手,我正在尝试将collada文件加载到查看器中。我首先复制了Elf colladaLoader演示的代码。
https://threejs.org/examples/#webgl_loader_collada
我在800px方形模式窗口内工作正常,看起来不错。麻烦的是,当我加载任何其他.dae文件时,它不会居中。
显然,使用所有正确的设置创建演示,将对象和相机放在正确的位置,但我不知道要加载哪些文件。
有没有办法让相机直接看到物体,使其居中并将其放置得足够远,以便物体充满容器?
答案 0 :(得分:1)
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。