2010-12-09 88 views
0

我正在玩遊戲glest的某些模型。計算將一組座標轉換爲另一組座標的矩陣

這些模型由一個或多個網格組成;每個網格由許多幀組成,這些幀描述每個動畫幀的每個頂點的位置。在下面顯示的模型中,每個框架中每個輪子中每個頂點的位置都是一個數組。

這些模型已從Blender等3D工具導出。有人在哪裏有原件。

但我想知道,對於簡單的動畫,如車輪轉,你怎麼能計算的變換 - 旋轉,縮放的步驟和翻譯,或在應用到前一幀將導致矩陣在新的框架?

(顯然不是所有的幀都將有這樣的變換,因爲它們可能會扭曲的模型和等。)

而且,你怎麼可以檢測鏡像和其他機會通過應用矩陣,以減少頂點的數據量和再次渲染相同的頂點?

運行速度 - 如果在幾分鐘內測量的話 - 不會成爲問題。

A glest catapult

+0

我不確定我是否理解這個問題......給定一組輪子模型正在轉動的框架,您如何計算將一個框架轉換爲下一個框架的旋轉矩陣?我們是否給出了車輪的旋轉軸,還是我們必須弄清楚? – LarsH 2010-12-10 07:11:25

回答

1

首先,一些假設:

  • 你處理的3D仿射變換(線性變換加上平移)。
  • 你必須每一幀的頂點動畫
  • 可以至少4個頂點在一幀與4個頂點在下一幀

然後聯想可以採取4個頂點爲4D collumn載體(在每個向量的第4個元素中附加1),並連接它們以創建一個名爲X的4x4矩陣。對於它們在變換後的空間中的相應向量執行相同的操作,並將它們稱爲Y,它也將是一個4x4矩陣。小線性代數提供了一種方法找到的4x4矩陣,當應用於X讓你Y.這樣:

AX = Y 
A = YX-1

以此來獲得旋轉和縮放是不平凡的。但是,A的最右邊一列將包含連續幀之間的對象的翻譯。