最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

GAMES101-現(xiàn)代計算機圖形學入門-閆令琪

2022-07-29 00:51 作者:沒急死吐司卿  | 我要投稿

?
Lecture 03 Transformation P3 - 00:28
?

1. 旋轉(zhuǎn)矩陣:通過特殊點(0,1)和(1,0)構造旋轉(zhuǎn)結果可以得到

2. 平移矩陣:為了所有的變換都能寫成矩陣乘向量的形式,需要引入齊次坐標(變成三維矩陣)——這是一個tradeoff,后續(xù)要關注下引入齊次坐標會帶來什么問題

3. 齊次坐標表征:二維點(x,y,1),二維向量(x,y,0)——這樣保證了點與向量之間的加減操作的有意義性

4. 逆變換:矩陣的逆

5. 組合變換:矩陣乘法,注意矩陣相乘的順序

6. 齊次坐標表示是先變換再平移

?
Lecture 04 Transformation Cont. P4 - 00:26
?

1. 三維中的旋轉(zhuǎn):需要確定是左手坐標系還是右手坐標系,右手坐標系的坐標順序是XYZXY...Z軸指向屏幕外;左手坐標系是XZYXZ...Z軸指向屏幕內(nèi);由于循環(huán)對稱的特性,假設用的是右手坐標系,那么繞Y軸的旋轉(zhuǎn)是從Z轉(zhuǎn)向X的方向,所以其旋轉(zhuǎn)矩陣與繞X/Z軸的旋轉(zhuǎn)矩陣會有所不同

2. Rodrigue's Rotation Formula: 可以給出(在原點)繞一個軸旋轉(zhuǎn)任意角度的旋轉(zhuǎn)公式

3. 四元數(shù):聽老師意思是為了解決旋轉(zhuǎn)矩陣之間的加減?感覺有點類似引入齊次坐標的原因?

4. (右手坐標系的)相機坐標系:相機放在原點,看向-Z,向上是Y,然后把所有物體移到相機坐標系下——先平移到原點,然后把物體的坐標軸旋轉(zhuǎn)與相機坐標系對齊——這個對齊的旋轉(zhuǎn)矩陣不好直接寫,可以先寫逆變換,再取逆(其實就是轉(zhuǎn)置)

5. 正交投影:把中心平移到原點,然后縮放成標準立方體;如果用右手坐標系,因為看向-Z,那會導致近處平面的z坐標大于遠處平面的z坐標

6. 透視投影:把錐臺先擠壓成一個立方體,再做正交投影——第一步里,關于XY坐標,可以通過相似三角形去推導,而Z坐標需要和特殊點(0,0,f,1)聯(lián)立方程組去求解

?
Lecture 05 Rasterization 1 (Triangles) P5 - 00:33
?

  1. 怎么定義視錐?如果直接把所有坐標都指定好了,那當然最直接;不過更常用的定義是通過長寬比aspect ratio和垂直可視角度vertical field of view(fovY)來定義
  2. 光柵化:就是把物體畫到屏幕上——先將透視投影變換成標準立方體后,再將標準立方體變換到屏幕空間[0, width]*[0, height](通過平移與拉伸變換即可)
  3. 逐行掃描progressive scan vs. 隔行掃描interlaced scan:隔行掃描就是利用人眼的暫留現(xiàn)象,一幀只顯示偶數(shù)行,一幀只顯示奇數(shù)行
  4. 液晶顯示器LCD:通過液晶的扭曲影響光的偏振?(聽君一席話如聽一席話。。。)
  5. 為什么常用三角形光柵化?三角形是最基礎的多邊形,并具有一些良好性質(zhì):三角形內(nèi)部一定是一個平面(四邊形往對角線一折就不是了);點是否在三角形的內(nèi)部是well-defined的(向量的叉積);三角形內(nèi)的點很容易插值(barycentric interpolation)
  6. 怎么把三角形變成像素?最簡單的辦法就是采樣——判斷像素的中心點是否在三角形內(nèi)——點與所有任意兩個頂點(頂點按順/逆時針排序)構成的向量叉積同號
  7. 實際上像素不一定是內(nèi)部顏色均勻的方塊;RGB的密度也不一定一樣,比如可以放多點綠色感光單元,可以讓人眼看起來更舒服點

