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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章