【问题标题】:Calculating a 2D rectangle around 3D object计算围绕 3D 对象的 2D 矩形
【发布时间】:2015-01-03 06:03:26
【问题描述】:

我有一个正在移动和旋转的 3D 对象。 我想要实现的是在屏幕上显示我的 3D 对象周围的 2D 框。 (我会将其 2D 框定义为投影到屏幕上时包含我的 3D 对象的最小矩形。) 这是一个快速绘图来说明我的意思:http://img4.hostingpics.net/pics/719280exemple.png

我尝试使用 3D 边界框,但生成的 2D 投影太大(旋转的 3D 框的投影角可能与实际顶点相距很远)。跟随 3D 对象旋转的 2D 边界框也不起作用(因为它是平的,例如绕 x 轴旋转 90° 会将我的 2D 框投影为一条线)
另一种方法是查看我的 3D 对象的所有顶点并确定哪些是 x/y 中的最小值/最大值。然而:(i) 这可能会消耗 cpu,尤其是对于大型模型,并且 (ii) 我无论如何都找不到访问 3D 对象的(转换后的)顶点的方法 - 我正在使用 libgdx。

有人知道如何实现这一目标吗?

非常感谢

PS:我也在 libgdx 论坛上发布了这个,但我想这不仅仅是与 libgdx 相关的

【问题讨论】:

  • 您是否尝试过 project 与您正在渲染的相机的 3d 边界框?
  • 谢谢。这确实可行。然而,我的挣扎与 libgdx 错误有关(参见下面我的回答)

标签: 3d libgdx


【解决方案1】:

我发现我挣扎的原因是由于当前稳定版本的 Libgdx 中的一个错误导致旋转边界框的计算错误。 (见:Libgdx - min and max of a rotated Bounding Box 和 https://github.com/libgdx/libgdx/commit/0a52109edcd7036062f1aa0dc525837e3c49ec76)
这已在最后的夜间得到纠正。

它现在可以工作了,可以通过 cfrick 指示的 Camera.project 或简单地通过 BoundingBox.min/max 在正交投影的情况下获得 2D 边界框(我的情况)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2016-09-02
    • 2018-11-04
    相关资源
    最近更新 更多