Webgl ThreeJS正交摄影机:调整场景到窗口的大小

Webgl ThreeJS正交摄影机:调整场景到窗口的大小,webgl,three.js,Webgl,Three.js,在ThreeJS中,我使用正交摄影机,因为我有几个对象应该从前面显示,没有任何透视失真。这在一个问题上很好:我创建的一堆对象应该总是大致填满屏幕,但不能太小或太大。使用例如 var factor = 4.5; this.camera = new THREE.OrthographicCamera(-window.innerWidth / factor, window.innerWidth / factor, window.innerHeight / factor, -window.innerHei

在ThreeJS中,我使用正交摄影机,因为我有几个对象应该从前面显示,没有任何透视失真。这在一个问题上很好:我创建的一堆对象应该总是大致填满屏幕,但不能太小或太大。使用例如

var factor = 4.5;
this.camera = new THREE.OrthographicCamera(-window.innerWidth / factor, window.innerWidth / factor, window.innerHeight / factor, -window.innerHeight / factor, 1, 1000);
。。。我可以让它在1920x1080像素分辨率下运行良好,但当我将窗口调整为更小的大小并重新加载页面时,对象将开始变得太大,因为它们的行为就像是固定的一样。(使用带透视的组合摄影机时,调整大小是动态的,效果很好。)如何使用正交摄影机解决此问题?还是有一个技巧可以让我在组合相机中关闭透视


谢谢

我不确定这是否有助于解决您的特定问题。我不确定这是否正确,或者是否有更好或更标准的方法来处理这个问题。但到目前为止,这就是我在正字法代码中使用的。无论如何它都不完美,但你可以试试。如果你有更好的发现,请回信告诉我

        $(window).on('resize', function () {
            // notify the renderer of the size change
            renderer.setSize(window.innerWidth, window.innerHeight);
            // update the camera
            camera.left = -window.innerWidth / camFactor;
            camera.right = window.innerWidth / camFactor;
            camera.top = window.innerHeight / camFactor;
            camera.bottom = -window.innerHeight / camFactor;
            camera.updateProjectionMatrix();
        });

所以我猜只是创建一个新实例?什么是
camFactor
?@AlexLenail可以说是“缩放”。它控制相机平截体的大小。较小的数字意味着更窄的“视野”,因此看起来会放大。(因为你不能通过移动正交摄影机来放大)。我现在也有同样的问题。你有没有想过?