【问题标题】:Scale or zoom object to the size of Viewport缩放或缩放对象到视口的大小
【发布时间】:2019-10-18 22:06:22
【问题描述】:

我正在开发一个 VR 世界。您可以在世界中心转动和倾斜相机,但不能四处移动相机。

在 VR 世界中,您可以将视频附加到背景并通过单击它或将十字准线移动到元素上来播放它。

视频本身处于“正常”状态。像这样: Example normal

还有一个“缩放”状态。像这样: Example zoom

在缩放状态下,视频不应大于当前视口。我确实有视频的宽度和高度。如何计算正确的视频大小(或深度)以适应视口的大小?

我可以在对象的当前位置缩放对象,或者我可以将对象移动到更靠近相机的位置。我对这两种选择都持开放态度。

我已经尝试过这里提到的选项: Link

let vFOV = this._engine.getCurrentCamera().fov * Math.PI / 180;
let ratio = 2 * Math.tan( vFOV / 2 );
let screen = ratio * (window.innerWidth / window.innerHeight);
let size = this._contentMesh.geometry.boundingBox.max.y;

return (size/screen) / 4;

上面示例的结果是靠近相机的方式。我忽略了什么吗?

感谢您的帮助!

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:
    let vFOV = this._engine.getCurrentCamera().fov * Math.PI / 180;
    let ratio = 2 * Math.tan( vFOV / 2 );
    let size = this._contentMesh.geometry.boundingBox.max.y * 2;
    return size / ratio;
    

    如果您想设置对象的正确 Z 位置以适合屏幕:这就是答案。您可以省略视口的宽度和高度,因为它在计算中并不重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多