计算3D对象周围的2D矩形

时间:2014-11-06 16:28:05

标签: 3d libgdx

我有一个正在移动和旋转的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相关的

1 个答案:

答案 0 :(得分:0)

我发现我之所以挣扎是因为当前稳定版本的Libgdx中的一个错误导致旋转边界框的计算错误。 (参见:Libgdx - min and max of a rotated Bounding Boxhttps://github.com/libgdx/libgdx/commit/0a52109edcd7036062f1aa0dc525837e3c49ec76
这在过去的夜晚已得到纠正。

它现在可以工作了,可以通过Cfrick指示的Camera.project获取2D边界框,或者只是通过在正交投影(我的情况)下获取BoundingBox.min / max