Shader 矩陣 變換

2021-09-02 18:10:13 字數 965 閱讀 5735

一、相關概念

變換(transform):指的是我們把一些資料,如點、方向向量甚至顏色等,通過某種方式進行轉換的過程。

線性變換(linear transform):線性變換指的是那些可以保留向量加和標量乘的變換。例如:縮放、旋轉、錯切、映象、正交投影等;

平移:平移變換不是線性變換,它滿足標量乘法,但不滿足向量加法。

仿射變換(affine transform):合併線性變換和平移變換的變換型別。仿射變換可以使用乙個4×4的矩陣來表示,即齊次座標空間。

二、齊次座標

齊次座標就是將乙個原本是n維的向量用乙個n+1維向量來表示;對於乙個點,從三維座標轉換成齊次座標是把其w分量設為1,而對於方向向量來說,需要把其w分量設為0。

三、基礎變換矩陣

我們可以使用乙個4×4的矩陣來表示平移、旋轉和縮放。我們把表示純平移、純旋轉和純縮放的變換矩陣叫做基礎變換矩陣。

根據這些矩陣的一些共同點,我們可以把乙個基礎變換矩陣分解為4個組成部分:

左上角的矩陣

用於表示旋轉和縮放,

用於表示平移,

是零矩陣,即

,右下角的元素就是標量1。

四、平移矩陣(

五、縮放矩陣

我們可以對乙個模型沿空間的x軸,y軸和z軸進行縮放。同樣,我們可以使用矩陣乘法來表示乙個縮放變換。

如果縮放係數kx

=ky=kz

,我們把這樣的縮放稱為統一縮放,否則稱為非統一縮放。

縮放矩陣的逆矩陣是使用原縮放係數的倒數來對點或者方向向量進行縮放,即

六、旋轉矩陣

旋轉矩陣的逆矩陣是旋轉相反角度得到的變換矩陣。旋轉矩陣是正交矩陣,而且多個旋轉矩陣之間的串聯同樣是正交的。

七、復合變換

我們可以把平移、旋轉和縮放組合起來,來形成乙個複雜的變換過程。復合變換可以通過矩陣的串聯來實現。在絕大多數情況下,我們約定變換的順序就是先縮放、再旋轉,最後平移。

unity 自定義shader座標變換矩陣

shader coustom xyzshader moveoffset moveoffset vector 1,1,1,1 scale scale vector 1,1,1,1 rotate rotateangle vector 0,0,0,1 subshader struct v2f sample...

transforms CTM,變換矩陣

quartz轉換實現的原理 quartz把繪圖分成兩個部分,使用者空間,即和裝置無關,裝置空間,使用者空間和裝置空間中間存在乙個轉換矩陣 ctm 本章實質是講解ctm quartz提供的3大功能 移動,旋轉,縮放 演示如下,首先載入一張 移動函式cgcontexttranslatectm mycon...

opengl 矩陣變換

opengl 矩陣變換 opengl 座標系的變換如下圖 我們給我們的圖形,設定好頂點座標後,通過model matrix 變換為世界座標,然後 view matrix相機座標,projection matrix 螢幕座標x,y 1,1 矩陣變換的結果是把三維的世界最終裁剪為二維的螢幕,數學的說法就...