我调整了窗口高度,然后调整宽度。问题是那些行为不同。
这是一个例子 - > 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 );
我不知道它是否按照预期的方式工作,或者我不仅仅了解某些内容,但至少对我而言,后者在默认情况下效果更好。
所以问题是,我是否错过了相关的内容?或者有没有兴趣拥有这种默认行为?
答案 0 :(得分:0)
是。你错过了相关的东西。
对于透视摄影机,camera.fov
始终是垂直视野。所以你的方法是不可接受的。
three.js r.70