Processing math: 100%

Catmull-Clark 细分

loop 细分只能用于三角形面片,而此算法则更通用

定义

Quad face:四边形面片

Non-quad face:非四边形面片

奇异点: degree不为4的点,degree 表示与点相邻的边数

第一步:取所有边上的中点与面上的中点

把边中点与面中总用一条线连起来

操作后,增加的奇异点个数与 操作前的non-quad face 数相同,且所有的面都变为 quad face

第二步: 更新面中心的新增点,

更新公式为:

f=v1+v2+v3+v44

❓ 如果是在一个三角形面片的中心呢?

第三步: 更新边中心的新增点

更新公式为:

e=v1+v2+f1+f24

更新 old 顶点

更新公式为:

p=f1+f2+f3+f4+2(e1+e2+e3+e4)+4p16

💡 以上这些方法都是基于经验估计。
new point的位置不是该是由邻居点使用固定加权值得到,这个权值应该是不固定的,与old point和neighbour的距离有关。
这些都是local细分方法,要想细分后与原mesh形状接近,应该使用global方法。
同时,mesh细分是对丢失信息的补全,要想猜丢失的信息,还需要从其它mesh的统计规律、物理意义、人为知识中得到先验信息。