GAMES01 Geometry

生活中有許多曲面、曲線需要去表示。這裏也有許多表示幾何的方法:
Implicit

  • algebraic surface
  • level sets
  • distance functions
  • ...

Explicit

  • point cloud
  • polygon mesh
  • subdivision, NURBS
  • ...

Implicit表達

通常,隱式表達被定義爲f(x,y,z)=0,其中f(x,y,z)是一個xyz的關係表達式。
隱式表達可以很容易的判斷點與表面的關係。\(f(x_0,y_0,z_0)<0\)時說明在內部,\(f(x_0,y_0,z_0)>0\)說明在外部。

Explicit表達

顯式表達通常是直接給出或者使用參數映射
顯示錶達的畫出來圖很容易,只需要在參數範圍上採樣就可以:

但是很難判斷點和曲面的關係。

更多隱式表達曲面的方式

Algebraic Surfaces

但是代數表達很難表達複雜的曲面

Constructive Solid Geometry

Distance Functions

大佬:https://iquilezles.org/articles/raymarchingdf/

定義一個複雜曲面的過程如CSG所示,可以通過對一些隱式幾何的並交difference操作去表達(其實可以理解成用基礎幾何體創造新幾何體的過程)
距離函數可以表達一個空間中的點距離最近表面的值,可以認爲表達了場景中的表面信息。表達新幾何的過程,就是融合已知距離函數的過程。

其中Blending是線性插值(插值的目標是sdf值)的意思,有一個例子:

我們的目標是將A B表面融合,那麼應該變成左邊一半是黑色右邊一半是白色空間。在第一列的blend(A,B)中,老師的意思是直接對顏色做線性插值會得到的結果,但這其實並不是我們想要的幾何表面。
但是通過將SDF值融合,就能達到表面融合的目的:blend(SDF(A),SDF(B))

水平集

水平集是一種類似距離場的表達。

類似在醫院拍片的時候,當f(x)等於不同值時可以拍出來不同的組織器官和切片。

Fractals(分形)

Exhibit self-similarity, detail at all scales

隱式表達的 Pros & COns

Pros:

  • compact description (e.g., a function)
  • certain queries easy (inside object, distance to surface)
  • good for ray-to-surface intersection (more later)
  • for simple shapes, exact description / no sampling error

Cons:

  • difficult to model complex shapes
    • easy to handle changes in topology (e.g., fluid)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章