此處需要了解乙個矩陣函式庫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...