GAMES101-現代計算機圖形學學習筆記(10)
Lecture 10 Geometry 1 Introduction
原課程視頻鏈接以及官網
b站視頻鏈接: link.
課程官網鏈接: link.
紋理的應用
首先接着上節課繼續探討一下紋理的應用。在現代GPUs中,紋理其實就等同於內存+範圍查詢,在把紋理映射在物體表面時,實際上就是對內存中的紋理進行採樣,然後對採樣點進行映射+插值。那麼常見的紋理應用有哪些呢?
-
Environment Map
環境貼圖主要是把環境中的光存在貼圖裏面,作爲紋理屬性賦給模型 -
Spherical Map
它用一個球體存儲了整個環境,詳細推導可以參考 :https://zhuanlan.zhihu.com/p/84494845.
-
Cube map
中文名就是立方體貼圖,它是由一個立方體組成的,包含了六個面,每個面都是一張二維紋理圖。它最大的好處就是可以在三維上通過座標直接採樣紋理,即通過原點和已知點就可以對某張紋理圖進行採樣,如下圖:
-
Bump Mapping
如果物體表面的法線有所差異,它們的表面就會在光照下呈現出凹凸不平的效果,而Bump Mapping 就是通過一張高度圖模擬了物體表面位移的情況,即通過高度圖中像素中的梯度變化來擾動物體表面的法向量,使其達到凹凸不平的效果。
首先假設物體表面每個座標都有一個局部座標系,稱爲切線空間:
假設x軸對應的是紋理的u方向,y軸對應的是紋理的v方向,z軸是物體表面法線方向,那麼擾動後的法向量就爲:
而 和 就是我們在高度圖上的採樣點的局部梯度,最後我們通過 來計算新的光照模型即可 -
Displacement Mapping
Bump Mapping 和 Displacement Mapping最大的區別就是後者是真的在法線的方向上做了偏移,改變了頂點的位置,而Bump Mapping只是做了**“假的”高度變化**,所以它在物體輪廓處的效果會顯得不如 Displacement Mapping
紋理還有很多用途,比如做Modeling中的噪聲,預計算模型中的遮擋情況等等。總之,所有需要預計算的貼圖信息,我們都可以用紋理來計算,所以說其實可以把紋理當成一塊內存來看待,只不過它存儲了我們需要的一些信息
幾何
紋理講完了,接下來主要說說幾何。首先幾何有兩種表示方式,第一種是隱式幾何表示,第二種是顯示幾何表示
隱式幾何
隱式幾何表示法不會直接給出空間中幾何位置信息,而是會給出幾何內的一些需要滿足的關係用來表示幾何體。比如圓的方程 ,它就是一種隱式幾何表示方法。更一般化的隱式幾何的通式可以用 來表示
壞處:
無法直接反應幾何形狀:幾何輪廓,面的形狀
好處:
便於判斷點是否在幾何表面上,表面內(直接帶入函數即可)
顯示幾何
顯示幾何通常又分爲兩類:
- 直接表示出三維形狀(之前提到的三角形面片)
- 通過參數化映射
壞處:
不方便判斷點在幾何表面內/外
好處:
便於判斷形狀
一些常見的隱式幾何
Algebraic Surfaces
直接用公式表示的幾何體:
Constructive Solid Geometry
通過布爾運算+基礎幾何體組成的複合幾何體:
Distance Functions
通過函數描述任何一個點到幾何的距離,並且通過距離來判斷點在幾何體的表面關係:
Level Set Methods
通過臨界面找到一系列滿足要求的點,來描述形狀,如下列圖中滿足 的曲線:
Fractals
用一系列小物體組成的大物體,同時這些小物體可能會由更小的物體組成:
一些常見的顯示幾何
Point Cloud
點雲就是由一系列點(x,y,z)組成的,只不過這些點可能還有其他信息,如法向,顏色等:
Polygon Mesh
通過多邊形構成的幾何體: