【问题标题】:How to calculate fov for the Perspective camera in three js?如何在三个js中计算透视相机的fov?
【发布时间】:2018-02-16 09:35:35
【问题描述】:

我想在画布上设置CubeGeometry touch,我使用了这个fovFormula,但没有成功。这个CubeGeometry 已经不在画布上了。

var height = 500;
var distance = 1000;
var fov = 2 * Math.atan((height) / (2 * distance)) * (180 / Math.PI);
itsLeftCamera = new THREE.PerspectiveCamera(fov , 400 / 500, 1.0, 1000);

如果我计算错了,请指导我如何克服这个问题?我想以一般化的方式设置它,这样在透视相机的任何位置,这个几何图形都会完美地接触到我的画布,并且这个几何图形应该位于画布的中心。

【问题讨论】:

  • 因为 CubeGeometry 已经超出了画布 :(
  • 对。我得到了它。这是正确的计算方法吗->“距离= camera.z - plane.z”如果不是。请纠正我。

标签: three.js


【解决方案1】:

IMO 您应该计算对角线而不是 fov 计算器中的高度,因为在计算高度时,您专注于高度,从而切断大于高度的宽度部分......当您计算对角线时,您的相机专注于整个矩形...所以代码 imo 应该是

var height = 500; //Height of the viewport
var width = 400; //Width of the viewPort
var distance = 1000; //Distance of the viewer from the viewport

var diag = Math.sqrt((height*height)+(width*width))
var fov = 2 * Math.atan((diag) / (2 * distance)) * (180 / Math.PI);
itsLeftCamera = new THREE.PerspectiveCamera(fov , width / height, 0.1, distance);

【讨论】:

  • 这里的距离代表什么?你的意思是物体和相机之间的距离吗
  • 视口和相机之间的距离
猜你喜欢
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
相关资源
最近更新 更多