Loop细分
- 首先在每个三角形的三条边的中点添加顶点
- 对每一个新顶点加权平均(
3
8
∗
(
A
+
B
)
+
1
8
∗
(
C
+
D
)
{3 \over8} *(A + B) + {1 \over8}*(C+D)
83∗(A+B)+81∗(C+D))。
- 更新旧的顶点(源三角形顶点)
- 定义某个旧顶点的度为n。
- 定义u为加权系数。(u约小表示旧的顶点的变化程度越小)。
更 新 顶 点 坐 标 = ( 1 − n ∗ u ) ∗ 原 顶 点 坐 标 + u ∗ 周 围 旧 顶 点 坐 标 之 和 ( n 个 ) 更新顶点坐标 = (1-n*u)*原顶点坐标 + u*周围旧顶点坐标之和(n个) 更新顶点坐标=(1−n∗u)∗原顶点坐标+u∗周围旧顶点坐标之和(n个)
算法精妙之处
如果一个顶点的度约大,说明这个顶点他的权重很小。那么这个顶点可以被周围的顶点影响程度大。
如果一个顶点的度很小,说明这个顶点很关键。那么它应该相信自己的位置,不被周围顶点影响。
Catmull-Clark Subdivision
适用于非三角形(更一般的)网格。
这里就不详细介绍。
引用另一篇blog
网格简化-边坍缩
将一条边捏成一个点。
但是我们要捏哪些点呢???
这里我们引入:二次误差度量。
二次误差度量
找到一个点,使得这个点和它相关联的面的距离的平方最小。
坍缩的边选取二次度量误差最小的边。(贪心算法,优先队列)
shadow Mapping
只能处理点光源,会有明显的阴影边界。
- 从光源看向点,记录光源看到的深度。
- 从视口出发,再次看向场景。记录看到的点。
- 将视口点投影到光源点,比较深度值。如果“等于”(浮点数等于),说明能看到。如果大于说明是阴影。
该技术用于游戏,以及早期的电影。因为这种技术计算速度快,只用做两次投影即可得出阴影。
但是,只有硬阴影(也可做软阴影),而且没有光线的弹射,反射,折射等。