gl-matrix中lookAt的作用

參考鏈接:這裏

WebGL繪圖都是眼睛(攝像機)在z軸上,向z軸負方向(即屏幕方向)看去產生的視圖:

我們並不能改變這個視線的方向。因此,爲了能從別的角度來觀察場景,我們只能對場景本身進行操作,例如我們要把眼睛從(0, 0, 0)點移動到(0, 0, 10)點,實質上可以通過,把整個場景向z軸負方向移動10來到達相同的效果。也就是說,我們可以通過對場景進行反向的幾何變換來模擬眼睛的移動。但如果每一步都需要我們手動的進行反向操作,也未免太麻煩了,爲此gl-matrix中提供了mat4.lookAt這樣一個方法來輔助我們進行計算:

var eye = [0,0,10];
var center = [0 ,0,0];
var up = [0,1,0];
var proj  = mat4.create();
mat4.lookAt(proj,eye,center,up);
var vec = vec3.create();
vec3.set(vec,0,0,1);
vec3.transformMat4(vec,vec,proj);

轉換後的座標爲:

Float32Array [ 0, 0, -9 ]

上面代碼理解爲眼睛在(0,0,0)點是可以看到(0,0,1)點,如果想知道眼睛移動到(0,0,10)之後點座標的位置可以通過gl-matrix的lookAt設置眼睛座標爲(0,0,10),通過調用vec3的transformMat4之後得到新的座標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章