這是一個實作與3D模型Mesh相關的課堂專案,這個專案分成兩個部分,第一個部分是3D模型的mesh簡化,也就是減少mesh面數,我們需要實作 Surface Simplification Using Quadric Error Metrics (https://dl.acm.org/doi/10.1145/258734.258849) 這篇論文,使用QEM計算合併每個邊合併的error,error值越大代表這個邊合併後被改變的形狀越大,所以需要由error數值小的開始簡化。最後加入滑桿自由調整mesh的面數。
第二部分是實作將模型骨架化,需要實作另一篇論文 Skeleton Extraction by Mesh Contraction (https://dl.acm.org/doi/pdf/10.1145/1399504.1360643) ,論文中會透過least-square矩陣的方式把3D模型點資訊轉換到矩陣內計算,計算完後模型上的點會慢慢向normal反方向收縮,將3D模型慢慢縮成骨架的樣子。
在這個專案裡,我們使用C++作為主要程式語言,OpenMesh做為儲存mesh資料與mesh相關計算的資料庫,計算least-square時使用Eigen作為計算矩陣時的library,並使用Windows Form作為UI介面。