Implicit and explicit
Implicit
是并不会告诉任何点的信息,只会告诉该曲面上所有点满足的关系
$$ f(x,y,z)=0 $$- 判断所给出的隐式方程描述的是一个怎样的形状十分困难
- 可以十分容易的判断出一点与曲面的关系
example for Implicit
- 代数方法描述

- Constructive Solid Geometry(CSG 通过基本几何的运算定义新的几何)

- Signed Distance Functions(空间任何点到物体表面的最短距离来描述,用正负表示在物体外还是内)
在2D情况,看下图就很好理解了
图片来自https://blog.csdn.net/CODE_RabbitV/article/details/140288664
当两个距离函数进行融合后后,找到所有值为0的位置,就是融合后的物体表面
- 分形

explicit
所有曲面的点被直接给出,或者可以通过映射关系直接得到 例如:
$$ f(u,v) = ((2+cosu)cosv,(2+cosu)sinv,sinu) $$把uv都遍历一遍就可以拿到所有的(x,y,z)
因根据需要选择一种表达方式
Exampl For Explicit
- Point Cloud(点云)全是点组成的模型

- Polygon Mesh(多边形面)
计算机中用三角形面表示的文件 .obj文件

Curves 曲线
贝塞尔曲线(Bézier Curves)
给定一系列控制点,画出曲线,下图是实际例子
de Casteljau实现
考虑3个控制点(quadratic Bezier)
给定一个比例t,把两个线段都根据t截开
得到的两个点连起来再执行相同操作
最后只有一个点了,就确定了曲线一个点的位置
把所有的t都找一遍,就画出了曲线,见下图,想象一下绿色和蓝色的线跟着t的变化一直变化,就会画出蓝色的线
可以用表达式表达出每个点,用t去截线段,其实就是做一个插值计算
最终总结,给定n+1个控制点,比例t的情况下,可以得到n阶的贝塞尔曲线
贝塞尔曲线的一些性质:
- 必定经过起始与终止控制点
- 必定经与起始与终止线段相切
- 具有仿射变换性质,可以通过移动控制点移动整条曲线
- 凸包性质,曲线一定不会超出所有控制点构成的多边形范围 什么是凸包(convex hull)?想象墙上有许多图钉,我们需要用一根橡皮筋把这些图钉围住,于是我们开始会让橡皮筋尽可能的撑大,然后松手放开橡皮筋,它所形成的多边形即为凸包,如图中蓝色曲线所示
贝塞尔曲线在控制点过多时,不好控制,如下图所示
于是就有了Piecewise Bézier Curves,取一部分点做,然后结合起来,如下图
贝塞尔曲线的连续性
C0连续,就是控制点重合
C1连续就是达到了曲面光滑,实现方法看下图红线

Surfaces 曲面
贝塞尔曲面
通过贝塞尔曲线获得贝塞尔曲面的方法:
如下图已经画出了四条贝塞尔曲线,在t取某一值下生成的4个点,把这4个点作为控制点再画一条曲线,这样t变化时,这条线就绘制成了一个面

Mesh Operation

Mesh subdivision 曲面细分
引入更多的三角形,

Loop Subdivision
-
增多三角形数量,如下如

-
调整细分后新的三角形顶点处理,更新一条边的中心点,如下图的白点,对这个点的处理,通过上下左右四个顶点加权平均(这个权重是具体的算法,这里不做解释)

-
旧的顶点呢,如下图白点就是一个旧顶点,更新算法包括自己本来的位置,以及周围顶点进行加权平均

Catmull-Clark Subdivision
一般的模型不一定全是三角形,就没法用loop subdivision,Catmull-Clark可用于一般情况,如下图有正方形也有三角形
先定义两个表达,非四边形面和奇异点(度不等于 4的点)
如上图框所示,每条边和每个面都取钟中点,然后把这些点连起来,如下图所示
连接后,奇异点变多了,非四边形都消失了,此时奇异点是4个,但是如果继续细分,奇异点数目并不会继续增加,如下图还是4个
与loop一样,调整完后需要对顶点位置进行处理,处理方法如下
下图为两种方法对比

Mesh Simplification 曲面简化
当模型距离很远时,模型的细节就没必要表现出来
Collapsing An Edge 边坍缩
那哪些边可以进行坍缩,如果度量呢?下图进行了度量,首先5个顶点进行平均效果并不好, 用2次误差方法来实现:即坍缩之后蓝色新顶点所在的位置与原来各个平面的垂直距离之和。
- 为模型每条边赋值,其值为坍缩这条边之后,代替两个老顶点的新顶点所能得到的最小二次误差度量
- 选取权值最小的边做坍缩,新顶点位置为原来计算得出使得二次误差最小的位置
- 坍缩完之后,与之相连其他的边的位置会改动,更新这些边的权值
- 重复上述步骤,直到到达终止条件
一些坍缩的实例
几何部分就这些东西了~