three.js window 调整大小表现不同

three.js window resizing behaving differently

我调整了 window 高度,然后调整了宽度。问题是那些行为不同。

这是一个例子 -> Example 1

renderer.setSize (window.innerWidth, window.innerHeight);
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix ();

如果在两种情况下它们的行为方式相同就好了。

所以我写了 -> Example 2

renderer.setSize (window.innerWidth, window.innerHeight);
var aspect = window.innerWidth / window.innerHeight;
var fov = 90;
camera.aspect = aspect;

if (aspect > 1.0) {
    ymax = camera.near * Math.tan (
            THREE.Math.degToRad(fov*0.5));
    ymin = - ymax;
    xmin = ymin * aspect;
    xmax = ymax * aspect;
} else {

    xmax = camera.near * Math.tan (
            THREE.Math.degToRad(fov*0.5));
    xmin = - xmax;
    ymin = xmin / aspect;
    ymax = xmax / aspect;
}

camera.projectionMatrix.makeFrustum( xmin, xmax,
    ymin, ymax, camera.near, camera.far );

我不知道它是否按预期的 atm 工作,或者我不只是理解了一些东西,但至少对我来说,后者作为默认值工作得更好。

所以问题差不多,我是不是漏掉了一些相关的东西?或者是否有兴趣拥有这种默认行为?

是的。你错过了一些相关的东西。

对于透视相机,camera.fov 始终是垂直视野。所以你的做法是不行的。

three.js r.70