three.js窗口调整大小的行为不同

时间:2015-01-20 14:15:20

标签: resize three.js

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

这是一个例子 - > 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 );

我不知道它是否按照预期的方式工作,或者我不仅仅了解某些内容,但至少对我而言,后者在默认情况下效果更好。

所以问题是,我是否错过了相关的内容?或者有没有兴趣拥有这种默认行为?

1 个答案:

答案 0 :(得分:0)

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

对于透视摄影机,camera.fov始终是垂直视野。所以你的方法是不可接受的。

three.js r.70