【问题标题】:Three.js zoom to fit width of objects (ignoring height)Three.js 缩放以适应对象的宽度(忽略高度)
【发布时间】:2023-03-11 15:45:01
【问题描述】:

我有一组块对象,我想设置透视相机,以便它们的整个宽度完全可见(高度会太大 - 没关系,我们要上下平移) .

我看到有很多与此相关的问题,例如:

Adjusting camera for visible Three.js shape

Three.js - Width of view

THREE.JS: Get object size with respect to camera and object position on screen

How to Fit Camera to Object

ThreeJS. How to implement ZoomALL and make sure a given box fills the canvas area?

但是,它们似乎都没有完全涵盖我正在寻找的所有内容:

  • 我对高度不感兴趣,只对宽度感兴趣(它们不会相同 - 尺寸是动态的,但我可以假设高度会大于宽度)

  • camera.position.z(或者我猜的 FOV)是未知数,所以我试图以正确的方式求解方程

(我不擅长 3D 数学。提前致谢!)

【问题讨论】:

    标签: three.js


    【解决方案1】:

    就我而言,我能够大大简化这个问题......

    因为我知道物体的整体大小,所以我可以通过改变相机的 z 位置几次,然后看看哪个看起来最好,来简单地得出一个合适的距离。

    我真正的问题是,由于纵横比不同,在不同尺寸的屏幕上,相对于屏幕宽度,相同的 z 位置给出了不同的宽度。

    所以我所做的只是将距离值除以 camera.aspect。现在块在所有屏幕尺寸上占据屏幕宽度的相同比例:-)

    【讨论】:

    • 看到不赞成票(没有 cmets)... 那我应该删除这个 Q&A 吗?当我这样做时,它告诉我“我们不建议删除带有答案的问题......重复删除已回答的问题可能会导致您的帐户被阻止询问”。所以现在看起来像是在两个不好的选择之间做出选择...... :-/
    • 能否提供技术解决方案。代码 sn-p 或其他。否则这真的无助于任何人提出同样的问题。
    • @MichaelCzechowski 我试图删除这个问题,但它说“你不能删除这个问题,因为其他人已经投入了时间和精力来回答它......”:(
    • 你误会了我。嘿,您的问题值得留在 SO 上。只需调整您的问题和答案。没关系。我不得不解决同样的问题。
    • 即使几年后也有人遇到同样的问题,并且对没有可复制的代码感到失望 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    相关资源
    最近更新 更多