games101_几何
几何介绍
- 几何基础
- 几何实例
- 几何的表示法
几何形体例子
- 几何形状
- 曲面
- 复杂的几何构造
- 布料的表示(薄厚,透明度等)
- 模拟力,水的表示
- 复杂几何(存储,渲染问题等)
- 毛发的表示(三角形的数量)
下面将介绍几何表示方法:
主要分为
- implicit(隐式几何)
- Explicit(显式几何)
下面是示例:
隐式几何(“Implicit” Representations of Geometry)
通过告诉点关系,对点进行归类,从而判断几何关系(是否在几何表面等关系)。
- 告知几何中点的函数关系,并不告诉实际上的点
比如下图,只要点带入f(x,y,z)=0函数中满足关系式,我们就认为这个点就是定义在表面上的一个点。
- 缺点:无法直接判断该几何形状
通过下图的公式,很难判断出下图中的几何形状。
- 优点:很容易判断几何关系(带入隐式即可算出。)
隐式几何的一些表示
Algebraic Surfaces(Implicit)
直接使用算数表达式进行几何体的构建,通过下图可以知道通过公式并不能直观地知道图形到底是什么样子。
CSG——Constructive Solid Geometry(Implicit)
通过简单的几何和一些简单的操作就可以得到一些复杂的几何体。
距离函数——Distance Functions(Implicit)
对于一个表面,我们不会直接去描述它,而是说一个点到这个表面的最短距离。
- 距离函数: 空间中任何一个点到你想要的几何形体上面任意的一个点上的最小距离,这个距离可以是正的或者负的。如果我认为有一个点在这个物体表面的外面,那这个点的最小距离算出来之后,加上正号(它是正的)。点在物体内部也是同理,但加上的是负号。
- 可以对通过对距离函数进行Blending, 来描述几何体之间的融合过程。
一个例子:混合一个移动的边界:
想通过A、B得到移动融合运动边界(假设划线为黑色,空白为白色),但是直接做出的结果blend(A,B)得出的颜色将会是黑、灰、白(AB重合区域、B-A区域、空白区域)。这并不是我们想要得到的黑白融合结果。
通过计算AB两张图中任意点对于中间黑色边界的距离,然后进行混合计算(在A、B中都存在的区域需要求平均)得到中间过渡。
- SDF (Signed Distance Function)有向距离函数,在距离函数的基础上,区分点到几何体距离的正负,几何体内部的点距离为负,外部的点距离为正。
- 边界的左边区域为负的,边界的右边区域为正的。
- 然后两张图进行混合blend(SDF(A),SDF(B))。
比如下面这张图是一个例子:
水平集法(Level Set Methods)
这种方法与距离函数方法类似,找临界面 f(x) = 0 的面(类似等高线),在二维、三维空间中均可使用。找出f(x)值相等的所有点即可找出一个平面。
水平集在三维空间中的应用。
应用举例:模拟水圈形成
分型法(Fractals(Implicit))
“分型”是指一个大物体由一些形状相同的小物体组成,小物体又由一些形状相同的更小物体组成,即“自相似”(类似递归思想)。
隐式表示的优点和缺点
显式几何(“Explicit” Representations of Geometry)
直接给出几何体的所有点或者通过参数映射给出几何体的所有点。(通过遍历所有给出的uv点,映射到xyz面上就可以得出图形应有的样子)
相对于隐式的几何表示:
-
容易得出几何体的形状。
可以看到下图中u、v可以映射成(x,y,z)。
-
不容易判断点和几何体之间的关系。
很难去判断点的内外