【问题标题】:Sizing a view frustum around a quad for 2D GUI in 3D在 3D 中为 2D GUI 调整四边形的视锥体大小
【发布时间】:2011-06-20 04:31:08
【问题描述】:

我一直在考虑如何将我的 GUI 界面放置在 3D 透视投影中,这样我就可以在我的“2D”界面元素上产生 3D 旋转效果。我一直遇到的问题是很难定位元素并确保它们一次都适合视图。

到目前为止,我的想法是在空间中定义一个 2D 四边形来表示“屏幕”表面,并将 GUI 布局在四边形的顶部,就像我在 2D 中布局 gui 一样。然后我将相机移动到四边形的中心,将相机对准它并沿着四边形的表面法线将相机的位置投影一定距离,直到整个四边形适合视锥体。问题是我不确定如何找到投影相机位置的最小距离。

有人知道找到这个的方程式/算法吗?

【问题讨论】:

    标签: math opengl 3d


    【解决方案1】:

    您可以简单地制作一个循环并增加距离并测量直到适合...但我认为通过一些基本的触发您可以找到使图像显示为特定尺寸所需的确切距离。

    你想让它填满一个特定大小的正方形。如果您想像一个这样大小的正方形,相机位于图像的某个距离 (d) 之外并居中,那么您将获得所需图像宽度的一半 (w),以及相机视角的一半(a),并使用正弦求距离 - 你知道角度和对边的大小。

    所以公式基本上是这样的: d = sin(a) * w

    【讨论】:

    • 太棒了,谢谢。我想过你提到的蛮力方法,但还没有找到“正确”的方法(我的三角相当不稳定)。我会试一试,但听起来它会起作用。
    • 在这个答案的帮助下:stackoverflow.com/questions/2866350/move-camera-to-fit-3d-scene 我让一切都像魅力一样工作。谢谢:)
    • 我看到他们也使用了三角函数,但略有不同。这样做总是更好。如果您的角度从未改变,您可以通过预定义比率来提高性能。
    猜你喜欢
    • 2016-06-16
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多