2014-11-06 76 views
0

我有一個正在移動和旋轉的3D對象。 我想實現的目的是在屏幕上顯示3D物體的周圍2D框。 (我會定義其2D框,投影到屏幕上時,它包含我的3D對象的最小的矩形。) 這裏是一個快速圖紙來說明我的意思:http://img4.hostingpics.net/pics/719280exemple.png
計算圍繞3D對象的2D矩形

我已經使用3D邊界框嘗試但是由此產生的2D投影太大(旋轉3D盒的投影角落可能離實際頂點相當遠)。 3D對象旋轉之後的2D邊界框也不起作用(因爲它是平坦的,例如圍繞x軸的90°旋轉會將我的2D框投影爲線)
一種替代方法可以是查看所有頂點我的3D對象並確定哪些是x/y中的最小/最大值。然而:(i)這可能是cpu消耗,特別是對於大型模型,以及(ii)我無法找到訪問我的3D對象的(轉換的)頂點的方式 - 我正在使用libgdx。

有沒有人有一個想法如何實現這一目標?

非常感謝

PS:我也張貼這對libgdx論壇,但我想這不僅是libgdx相關

+0

你嘗試過用你正在渲染的相機「投射」三維邊界框? – cfrick 2014-11-06 19:19:36

+0

謝謝。這確實可行。然而,我的鬥爭與libgdx錯誤有關(參見下面的答案) – Francois 2014-11-07 08:53:33

回答

0

我發現,我掙扎的原因是因爲在一個錯誤的當前穩定版本的Libgdx使旋轉邊界框的計算出錯。 (請參閱:Libgdx - min and max of a rotated Bounding Boxhttps://github.com/libgdx/libgdx/commit/0a52109edcd7036062f1aa0dc525837e3c49ec76
這已在最後一個晚上得到糾正。

它現在和一個既可以通過Camera.project獲得2D邊界框由cfrick或簡單地通過讓BoundingBox.min/MAX在正投影的情況下(我的情況)所示