我無法理解爲什麼模型和視圖矩陣傳統上結合在一起。我知道在頂點着色器中矩陣乘法的次數越少越好,但將投影矩陣和視圖矩陣組合起來更有意義。爲什麼模型和視圖矩陣特別經常結合在一起?
這是因爲它們本質上都是相機屬性。我首先通過模型矩陣將頂點轉換爲世界空間,執行光照等,然後使用組合的相機矩陣轉換爲標準化的剪輯空間。
我知道我可以這樣做,如果我想在可編程管線中,但我想知道爲什麼歷史上人們將模型和視圖矩陣結合起來。
我無法理解爲什麼模型和視圖矩陣傳統上結合在一起。我知道在頂點着色器中矩陣乘法的次數越少越好,但將投影矩陣和視圖矩陣組合起來更有意義。爲什麼模型和視圖矩陣特別經常結合在一起?
這是因爲它們本質上都是相機屬性。我首先通過模型矩陣將頂點轉換爲世界空間,執行光照等,然後使用組合的相機矩陣轉換爲標準化的剪輯空間。
我知道我可以這樣做,如果我想在可編程管線中,但我想知道爲什麼歷史上人們將模型和視圖矩陣結合起來。
在圖形編程中,相機不存在。它總是固定在(0,0,0)並朝向(0,0,-1)。照相機大家都知道這完全是人爲的,模仿我們習慣觀察物體的方式,就像人類一樣,我的意思是:移動,轉動頭部等等。爲了模仿這一點,CG引入了相機的概念。很有趣並且衆所周知的是,您是移動到相機的右邊還是將場景中的所有其他物體移動到左邊都是同樣的事情。然後通過組合對象在一個矩陣中的所有變換,將該不變性轉換爲modelMatrix
- MVMatrix
。
視圖和投影矩陣是分開的,因爲這些矩陣做了非常不同的轉換。其中一個與modelMatrix
非常相似,代表三維空間轉換,另一個用於計算查看對象的角度。
啊。最後一段是我正在尋找的。 –
很高興幫助。在www.scratchapixel.com上,您可以從cg中找到許多有趣的事實和概念。 –
雖然我認爲我會保持模型和查看矩陣分開在我的項目中,所以我不必在光線位置使用矩陣將它們帶到相機空間。 –
看看這裏:http://stackoverflow.com/questions/10617589/why-would-it-be-beneficial-to-have-a-separate-projection-matrix-yet-combine-mod。我的答案解釋它真的很好 – BDL
我還是不明白你爲什麼不在世界空間做照明,然後跳到剪輯空間(我已經讀過那個頁面) –
@ ranmat11:那個頁面有鏈接到一篇文章,解釋爲什麼在極端細節。 –