2008-12-08 62 views
1

所以我碰到幾次這個問題:從場景圖中獲取絕對位置和旋轉?

我有一些對象在我的3D場景圖是一些其他對象的孩子。讓我們稱他們爲c(小孩)和p(父母)。

c的位置是相對於p定義的。因此c可能有一個位置(1,0,0),當然,由於p有其他位置,比如說(1,2,3),它實際上並不是在我們的世界的原始中呈現,而是在(2 ,2,3)。

現在讓我們說由於某種原因,我們想了解C在世界座標絕對位置(或旋轉,問題是一樣的),這是怎麼做到普遍?

應該Ç知道它的父,並能夠查詢該位置,並將其添加到它自己的最後返回的絕對位置?

回答

4

將兒童座標系中的座標轉換爲全局座標系是實際渲染場景圖所需的一件事情,所以這是一個合理的想要的事情。

你如何做到這一點,將取決於你所使用的圖形庫。場景圖中的每個節點通常都會包含一個將該節點的座標系轉換爲全局座標的矩陣。該矩陣通過將父節點的矩陣與從父座標到子座標的變換矩陣相乘來計算,反之亦然,這取決於事物的定義方式。

如果你有這樣一個矩陣,你可以做你想做的復接孩子中的點座標的計算由節點的矩陣。再次,順序在這裏很重要。

1

恕我直言,這是更常見的父對象瞭解自己的孩子,不是周圍的其他方法。哪一個適合你取決於孩子是否需要知道自己的位置,或者是否需要知道它的某種其他外部樹遍歷算法。

另外,我不認爲旋轉可以處理相同的翻譯。如果父對象被旋轉,它也會翻譯子對象的位置。因此,爲什麼大多數3D系統使用使用(4x4)轉換矩陣的均勻座標,轉換矩陣將旋轉和平移結合在一個矩陣中。