【问题标题】:ThreeJS : Calculate FOV for mesh in Orthographical Camera三JS:计算正交相机中网格的FOV
【发布时间】:2015-01-23 09:26:12
【问题描述】:

所以我已经尝试解决这个问题几个小时,但无法让它工作。

我创建了一个网格并在正交视图中从上方查看。

网格的尺寸是: 400 * 500 高度(需要吗?)是 300

它被放置在点 0,0,0

相机定位在 0, 5000, 0 上,正下方朝向 0, 0, 0

现在我唯一需要知道的是如何计算 fov

_CoreManager.GetCamera().setFov(X);

这样相机就可以从上方看到整个网格 + 每侧 100 个单位,这样用户就可以看到网格的边界位置。

试过这个,要么我做错了,要么它对 Ortho 不起作用, https://github.com/mrdoob/three.js/issues/1239

谢谢你:)

更新:

我尝试了一种我认为有意义的新方法,但没有......

http://forums.cgsociety.org/archive/index.php/t-725538.html

var dist = _Camera.position.y - _mesh.position.y;
var width = _mesh.geometry.parameters.width;

var halfHorizontalFOV = Math.atan((width / 2) / dist);
halfHorizontalFOV = Algorithms.ConvertRadiansToDegrees(halfHorizontalFOV);

给我的学位与应有的水平相差甚远。

【问题讨论】:

  • OrthographicCamera 没有 FOV 参数。
  • 好吗?我正在使用组合相机类,每当我更改 fov 时,图像就会改变(放大和缩小)。

标签: three.js orthographic fieldofview


【解决方案1】:

使用正交修复解决了我的问题:

https://github.com/mrdoob/three.js/commit/fb07c9bc192c0eaedb9df187b35f69c37716c1aa

var zoom = orthoWidth / meshWidth;
_Camera.setZoom(zoom);

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多