?
Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering) P6 - 09:40
?

  1. 采樣造成的artifacts:如Jaggies/劇齒、Moire Patterns/摩爾紋、Wagon Wheel Illusion/車輪效應、etc.
  2. 從傅立葉變換的角度來解釋為什么采樣會造成失真:傅立葉變換可以把圖像分解成不同頻率的波的組合,低頻波對應圖像的內(nèi)容,高頻波對應圖像內(nèi)容的邊緣/edge,而要盡可能完全表示高頻波,需要的采樣率是遠遠高于低頻波的
  3. 卷積定理:空域的卷積等價于頻域的相乘
  4. 怎么保真
  5. SSAA/Super Sampling Anti-Aliasing: 在每個像素中進行多次采樣,然后根據(jù)多次采樣的結果綜合來計算像素的顏色值,比如説有4個采樣點,那該像素的顏色就是這4個采樣點的顏色平均
  6. MSAA/MultiSampling AA:類似于SSAA,在光柵化階段,判斷一個三角形是否被像素覆蓋的時候會計算多個覆蓋樣本(Coverage sample),但是與SSAA的差別在于,在pixel shader著色階段計算像素顏色的時候每個像素還是只計算一次,比如説4個采樣點只有兩個被三角形覆蓋了,那該像素點的顏色等于中心點的顏色*50%
  7. FXAA/Fast Approximate AA:后處理鋸齒圖,找到鋸齒的邊界,然后把這些鋸齒給替換掉
  8. TAA/Temporal AA:基于相鄰幀的信息
  9. 超分辨率

?
Lecture 07 Shading 1 (Illumination, Shading and ?Graphics Pipeline) P7 - 21:20
?

光柵化后就開始考慮怎么著色,著色需要先考慮物體之間的遮擋關系,再是考慮光照,最后看現(xiàn)代的圖形學管線是怎么處理這個過程的

  1. 處理遮擋的算法:Z-Buffer
  2. 每個像素會存儲當前位置的最小深度值/z-value,以及顏色值
  3. 實際操作時,就是遍歷每個三角形的每個像素,如果其深度值比當前緩存的深度值小,就更新該像素當前的深度值與顏色值;否則不操作
  4. 著色(只考慮一個點)
  5. 定義:把材質(zhì)應用到物體上的過程
  6. 感光類型:高光/Specular hightlights、漫反射/Diffuse reflection、環(huán)境光/Ambient lighting
  7. 著色輸入:視角方向、平面法向量方向、光源方向、表面參數(shù)(顏色、亮度等)
  8. Blinn-Phong Reflectance Model:
  9. Lambert's cosine law: 物體表面接收到多強的光照與物體表面和光的角度有關
  10. Light Falloff:根據(jù)能量守恒,某個點的光的強度,在傳播到距離光源r的地方的強度是I/r^2(這里沒有考慮物體到觀察點之間的距離的能量損失,是正常的,后面會講到)
  11. Lambertain/Diffuse shading: 結合a和b,再考慮物體對光強的吸收率(漫反射系數(shù)),就得到了漫反射的物體表面明亮強度

?
Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping) P8 - 05:14
?

  1. Blinn-Phong Reflectance Model:上一節(jié)講的只是漫反射項,這一節(jié)接著講高光和環(huán)境光
  2. 高光項:與漫反射不同,高光項依賴于觀察角度(鏡面反射);怎么衡量能不能看到高光呢——看半程向量(觀察角度與入射角度的平均)與法向量是否足夠接近;這樣高光項就是考慮這三項——高光系數(shù)、Light Falloff、以及半程向量與法向量之間的夾角大小
  3. 環(huán)境光項:假設任何點接收到的環(huán)境光是一樣的,這樣環(huán)境光項就只考慮物體本身材質(zhì)的環(huán)境光系數(shù)*環(huán)境光亮度常量
  4. 著色頻率/Shading Frequencies——影響著色的質(zhì)量,如果頂點/面的數(shù)目足夠多,那也不見得非得用逐像素
  5. Flat shading:每個三角形只著色一次,即三角形內(nèi)部的顏色值是一樣的
  6. Gouraud shading:每個三角形的頂點都做一次著色,三角形內(nèi)部的顏色通過頂點的顏色進行插值得到
  7. Phong shading:逐像素著色(非Blinn-Phong模型)
  8. 根據(jù)Blinn-Phong模型,著色時需要知道平面的法向量,那頂點的法向量怎么得到呢?使用頂點相鄰面的法向量的加權平均(根據(jù)面積加權);那平面內(nèi)的像素呢?基于頂點的法向量做Barycentric interpolation(后面會介紹)
  9. 圖形/實時渲染管線:三維的點渲染到屏幕上的過程
  10. Vertex Processing:頂點投影變換到屏幕上
  11. Triangle Processing:頂點構成三角形
  12. Rasterization:采樣,判斷像素點是否在三角形內(nèi)
  13. Fragment Processing:Z-Buffer可見性判斷
  14. Framebuffer Operations
  15. 著色發(fā)生在4.a和4.d;Shader其實就是一段代碼,計算每個頂點/像素的顏色
  16. 老師推薦了一個shader網(wǎng)址:https://www.shadertoy.com/view/ld3Gz2
  17. 最后自己mark下一個有關于圖像管線的學習資料:https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/

