显式几何的表示方法
Point Cloud
- 使用一系列点表示物体的表面。
- 理论上可以表达空间中任何物体。
- 如物体扫描会得到空间中一系列点,但在建模时我们要提取出大量多边形的面。
- 点云对密度要求很高,因此不常使用。
Polygon Mesh
- 使用三角形表示物体。
- 涉及三角形之间的连接关系。
obj模型文件格式:
v表示按顺序排列的顶点位置数据,在上图中是一个立方体的8个顶点数据。一个立方体具有六个面,使用vn定义法线,在上图中vn不止六个是因为建模软件产生的数据冗余。使用vt表示不同面上顶点的纹理坐标,6个面4个顶点最多有24个vt数据。最后的f表示连接关系,每一行代表一个三角形,用三个顶点的数据表示,每个顶点的数据格式是:顶点序号/顶点纹理坐标序号/顶点法线序号。
Bezier Curve
用一系列控制点定义一条曲线,控制点定义曲线需要满足的性质:
离散时间t,计算曲线上的点。
递归算法即可求解:
插值计算过程:
emsp;计算过程:
N+1个控制点,组合为多项式。
使用三维空间中的点,即可插值出三维空间中的曲线。
曲线的性质:
形成的曲线一定在控制点形状的凸包内
Piecewise Bezier Curves
当控制点太多时,想要调整一条曲线很复杂:
为什么要使用那么多控制点呢?使用多条曲线拼接一条长曲线不就行了?
使用每四个点(起点-终点-两个弯曲控制点)形成一个曲线:
如上图所示,我们使用黑色的起点-终点和两个蓝色的弯曲控制点来表示一条曲线。要注意的是,我们想要连接起来的曲线连续。因为我们知道Bezaer曲线在起点和终点处的切线方向分别都等于它们和对应控制点的连线,因此我们需要使得前一条曲线的终点和对应控制点的连线经过后一条曲线起点的控制点,当然这里说的两条曲线分别的终点和起点其实是一个点,我们要求这三点共线,并且中间拿个点应该是两个控制点的终点,这样才能保证切线的大小相同。最终我们保证了多条曲线在变换方向和大小上的连续。
以上保证了曲线的C1连续,工业上使用C2连续。
样条曲线:
B样条:
Bezier Surfaces
…