Lecture05_光柵化 1(三角形)_GAMES101 課堂筆記——2020.2.25


今日學習內容概覽:

  1. Finishing up Viewing
    • Viewport transformation
  2. Rasterization
    • Different raster displays
    • Rasterizing a triangle

一、透視投影(Perspective Projection)

( 一 )粗略方法:

    確定近平面(l,r,b,t),保持遠、近平面不的點變,將遠平面變為近平面一樣大小:

( 二 )細致處理:

    有時通過垂直的視角(field-of-view,fovY)寬高比(aspect ratio = width / height),(假設對稱性即L = -r,B = -t).

( 三 )轉換fovY和面為l,r,b,t

計算公式:

\(\tan \frac{fovY}{2} = \frac{t}{|n|}\)             \(aspect = \frac{r}{t}\)

二、規范立方體(Canonical cube)

在 MVP 后,即進行規范立方體到屏幕(畫到屏幕)
MYP概念:

  • 模型轉換(載置對象)
  • 查看變換(放置相機)
  • 投影變換
    • 正投影(長方體到“規范”立方體\(\left[-1,1 \right]^3\)
    • 透視投影(平截頭體到“規范”的立方體)

( 一 )屏幕的定義:

  • 像素的組合
  • 數組大小即為——分辨率 eg:1920*1080
  • 典型的光柵成像設備

( 二 )光柵化和屏幕的關系:

  • Raster == screen in Germa
    • Rasterize == drawing onto the screen

( 三 )像素(Pixel)

  • 可通俗理解為:一個像素就是一個顏色的小正方形
  • 顏色是由 RGB 組合而成

( 四 ) 屏幕空間定義:

    像素的排列:

  • 約定:

    • 像素坐標為(x,y)形式,並且x,y為整數(相當於個數)
    • 像素坐標范圍:(0,0)到(寬度-1,高度-1)
    • 像素(x,y)的中心點是(x+0.5,y+0.5)
    • 屏幕占比范圍(0,0)到(寬度,高度)
  • 與z無關

  • Transform in xy plane: [-1, 1]2 to [0, width] x [0, height]

  • Viewport transform matrix:

\[M_{viewpoint} = \begin{pmatrix} \frac{width}{2} & 0 & 0 & \frac{width}{2} \\ 0 & \frac{height}{2} & 0 & \frac{height}{2} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \]

三、顯示設備

( 一 )數控記號筆拉絲機

( 二 )激光切割機

( 三 )不同的光柵顯示器

  1. 示波器

  2. 陰極射線管

  3. 電視 - 光柵顯示(CRT 顯示器的應用)

右邊的圖像是隔行掃描技術(eg:將畫面分為兩部分,上半部分掃描奇數行,下半部分掃描偶數行),目前在一些視頻壓縮中仍有應用。缺點:容易造成畫面撕裂,尤其是高速運動(eg:體育運動出現鬼影)

  1. 幀緩存:內存為光柵顯示

顯存,也被叫做幀緩存,它的作用是用來存儲顯卡芯片處理過或者即將提取的渲染數據。如同計算機的內存一樣,顯存是用來存儲要處理的圖形信息的部件。
DAC——數模轉換器,又稱D/A轉換器,簡稱DAC,它是把數字量轉變成模擬的器件。D/A轉換器基本上由4個部分組成,即權電阻網絡、運算放大器、基准電源和模擬開關。模數轉換器中一般都要用到數模轉換器,模數轉換器即A/D轉換器,簡稱ADC,它是把連續的模擬信號轉變為離散的數字信號的器件。

  1. 平板顯示器

視網膜顯示器:分辨率已經大於人肉眼的分辨率屏幕。

LCD工作原理示意如下:

LCD——液晶顯示器,通過液晶將豎直的光扭轉為水平的光。

  1. Electrophoretic (Electronic Ink) Display
    例如:kindle,通過黑白墨水,控制電子號,從而進行顯示。缺點:因為改變黑白朝向耗時,因此刷新率低。

三、光柵化:繪圖到光柵顯示

( 一 )網格

  1. 多邊形網格(Polygon Meshes)

  2. 三角形網格(Traingle Meshes)

( 二 )三角形 - 基本形狀圖元

  1. Why triangles?

    • 最基礎的多邊形
      • 可由別的多邊形拆解而來
    • 獨特的性質
      • 保證是平面
      • 能夠定義良好的內部
      • 定義方法:可通過定義三角形的三個點,實現漸變效果
  2. 什么像素值近似三角形?

判斷一個像素(中心點)與三角形的位置關系===>通過采樣實現。
采樣:給一個連續函數得到值,即一個函數的離散化過程。

四、采樣

    在評估一個點的函數取樣。我們可以通過采樣離散函數。如下:

for (int x = 0; x < xmax; ++x)
    output [x] = f(x)

    采樣是圖形學的核心理念,可以采樣的:時間(1D)、面積(2D)、方向(2D)、體積(3D)等等

( 一 )光柵化作為2D采樣

例如:如果每個像素的中心是三角形內

定義二元函數:\(inside(tri, x, y)\)(注:X,Y:不必為整數)

光柵化=采樣A 2D指示燈功能
for (int x = 0; x < xmax; ++x)
    for (int y = 0; y < ymax; ++y)
        image[x][y] = inside(tri,  x + 0.5,  y + 0.5); 

    這個循環函數讓像素中心值為 0 或 1 (0表示不在三角形內部,1表示在三角形內部),根據中心點為的值從而給予某種顏色。

( 二 )回顧:樣本位置

( 三 )回顧:叉乘


    通過某一點(例如:Q點)與三角形\(P_{0}P_{1}P_{2}\)的邊長位置關系做判斷。規定某一個方向,以逆時針方向舉例,\(P_{2}P_{1} \times P_{2} \times Q\)得知,叉乘指向朝上,因此Q點在\(P_{2}P_{1}\)的右邊;同理可得,Q 點在\(P_{1}P_{0}\)的右邊,但 Q 點在\(P_{0}P_{2}\)的左邊。(點位於三條邊的方向並不完全一致)**====》因此,Q點在三角形\(P_{0}P_{1}P_{2}\)的外部。

如果是在像素中心點在邊界呢?

    兩種方法:一種是不做處理(本堂課采用),另外是做特殊處理。

注:圖形學的第三方庫API如OpenGL和DirectX對邊界點有嚴格的規定。即中心點在三角形的上邊/左邊,則算作在三角形內部;若點在三角形的下邊/右邊,則不屬於三角形內部。

檢測屏幕中所有的像素


    檢測像素的步驟:
1. 首先通過 x,y 的坐標從最小值到最大值選出包圍盒(Bounding Box)。(即藍色包圍部分,去掉第一列白色部分。此通過水平和豎直確定的包圍盒,還可稱為**軸向包圍盒=AABB包圍盒(Axis-aligned bounding box))**
2. 在區域內進行循環,使用inside函數確定像素中心點的值。

AABB是應用最早的包圍盒。它被定義為包含該對象,且邊平行於坐標軸的最小六面體。故描述一個AABB,僅需六個標量。AABB構造比較簡單,存儲空間小,但緊密性差,尤其對不規則幾何形體,冗余空間很大,當對象旋轉時,無法對其進行相應的旋轉。處理對象是剛性並且是凸的,不適合包含軟體變形的復雜的虛擬環境情況。
AABB也是比較簡單的一類包圍盒。但對於沿斜對角方向放置的瘦長形對象,其緊密性較差。由於AABB相交測試的簡單性及較好的緊密性,因此得到了廣泛的應用,還可以用於軟體對象的碰撞檢測。

光柵化加速方法之——增量三角形遍歷

這種方法是在每一行的從最左到最右,確定一個包圍盒。適用於窄長、旋轉的三角形(即實際在AABB盒中覆蓋了很少的像素。)

( 四 )實際屏幕中的光柵化

  1. 下面是兩個手機屏幕的光柵化圖像:
  • iPhone :每個像素由3條(RGB)代表一個像素
  • Galaxy :使用\(Bayer Pattern\)方法,使RGB均勻分布。現象:其中綠色點最多(觀察方法:只看某一種顏色,分別看三種顏色點,即可看出。)這是因為人眼對綠色更敏感,這樣看起來跟舒服。
  1. 彩色打印

如果加的顏色越多,那么會更黑;RGB值越高,圖片越亮。

( 五 )按照像素為一個正方形(本課程采用),展示一個示例:

  1. 采樣信號展示:

  2. The Display Physically Emits This Signal(進行填充后為左圖,實際圖形為右圖)

    由此,發現一個問題,采樣填充后的圖像並不完全符合原始圖像,出現鋸齒(Jaggies)現象。同樣的現象見下圖:

原因: 因為像素本身具有大小,采樣率不高,從而信號走樣(Aliasing)。
目前,仍是圖形學一直不斷改進的問題,下節課將介紹如何解決“鋸齒”問題,引入抗鋸齒和反走樣的概念。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM