《Real-Time Rendering》第四章:變換
- 一個變換是以某種方式轉換點,向量或顏色等實體的操作;
- 一個線性變換是滿足向量加法和標量乘法的操作;
- 縮放變換和旋轉變換都是線性變換;
- 平移變換不是線性變換;
- 線性變換和平移的組合可以使用一個仿射變換,通常用一個4x4矩陣儲存;
- 一個方向向量表示為v=(vx vy vz 0)T,一個點表示為v=(vx vy vz 1)T;
- 所有的平移,旋轉,縮放,鏡面反射和切變矩陣都是仿射的;
- 放射矩陣的一個特點是它保持直線的平行,但不保持長度和角度;
- 一個仿射變換可以是任意多個獨立的仿射變換的串聯;
4.1 基本變換
4.1.1 平移
詳見56頁...
4.1.2 旋轉
- 和平移一樣,以座標軸旋轉是一個剛體變換,它保持頂點之間的距離,以及保持左右手習慣;
- 其他詳見57頁...
4.1.3 縮放
詳見59頁...
4.1.4 切變
詳見60頁...
4.1.5 變換的串聯
- 因為矩陣乘法不滿足交換律,所以矩陣的順序會影響結果;
4.1.6 剛體變換
- 只有物體的朝向和位置改變,形狀不變,如一個只有平移和旋轉組合的變換,叫做剛體變換;
- 剛體矩陣的形式和逆矩陣見62頁;
4.1.7 法線變換
一個單一矩陣可以一致的變換點,直線,多邊形和其他幾何體。同樣的矩陣也可以變換沿著直線或多邊形表面的切線。然而,這個矩陣不是都可以變換一個重要的幾何屬性,表面法向量。如圖4.5.
合適的方法是使用矩陣的伴隨矩陣的轉置矩陣,而不是乘以矩陣本身。伴隨矩陣通常是可以保證存在的。法線在變換後不保證是單位長度,因此一般需要正則化。
後面將了法線變換的一些簡化,詳見64頁...
4.1.8 逆矩陣的計算
- 如果矩陣是一個單一矩陣或一系列給定引數的簡單矩陣,那麼逆矩陣可以簡單的“對引數取反”和調換矩陣順序。如M = T(t)R(φ),那麼M−1 = R(−φ)T(−t);
- 如果矩陣是正交矩陣,則M−1 = MT,也就是說,轉置矩陣就是逆矩陣。任何旋轉序列都是一個旋轉,因此它是正交的;
- 如果沒有任何特殊資訊可知,那麼就用伴隨矩陣的方法...
4.2 特殊的矩陣變換和操作
4.2.1 尤拉變換
- 首先需要建立預設的觀察方向。大部分是面向負z軸方向,頭頂朝向y軸方向,如圖4.6;
- 尤拉變換是三個矩陣相乘的結果,見公式4.17;
- 改變head角相當於觀察者搖頭,改變pitch相當於他點頭,rolling相當於他把他的頭傾斜到一邊;
- 經典萬惡的萬向鎖問題,在第67頁...
4.2.3 矩陣分解
- 檢索平移矩陣很容易,我們只需要4x4矩陣的最後一列;
- 我們可以通過檢查行列式是否為負,來判斷是否有映象矩陣;
- 分離旋轉,縮放和切變需要更多努力,但有很多現成的程式碼...
4.2.4 以任意軸旋轉
- 如我們要圍繞向量r旋轉,可以構建一個正交基座標系,以r為其中一個軸(如x軸),另外兩個軸見書上71頁;
- 然後用三個正交基構建一個矩陣M;
- 先乘以M,然後繞x軸旋轉α角,然後在乘以M的轉置矩陣,轉回來...
4.3 四元數
先略過...
4.4 頂點混合
相關文章
- 【PR】3D Gaussian Splatting for Real-Time Radiance Field Rendering3D
- 《Real-Time Rendering 3rd》 提煉總結(二): 圖形渲染管線
- 計算機圖形學 第四章 圖形變換計算機
- Physically Based Rendering
- [Vue] useDefer to improve the rendering performacneVueORMMac
- Games101-9 advanced renderingGAM
- 遊戲中的Volumetric Rendering遊戲
- 深入理解 iOS Rendering ProcessiOS
- Hough變換
- z 變換
- 仿射變換及其變換矩陣的理解矩陣
- OpenCV計算機視覺學習(3)——影像灰度線性變換與非線性變換(對數變換,伽馬變換)OpenCV計算機視覺
- Z變換(2020.10.21)
- 頻域變換
- 小波變換與傅立葉變換的區別
- direct3d---direct11 rendering pipeline3D
- Lecture 05 Real-time Environment MappingAPP
- Lecture 12 Real-time Ray Tracing
- 灰度變換函式:對數及對比度拉伸變換函式
- pose座標變換
- 傅立葉變換
- 貝葉斯變換
- NOIP 2002 字串變換字串
- 各種Fourier變換
- 2D變換
- 複變函式與積分變換函式
- The Trade Desk 接入 Adobe Real-Time CDP
- 離散傅立葉變換(DFT)和快速傅立葉變換(FFT)FFT
- OpenGL 使用矩陣變換改變檢視矩陣
- 影像尺寸變換scalepadding方法padding
- 基向量 變換矩陣矩陣
- 快速傅立葉變換
- css32d變換CSSS3
- 變數型別轉換變數型別
- 動詞て型變換
- iOS 仿射變換(CGAffineTransform)iOSORM
- 交換兩個變數變數
- SVG animateTransform變換動畫SVGORM動畫