日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ear Clipping算法简介

發布時間:2023/12/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ear Clipping算法简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

背景

偶爾翻出來幾個以前的老游戲玩了一下,其中包括了孢子。說實話,以前作為玩家的時候感覺這個游戲也就一般。但是現在作為游戲開發者發現這個游戲涉及到一些很酷的技術,包括自定義的肢體(Skin方面)、動畫的泛化(Animation Retargeting方面)以及IK結算的泛化。因此查找了一些這方面的資料,嘗試了解一些這方面的知識。

搜索了一些資料之后,決定挨個的去補一補對應的知識點。有些知識點在大學也學過但是記憶已經模糊了,有些則是完全沒聽過的領域,統一記錄下來吧,也當作是對以往的知識點的整理。

這篇博客介紹的就是孢子中使用的用于將自定義肢體模型進行細分化的Ear Clipping算法。

在孢子的開發者博客中提到,在項目開發期,Marching Cube算法仍然處于專利保護期(雖然游戲發行的時候專利已經過期了……),因此開發者決定使用Ear Clipping算法將整個網格進行細分處理。

算法介紹

Ear Clipping算法指的是用于將一個普通多邊形拆解為一系列的三角形,這些三角形的頂點都來自原來的普通多邊形,如下圖:

各類定義

普通多邊形的定義

上文提到了普通多邊形(Simple polygon),普通多邊形定義如下:

  • 普通多邊形由n個頂點(V0V0到Vn?1Vn?1)組成。
  • 連續的頂點通過一條邊<ViVi,?Vi+1Vi+1>組成,0≤i≤n?20≤i≤n?2,并且由邊<Vn?1Vn?1,?V0V0>鏈接首尾兩個點。
  • 每個頂點都有且只有兩條邊相連,沒兩條邊都只允許相交于頂點。
  • 如下圖,最左邊的是一個普通多邊形,中間的不是普通多邊形因為頂點V1V1連接了多于兩條邊,右邊的不是普通多邊形因為1和4的邊相交于非頂點。

    Ear Tip

    針對于三個連續的頂點Vi0,Vi1,Vi2Vi0,Vi1,Vi2,如果線段Vi0Vi2Vi0Vi2是多邊形的一根對角線,那么頂點Vi1Vi1就是一個Ear tip.

    說的更通俗一點,如果線段Vi0Vi2Vi0Vi2完全位于多邊形內部,并且頂點Vi1Vi1是一個凸頂點,那么頂點Vi1Vi1就是一個Ear tip。

    算法過程

    算法過程其實相對來講比較簡單:

  • 首先建立起對應頂點的雙向鏈表VV。
  • 構建初始的凸頂點集CC和凹頂點集RR,并且構建出初始的Ear Tips集EE。
  • 每次從Ear Tips集中刪除一個元素ViVi并且在多邊形頂點集中也刪除之,并且在生成的三角形鏈表中添加入對應的三角形<Vi?1,Vi,Vi+1Vi?1,Vi,Vi+1>。之后刷新臨接的頂點,計算是否生成了新的凸頂點以及Ear Tip。
  • 重復操作3,直到鏈表中只剩下三個頂點,此時就是最后的三角形了。
  • 例如下圖,在多邊形中刪除了Ear Tip 3,此時三角形<V2,V3,V4V2,V3,V4>就被放入三角形列表中。

    再如下圖,在多邊形中刪除了Ear Tip 4,此時三角形<V2,V4,V5V2,V4,V5>被加入三角形鏈表中,并且頂點5變成了新的Ear和凸頂點,此時需要更新對應的鏈表。

    完整過程如下:

    不難看出,Ear Clipping算法的時間復雜度是O(n2)O(n2),并且三角化的最終質量很大程度上取決于頂點順序。在某些情況下很容易生成過于細長的三角形,這樣不利于Skinning的進行。

    思考

    Ear Clipping算法常用于將Polygons進行三角化,但是在孢子中最后的軀干模型往往是基于一個隱式曲面(Implicit Surface),也就是說是連續的,此時需要將隱式曲面轉化為多邊形之后,再進行操作。

    但是看得出來孢子中并沒有使用這個算法進行最終的三角化。在最終的隱式曲面方程定型之后,他們使用的是Graphics Gems III的文章Compact Isocontours from Sampled Data,對應的tech report鏈接。據說是強烈推薦,下一篇文章就寫這個吧……

    總結

    以上是生活随笔為你收集整理的Ear Clipping算法简介的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。