计算机图形学入门VIII
Geometry 1&2 (Introduction,Curves and Surfaces)
一、概述
- 隐式表示(Implicit):不给出具体点的信息,仅有点之间的关系
eg: A sphere all points in 3D,where $x^2+y^2+z^2=1$ - 显式表示(Explicit):所有点的信息都会直接给出(或通过参数映射定义点的信息)
eg: $f(u,v)=((2+cos\ u)cos\ v,(2+cos\ u)sin\ v,sin\ u)$
二、隐式几何
(绝赞总结ing)
三、显式几何-曲线
点云(Point Cloud):图像全部由点构成,只要密度足够大,就可以表示非常复杂的模型
多边形网络(Polygon Mesh):图像由多边形构成(建模软件中最常见)
贝塞尔曲线(Bezier Curves):给定一些控制点来描述贝塞尔曲线
**德卡斯特里奥算法(Casteljau Algorithm)**:确定起止点$b_0b_2$,按照一定比例$t$在直线$b_0b1$,$b_1b_2$上找到对应的点$b_0^1 b_1^1$,重复上述操作在直线$b_0^1 b_1^1$上找到一点$b_0^2$,之后遍历所有比例$t$,即可画出对应的贝塞尔曲线(该算法同样适用于三维空间)
上述算法的代数表示(伯恩斯坦多项式)
贝塞尔曲线的性质:
- 贝塞尔曲线规定一定过起止点(0时刻为起点,1时刻为终点):$b(0)=b_0;b(1)=b3$
- 四个控制点的贝塞尔曲线的切线:$b’(0)=3(b_1-b_0);b’(1)=3(b_3-b_2)$
- 凸包性质:形成的贝塞尔曲线上的任何一个点一定在给定的控制点形成的多边形内
逐段的贝塞尔曲线(Piecewise Bezier Curves):四个控制点的贝塞尔曲线(cubic Bezier)在应用中最常见,逐段拼接(连接点处的切线共线且距离相等就可以得到光滑的曲线)
- 第一段的终点为第二段的起点,我们称这种连续为$C^0$连续
- $C^1$连续即切线共线方向相反距离相同(一阶导数连续)
- 类比可推出高阶连续
四、显式几何-曲面
贝塞尔曲面:完全可以类比贝塞尔曲线,只不过将参数$t$升至二维由$u,v$控制
网格操作(几何处理)
- Mesh subdivision(再分割)
- Mesh simplification(简单化)
- Mesh regularization(正则化)
Loop细分(Loop Subdivision)
- 三角形数量增多
- 区分新旧三角形的顶点
Catmull细分(Catmull-Clark Subdivision)
- 非四边形面(Non-quad face)
- 奇异点(Extraordinary vertex):度不为4的点
- 取边的中点与面的中点并连接
可以看到完成一次细分后增加了两个新的奇异点(度为3),继续细分奇异点数量不会再增加(奇异点数=最开始时非四边形面的数量)
Loop Subdivision 适用于三角形 atmull-Clark Subdivision 适用于各类多边形
边坍缩(Collapsing An Edge):去掉一些边使图形简化
二次误差度量(Quadric Error Metrics):去掉内部点后使下面两条边坍缩为一条边,同时生成新的点到原来边的距离的平方和最小
一般根据二次度量误差来取边进行坍缩简化,但每一次坍缩都会使周围的边发生变化,于是我们需要寻求一种数据结构,既能快速排序二次度量误差又能动态维护各元素————即优先队列(堆)
五、阴影映射(Shadow mapping)
- shadow mapping在生成阴影时不需要场景信息,但可能会出现走样现象且大多用来制作硬阴影(关键点在于如果一个点不在阴影中那么光源和摄像机均能看到这一点)
- 点光源
- 从点光源看向场景并记录看到点的深度
- 从摄像机处观察场景,将看到的点投影回点光源处,对比深度信息,即可分辨点是否处于阴影中(可见与否)
- 软硬阴影:边界锐利与否(参考日食现象本影半影),对于点光源一定生成的是硬阴影,能够产生软阴影说明光源具有一定的大小