♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥
目录
1.细分曲面的作用
2.细分曲线、细分曲面原理
3.细分曲面算法——Catmull-Clark细分
4.细分曲面的算法——Loop细分
5.细分曲面表示——Independent faces
6.细分曲面表示——Vertex and face tables
7.细分曲面表示——Adjacency lists
8.细分曲面表示——Winged-Edge
♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥♥,.*,.♥,.*,.♥,.*,.♥,.*♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥,.*,.♥
1.细分曲面的作用
使得曲面变得光滑。
2.细分曲线、细分曲面原理
每次细分,在曲线边上插入一个新的顶点,随着插入顶点的增加,折线逐渐变成了光滑的曲线。曲面细分同理。
3.细分曲面的算法——Catmull-Clark细分
Catmull-Clark是一种四边形网格的细分法则。每个面计算生成一个新的顶点。每条边计算生成一个新的顶点,同时每个原始点更新位置。
更新规则如下:
细分新的曲面,先求出新的曲面顶点:
Face point :位于原来多边形面里的新顶点
Edge point:在原来的边中点附近的新顶点
New vertex point:对原来的顶点进行调整得到的新顶点
计算法则为:
Face point:给定一个面F,有顶点v1,v2,...,vn,则新的Face point,VF的计算公式为:
Edge point:假设一条边E的两个顶点为v和w,还有相邻的两个面为F1和F2,则对应的新顶点VE为:
其中,VF1 和VF2在Face point中已经求出来了。
New Vertex point:给定一个顶点v。Q是与v相邻的多边形的face point的平均值。v与n条边相邻,R是与v相邻的边的中点的平均值,则调整后的新顶点的位置为:
得到新的顶点后,就可以计算边:
每个面顶点(Face point)VF与包围它的边对应的边顶点(Edge point)VE相连。
每个顶点调整后得到的新顶点(New Vertex point)v'与它相邻的边上的点(Edge point)VE相连。
示意图:
例子:
对四边形进行细分。
四边形的四个顶点分别为v0,v1,v2,v3
(1)网格内部F顶点位置
v=(v0+v1+v2+v3)/4
(2)网格内部V顶点位置
设内部顶点v0的相邻点为v1,v2,...v2n,则该顶点更新后的位置为&#