The Fourth Dimension Space

枯叶北风寒,忽然年以残,念往昔,语默心酸。二十光阴无一物,韶光贱,寐难安; 不畏形影单,道途阻且慢,哪曲折,如渡飞湍。斩浪劈波酬壮志,同把酒,共言欢! -如梦令

细分曲面Catmull-Clark Subdivision算法[转]

最近在做ruoyuYang的作业,搜集了一些关于各种细分算法的介绍。
——————————————————————————————————————————————————随着Directx11的推出,细分曲面在游戏中得到了越来越大的关注。偶一开始觉得是一大堆复杂数学推导的东西,因为导师在中科院的博士几年就是在做细分曲面,听说一个很强的师兄三年也都是在做细分曲面。近来做了几天助教帮忙改作业才偶然看到原来细分曲面也有很简单的算法实现, 比如Catmull-Clark Subdivision算法,其可以对任意拓扑结构的多边形进行细分。下面简要介绍下。

 细分新的曲面,先求出新的曲面的顶点:

 Face point(位于原来多边形面里的新顶点)

 Edge point(在原来的边中点附近的新顶点)

  New vertex point (对原来的顶点进行调整得到新顶点)

 

 Face point:

 給定一個面F,有顶点V1,V2,……,Vn,那么新的Face point,VF计算公式如下 

 

  Edge point:

   假设一边E的两个顶点为vw,还有相邻的两个面为F1F2(其面顶点已经算出为VF1VF2)。那么对应这个边的新顶点VE

  New Vertex point:

  给定一个顶点v。假设Q是与v相邻的多边形的face point的平均值;vn条边相邻,R是与v相邻的边的中点的平均值,那么调整后得到的新顶点位置v'为。

  得到新的顶点后,边是如何产生?

    1:每个面顶点(Face PointVF与包围它的边对应的边顶点(Edge Point)VE相连。

    2:每个顶点调整后得到的新顶点(new vertex pointv’与它相邻的边上的点(edge pointVE相连。


    细分结果示例可以看下图

 

   



转自:http://blog.csdn.net/qiul12345/article/details/5938771

posted on 2012-07-07 15:07 abilitytao 阅读(2517) 评论(1)  编辑 收藏 引用

评论

# re: 细分曲面Catmull-Clark Subdivision算法[转][未登录] 2015-12-13 19:08 dd

如果v顶点相邻的有三个边,却只有两个临接面怎么办?  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理