1. 程式人生 > >WebGL中模型矩陣、檢視矩陣和投影矩陣

WebGL中模型矩陣、檢視矩陣和投影矩陣

WebGL中模型矩陣、檢視矩陣和投影矩陣

在WebGL開發中Shader是非常終於的部分,它是用類C語言的GLSL語言編寫的,可以實現很多炫酷的效果。
先看一篇網友的文章:GLSL下幾個簡單的Shader。文章中介紹了許多簡單的shader。看完文章之後就對shader的編寫有一個基本的認識了,但是其中的各種Matrix會讓你頭暈。這裡先理一理其中的三個Matrix(模型矩陣、檢視矩陣和投影矩陣)。這三個矩陣在三維世界中是必不可少的,當某個矩陣是單位矩陣的時候可以省略。其他情況都需要寫上。他們之間的變換如下所示。

變換與座標系

所以常見的頂點著色器中,頂點變換過程通常用下面兩種寫法。

gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4( position, 1.0 );

<投影矩陣>*<檢視矩陣>*<模型矩陣>*<頂點座標>

相乘的順序不能改變。物體本身擁有一個座標系,叫本地座標系。把物體放到世界座標系中,採用了模型矩陣,就是執行縮放、平移、旋轉操作的過程。此時物體就具有了世界座標系。
再加入上帝之眼,就是檢視矩陣,包括視點座標,觀察點座標,和上方向。現在只差最後一步–投影矩陣,物體就可以呈現出來了。
目前顯示裝置都是二維平面的,所以需要投影矩陣來轉換物體。投影矩陣通常分為平行投影和透視投影。……此處省略N個字
物體就是這樣一步一步的經過矩陣變換出來的,如下圖所示。
在這裡插入圖片描述

THREE.ShaderMaterial開發中的shader也是同樣的程式碼,只不過有一些細微的區別。讀一讀上面的文章就該理解了。