[英]How perspective matrix works?
我開始在learningwebgl博客中閱讀第1課 ,並且注意到了這一部分:
var pMatrix = mat4.create();
mat4.perspective(45, gl.viewportWidth / gl.viewportHeight, 0.1, 100.0, pMatrix);
我大致了解矩陣(平移/旋轉/多重)的工作原理,但是我不知道mat4.perspective(...)
含義。 這有什么用途? 如果我將向量與此矩陣相乘,結果是什么?
透視矩陣用於縮放,並可能平移或翻轉坐標系以准備進行透視划分。 由於透視投影操作涉及除法,因此不能僅通過線性矩陣變換來表示。
在可編程圖形管線中(請參閱像素着色器 ),您看不到除法運算-它仍然是固定功能部件之一。 程序員通過調整操作中涉及的變量來控制它。 在透視划分的情況下,正是投影矩陣為您提供了這種控制。
投影矩陣用於將世界坐標轉換為屏幕坐標。
三維虛擬世界中的位置是x,y和z坐標的三元組。 當您要繪制某些內容(或者告訴OpenGL繪制某些內容)時,需要計算這些坐標在用戶屏幕上的位置。
該計算通過矩陣乘法實現。
由x,y和z組成的向量(以及允許矩陣執行縮放等某些操作所必需的第四個值1)與矩陣相乘以接收一組新的x,y和z坐標(第4個值表示此點在用戶屏幕上的位置(需要使用z坐標來確定哪些對象位於其他對象的前面)。
函數mat4.perspective生成一個投影矩陣,該投影矩陣生成一個精確執行此操作的矩陣。 參數為:
當一個點與該矩陣相乘時,結果就是必須繪制該點的屏幕坐標。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.