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
我调整了 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