3d 计算三维对象周围的二维矩形

3d 计算三维对象周围的二维矩形,3d,libgdx,3d,Libgdx,我有一个正在移动和旋转的3D对象。 我想要实现的是在屏幕上显示我的3D对象周围的2D框。(我将其2D框定义为投影到屏幕上时包含3D对象的最小矩形。) 下面是一个快速绘图来说明我的意思: 我尝试过使用3D边界框,但生成的2D投影太大(旋转3D框的投影角可能离实际顶点很远)。三维对象旋转后的二维边界框也不起作用(因为它是平面的,例如绕x轴旋转90°会将我的二维框投影为一条线) 另一种方法是查看3D对象的所有顶点,并确定哪些顶点是x/y中的最小/最大值。然而:(i)这可能会消耗cpu,尤其是对于大型

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

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

有人知道如何做到这一点吗

非常感谢


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

我发现我之所以苦苦挣扎,是因为libgdx当前稳定版本中的一个bug导致旋转边界框的计算错误。(见:和)
这在昨晚的睡梦中得到了纠正


它现在可以工作了,您可以通过cfrick指示的Camera.project获得2D边界框,或者在正交投影(我的案例)的情况下,只需获得BoundingBox.min/max即可获得2D边界框。

您是否尝试过使用正在渲染的摄影机投影3d边界框?谢谢。这确实有效。然而,我的挣扎与libgdx bug有关(参见下面我的答案)