最近在做ruoyuYang的作業,搜集了一些關于各種細分算法的介紹。
——————————————————————————————————————————————————隨著Directx11的推出,細分曲面在游戲中得到了越來越大的關注。偶一開始覺得是一大堆復雜數學推導的東西,因為導師在中科院的博士幾年就是在做細分曲面,聽說一個很強的師兄三年也都是在做細分曲面。近來做了幾天助教幫忙改作業才偶然看到原來細分曲面也有很簡單的算法實現, 比如Catmull-Clark Subdivision算法,其可以對任意拓撲結構的多邊形進行細分。下面簡要介紹下。
細分新的曲面,先求出新的曲面的頂點:
Face point(位于原來多邊形面里的新頂點)
Edge point(在原來的邊中點附近的新頂點)
New vertex point (對原來的頂點進行調整得到新頂點)
Face point:
給定一個面F,有頂點V1,V2,……,Vn,那么新的Face point,VF計算公式如下

Edge point:
假設一邊E的兩個頂點為v和w,還有相鄰的兩個面為F1和F2(其面頂點已經算出為VF1和VF2)。那么對應這個邊的新頂點VE為

New Vertex point:
給定一個頂點v。假設Q是與v相鄰的多邊形的face point的平均值;v與n條邊相鄰,R是與v相鄰的邊的中點的平均值,那么調整后得到的新頂點位置v'為。

得到新的頂點后,邊是如何產生?
1:每個面頂點(Face Point)VF與包圍它的邊對應的邊頂點(Edge Point)VE相連。
2:每個頂點調整后得到的新頂點(new vertex point)v’與它相鄰的邊上的點(edge point)VE相連。
細分結果示例可以看下圖

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