THREE.js 将正交相机安装到场景中

blu*_*yke 3 javascript camera three.js

我搜索了许多有关堆栈溢出的相关问题,但我找不到这个问题的答案。

我的场景中有一大群动态的 Object3D,并用正交相机正面观察它们。

我想要一个简单的函数,在调用时,它会简单地匹配正交相机的上/左/下/右/缩放属性,以正确适应 Object3D 组。

我尝试了各种方法,但我的代码都不值得发布。我需要从一个全新的角度来看待这个问题(双关语)。我找到了各种其他答案,讨论改变相机的视场,一旦你知道从组的边界框的表面到相机的距离,但我不知道如何用正交相机来实现它,因为(据我尝试过)fov 属性不适用于它(也许它实际上适用,我只是不知道)。

所以我不太喜欢索要代码,但尽管如此,我还是想要一个函数,它可以自动调整正交相机的适当属性,以适应作为参数传递给它的对象,例如:

function fitOrthographicCameraToObject3DGroup(group) {
    //implement here (my question)
}
Run Code Online (Sandbox Code Playgroud)

Aas*_*ney 7

计算网格的边界框并应用此代码。这对我有用

        var camera = new THREE.OrthographicCamera(container.offsetWidth / -2, container.offsetWidth / 2, container.offsetHeight / 2, container.offsetHeight / -2, 100, 100000);

        //For centering the meshGroup
            var box = new THREE.Box3().setFromObject(meshGroup);
            box.center(meshGroup.position);
            meshGroup.localToWorld(box);
            meshGroup.position.multiplyScalar(-1);

       //For fitting the object to the screen when using orthographic camera

           Camera.zoom = Math.min(container.offsetWidth / (box.max.x - box.min.x),
                container.offsetHeight / (box.max.y - box.min.y)) * 0.4;
           Camera.updateProjectionMatrix();
           Camera.updateMatrix();
Run Code Online (Sandbox Code Playgroud)