幾何(Geometry)


各種不同的幾何(Geometry)

圖形學中分為兩種幾何:隱式的幾何(implicit)、顯式的幾何(explicit)。

比如球的隱式表示為 x2+y2+z2 = 1。顯式的表示可以將球拆成不同的三角形面,將球的位置表示出來。

進行推廣,既然我們定義用 x, y, z 表示的關系,那就用函數來表示,比如球 f(x, y, z) = x2+y2+z2-1

隱式的幾何有好處也有壞處。如果我們想說整個的形狀是什么,很難直觀看出來。

隱式的好處就是很容易判斷一個點在不在這個形狀里面。

把這些面上所有的點都表示出來,就是典型的顯式的表示。還有一種顯式的方法,通過參數映射的方法,就是把 (u, v) 上所有的點都走一遍,你就知道它在三維空間中的形狀。

通過參數映射,把 (u, v) 映射到空間上去。

問這個點是不是在里面,無從下手。

所以為什么會有不同的表示方法,因為有一些問題它就適合用隱式的方式表示,有一些問題它就適合用顯式的方式表示。

隱式的表示的各種各樣的方法:

通過基本幾何的基本運算來得到新的幾何,下面那個復雜的幾何就是通過簡單的幾何運算完成的。這種操作也得到了非常非常廣泛的應用。

通過距離函數,空間中任何一個點都定義一個值來,表示它在物體內還是物體外

通過 Blend 兩個對應的 SDF,就等於是在 Blend 它們的邊界。

用距離函數表示出來的圖:

這個概念在地理上得到廣泛的應用,叫做等高線。就是為了描述一個函數在不同位置有相同的值。

下面是和距離函數類似的概念:水平集(Level-Set)

水平集可以表示物體的密度

分形。自相似。

變化頻率太高了會引起嚴重的走樣,這種類型的幾何對於渲染是非常大的挑戰。

隱式的幾何總結:

 

顯式的幾何同樣有很多的表示方法

點雲,若想表示復雜的模型,就需要特別多的點、特別密集的點進行表示

例如三維空間中的掃描,一般就是得到特別多的點雲。

獲得一個點雲,如何變成三角形的面,這是很多研究在做的。

用得最多的還是這種多邊形面,三角形或者四邊形的面。

存儲用三角形面形成的物體,一種文件格式 .obj,是一個文本文件,將空間中的一堆點,一堆法線,一堆紋理坐標,分開來表示空間中的模型(與編譯的 .obj 文件不一樣)

上面表示的是空間中的立方體。用八行 v x y z 定義八個點;立方體只有六個面,定義六條法線 vn,有八行是因為自動建模有很多冗余的地方;定義紋理坐標 vt,當然這里也有冗余。

然后還要定義它們的連接關系 f,就是哪三個點會形成一個三角形,v 的坐標 / vt 的坐標 / vn 的坐標,說是坐標,其實就是第幾個數,第 5 個頂點、第 1 個頂點、第 4 個頂點,形成一個三角形,並且這三個頂點上分別用第 1 個紋理坐標、第 2 個紋理坐標、第 3 個紋理坐標,並且這三個頂點上分別用第 1 個法線、第 1 個法線、第 1 個法線。它就是通過這種關系,將每三個點聯系在一起,並且定義它們用什么樣的法線和紋理坐標。

 


免責聲明!

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



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