Lecture 11: Geometry 2(Curves and Surfaces)¶
Explicit Representations in Computer Graphics¶
Point Cloud¶
点云是最简单的表现形式,直接用一组离散的点来表示物体的形状。点云通常通过3D扫描仪获取,适用于捕捉复杂的几何形状,可以变成多边形网格。
Polygon Mesh¶
多边形网格是计算机图形学中最常用的几何表示方法。它由顶点、边和面组成,通常使用三角形或四边形来构建复杂的3D模型。多边形网格易于渲染和处理,广泛应用于游戏和动画制作。
.obj 文件格式是常见的多边形网格文件格式,支持顶点、纹理坐标和法线等信息。
格式示例:
Curves¶
这里专门讲贝塞尔曲线(Bézier Curve)。
贝塞尔曲线是一种参数化曲线,广泛应用于计算机图形学和设计中。
Bézier Curve¶
通过de Casteljau算法来计算贝塞尔曲线。
这个算法的计算过程如下:
以三个点为例,给定点\(b_0, b_1, b_2\),以及参数\(t\),计算点\(b(t)\):
-
计算线性插值点:
-
\(b_{0}^{1}(t) = (1-t)b_0 + t b_1\)
- \(b_{1}^{1}(t) = (1-t)b_1 + t b_2\)
- 再次线性插值:
- \(b_{0}^{2}(t) = (1-t)b_{0}^{1}(t) + t b_{1}^{1}(t)\)
- 代入化简得到:
- \(b_{0}^{2}(t) = (1-t)^2 b_0 + 2(1-t)t b_1 + t^2 b_2\)
扩充到\(n\)个点:
曲线就是把这个点随着参数 t 在区间 \([0,1]\) 连续变化时得到的轨迹。
Properties of Bézier Curves¶
- 端点插值:曲线在\(t=0\)时通过\(b_0\),在\(t=1\)时通过\(b_n\)。
- 凸包性质:曲线完全位于控制点的凸包内。
- 变换不变性:对控制点进行线性变换(如平移、旋转、缩放),曲线也会相应变换。
Piecewise Bézier Curves¶
Piecewise Bézier曲线是将多个Bézier曲线段连接起来形成的连续曲线。每个曲线段由一组控制点定义,通常使用4个控制点来定义一个三次Bézier曲线段,即Piecewise Cubic Bézier曲线。
原因是:对于起点和终点,曲线在这些点处的切线方向由相邻的控制点决定,可以使用类似操作杆的方式来控制曲线的形状。
当使用Piecewise Bézier曲线时,需要确保曲线段之间的连接处具有一定的连续性,常见的连续性有:
- C0连续:曲线段在连接点处位置连续,即连接点相同。
- C1连续:曲线段在连接点处一阶导数连续,需要连接点左右相邻的控制点共线且距离相等。
- C2连续:曲线段在连接点处二阶导数连续。
其他曲线¶
- Spline曲线:由多段低阶多项式拼接而成,常见的有B样条(B-spline)和NURBS(Non-Uniform Rational B-Splines)。其中B样条曲线具有局部控制性,也就是说,调整一个控制点只会影响曲线的局部形状,而不会影响整个曲线。
Surfaces¶
曲面是三维空间中的二维几何对象。
Bézier Surface¶
Bézier曲面是Bézier曲线的二维推广。它由一组控制点网格定义,通常使用双参数\((u, v)\)来表示曲面上的点。
如使用\(m \times n\)个控制点\(b_{ij}\),则Bézier曲面可以表示为:
其中\(B_{i}^{m}(u)\)和\(B_{j}^{n}(v)\)分别是Bézier基函数。
以4x4控制点为例,选定一个特定方向,如u方向,计算出4条Bézier曲线,然后在v方向上对这4条曲线再进行Bézier插值,得到曲面上的点。
Mesh Operations¶
常见的网格操作包括:
- Subdivision:细分网格以增加其分辨率和光滑度。
- Simplification:简化网格以减少其复杂度。
- Regularization:调整网格以改善其质量和形状。