?
Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping) P8 - 54:48
?

  1. Texture Mapping/紋理映射:怎么把紋理映射到一個個三角形上——需要把三角形的頂點與紋理的坐標之間做一個映射

?
Lecture 09 Shading 3 (Texture Mapping Cont.) P9 - 08:02
?

  1. Barycentric Coordinates重心坐標
  2. 三角形平面內(nèi)的任意一個點的坐標,都可以由三角形的三個頂點坐標的線性組合得到,條件是頂點的線性權重系數(shù)之和為1,這三個系數(shù)就是重心坐標。當三個系數(shù)都非負時,這個點在三角形內(nèi)
  3. 如果已知一個點的坐標,怎么得到這個點的重心坐標呢?這個點把三角形劃分成三個小三角形,每個小三角形的面積占比構成重心坐標之一;有一個公式可以直接計算得到
  4. 這樣,我們就可以使用重心坐標來線性組合頂點的顏色等屬性值,來得到三角形內(nèi)的任意一個像素的顏色等屬性值
  5. 要注意,重心坐標不是projection invariant的——這在計算深度值時要注意——計算深度值應該基于原始三維空間的重心坐標來插值,而非投影后三角形的重心坐標
  6. Texture Magnification紋理放大
  7. texel/紋素:a pixel on a texture,當紋理的分辨率太低時,多個像素會對應到一個texel上,這樣就會有一些“小格子”,視覺效果就不好
  8. 可以用雙線性/Bilinear插值(利用周圍四個texel的屬性做兩次插值)、雙三次/Bicubic插值(周圍16個texel做三次插值)來優(yōu)化這種情況
  9. Texture Minification
  10. 如果紋理太大了呢?一個像素就會對應到多個texel,這時就需要做采樣。回想起之前,我們可以用supersampling的方法來做保真,但是在這種情況下,一個像素覆蓋的texel可能太多了,那計算復雜度會比較高;這里換個思路,不做采樣,給定一個區(qū)域,直接能得到這個區(qū)域的平均值——圖形學里有比較高效的range query算法來解決這個問題
  11. Mipmap就是用來解決這個問題的區(qū)間查詢算法,但是它只支持方形區(qū)域,而且是個近似算法;Mipmap其實就是把紋理變成一個圖像金字塔,預先計算遠端的紋理貼圖,以空間來換時間的做法:每一層是上一層大小的1/4,直到最后變成1,所以內(nèi)存會多占用1/3;另外,如果有個紋理無法準確的在某一層的Mipmap里找到,也可以通過相鄰兩層的結果,做一次雙線性過濾來得到(因為做了三次線性過濾,所以也叫三線性過濾)
  12. Mipmap的問題:雙線性過濾和三線性過濾在渲染時對不同坐標是同等對待的,也就是假設原始紋理是方形的,這對于非方形物體就容易造成overblur的問題;改進手段:Anisotropic Filtering/各向異性過濾——在構造圖像金字塔時,比如原來64*64的,現(xiàn)在不止存了32*32的,也存了64*32和32*64的,以供紋理過濾時選擇;更高級的做法還有EWA filtering(留坑)

GAMES101-現(xiàn)代計算機圖形學入門-閆令琪的評論 (共 條)

分享到微博請遵守國家法律
余庆县| 临高县| 肃南| 浦江县| 农安县| 湘潭县| 河曲县| 永康市| 泽州县| 固镇县| 浮梁县| 佛学| 徐州市| 清新县| 西藏| 渝北区| 常熟市| 黔西县| 乌什县| 济源市| 伊吾县| 休宁县| 普宁市| 当雄县| 大同市| 平遥县| 登封市| 蓬溪县| 监利县| 连平县| 嵊泗县| 华阴市| 敖汉旗| 南康市| 永胜县| 梓潼县| 澄城县| 泊头市| 湖州市| 应城市| 嘉定区|