簡體   English   中英

透視矩陣如何工作?

[英]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生成一個投影矩陣,該投影矩陣生成一個精確執行此操作的矩陣。 參數為:

  • 視野度數(45)
  • 視場的縱橫比(視口的縱橫比)
  • 距繪制的觀看者的最小距離(0.1個世界單位)
  • 與仍然繪制的查看器的最大距離(100.0世界單位)
  • 存儲生成的矩陣的數組(pMatrix)

當一個點與該矩陣相乘時,結果就是必須繪制該點的屏幕坐標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM