无需登录 数据私有 本地保存

Catmull-Clark 细分曲面演示 - 控制网格迭代

33
0
0
0
面: 6
顶点: 8
拖拽旋转  |  滚轮缩放  |  右键平移
6
细分面数
26
细分顶点
48
细分边数
4x
面数增长

Catmull-Clark 细分是一种经典的计算机图形学曲面细分算法,由 Edwin Catmull 和 Jim Clark 于1978年提出。它通过迭代地细化多边形网格来生成平滑的曲面,是 Pixar 动画工作室的 RenderMan 渲染器中 Subdivision Surface 的核心算法之一。该算法可以将任意拓扑结构的多边形网格(尤其是四边形网格)转化为视觉上平滑的曲面,广泛应用于电影特效、游戏建模和工业设计领域。

每次迭代包含四个关键步骤:
面点 (Face Point):计算每个面的质心(所有顶点的平均值);
边点 (Edge Point):每条边的两端顶点与相邻两个面点的平均值;
新顶点 (New Vertex):根据原顶点价数 n,加权平均面点、边中点和原顶点位置:(F + 2R + (n-3)×V) / n
连接:将面点、边点和新顶点重新连接成四边形面。每次迭代后,非四边形面都会转化为四边形。

迭代次数直接影响曲面的平滑度和面数:
0次:显示原始控制网格(多面体),面数最少;
1次:产生明显圆润效果,面数增至约4倍;
2-3次:曲面已经非常光滑,通常满足视觉需求;
4次及以上:曲面几乎完全平滑,但面数呈指数增长(4ⁿ倍),计算量显著增加。在工业应用中,通常2-3次迭代即可获得视觉上满意的结果。

Loop 细分:专为三角形网格设计,在三角形面上生成更细的三角形,适用于游戏引擎中的三角网格;
Doo-Sabin 细分:类似于 Catmull-Clark,但使用不同的顶点定位公式,适用于任意多边形面;
Catmull-Clark 细分:特别适合四边形网格,能将任意拓扑转化为四边形主导的平滑曲面,是影视级曲面建模的首选算法,也是 OpenSubdiv 库的核心算法。

使用顶部的形状下拉菜单可在立方体、四面体、八面体、小房子和环状雏形之间切换。拖动迭代次数滑块(0-4)可实时查看不同细分级别。您还可以:
• 点击控制网格按钮切换橙色线框的显示
• 点击线框按钮查看细分曲面的拓扑结构
• 点击旋转启用自动旋转,从不同角度观察曲面
• 在3D视图中拖拽鼠标旋转、滚轮缩放、右键拖拽平移视角