我有一个正在移动和旋转的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相关的答案 0 :(得分:0)
我发现我之所以挣扎是因为当前稳定版本的Libgdx中的一个错误导致旋转边界框的计算错误。 (参见:Libgdx - min and max of a rotated Bounding Box和https://github.com/libgdx/libgdx/commit/0a52109edcd7036062f1aa0dc525837e3c49ec76)
这在过去的夜晚已得到纠正。
它现在可以工作了,可以通过Cfrick指示的Camera.project获取2D边界框,或者只是通过在正交投影(我的情况)下获取BoundingBox.min / max