WebGL 頂點資料矩陣變換

2021-09-19 19:15:00 字數 1995 閱讀 6080

此處需要了解乙個矩陣函式庫cuon-matrix.js這是《webgl程式設計指南》作者寫的乙個庫,它封裝了一些簡單易用的方法,來實現一些複雜繁瑣的矩陣計算操作;

具體方法如下表:

matrix4物件有兩種方法,一種是名稱中帶有set和一種不帶set的;

使用上面的方法可以方便進行矩陣變換:

如平移操作

var xformmatrix =

newmatrix4()

;// 平移

xformmatrix.

settranslate

(0.5

,0.5

,0.5);

// 將變換後的矩陣傳遞 其中的 elements 是列主序的型別化陣列

gl.uniformmatrix4fv

(u_xformmatrix,

false

, xformmatrix.elements)

;

頂點著色器接收就可以了

attribute vec4 a_position;

uniform mat4 u_xformmatrix;

void

main()

例如我們想要先平移然後再旋**

顯然,這包括了兩種變換,先進行平移變換然後再進行旋轉變換

首先,先進行平移變換

然後,平移後的座標再進行旋轉變換

組合起來就是

所以可以先計算《旋轉矩陣》 * 《平移矩陣》,然後將多次變換後的矩陣乘以原始座標就可以實現復合變換;

乙個模型可能經過了多次變換,將這些變換全部復合成乙個等效的變換,也就得到了模型變換,或稱建模變換,所以,模型變換的矩陣稱為模型矩陣

所以此時著色器可以這樣寫

attribute vec4 a_position;

// 宣告乙個模型矩陣

uniform mat4 u_modelmatrix;

void

main()

使用matrix4.js中的方法可以這樣寫,先平移然後再旋轉

先旋轉再平移,和先平移再旋轉計算的模型矩陣不一定相同

例項**

lang

="en"

>

>

charset

="utf-8"

>

>

先平移後旋轉title

>

rel=

"stylesheet"

href

="../css/common.css"

>

head

>

>

"webgl"

width

="512"

height

="512"

>

canvas

>

body

>

WebGL學習 變換 矩陣 動畫(五)

uniform vec4 u translation 定義u translation 平移相關資訊 void main 函式中倆者相加 gl position a position u translation 倆者相加 平移函式 function translation gl uniform mat...

WEBGL學習筆記(二) 矩陣變換

遊戲已經做好,但是不能支援哈,我在我的獨立部落格裡面加入了這個遊戲。載入時候會黑屏,等待數秒即可,點選這裡體驗試玩 three.js 使用矩陣matrices進行3d變換 位置 position 平移,旋轉rotations,和縮放scaling.每乙個object3d例項都儲存乙個矩陣儲存位置,旋...

頂點法向量的矩陣變換

本文參考 introduction to 3d game programming with directx 11在計算機圖形學中法向量的變化跟一般頂點的變化有一定的區別,假設我們有乙個切向量u v 1 v0 u v 1 v 0 u v1 v0 u uu與法向量n nn垂直。如果我們使用乙個矩陣a a...