最近聽了數學中心孫劍老師的幾何處理一門課,講了openmesh,於是試了試。實驗室項目一直在windows+VS2012下開發,於是也想著openmesh在win下結合vs2012.環境搞了好久沒搞定。網上的方法也都試過了。
官網提供的Openmesh2.3支援32/64位下vs2010,開始想著2012相容,安裝了多次沒搞定。比如網上所說的copy lib/include目錄,添加OpenMeshTools和OpenMeshCore的lib檔案依賴,添加預定義宏 _USE_MATH_DEFINES和NOMINMAX……都搞不定。
最後解決方案:下源碼,在vs2012下重新編譯產生。需要用到 cmake,這裡有步驟的介紹。通過Cmake的build和generate一個vs2012的工程之後,開啟solution檔案,能看到不少工程,直接build一個叫all_build的project即可。最後再將相應的include、lib等檔案copy下即可。
老師布置的 hello world的一個作業,大概是熟悉下環境,然後讀取一個off格式的檔案,處理是Color-coded mesh based on valences.效果如下圖所示,off檔案中標明了點資訊和整個拓撲結果,圖中顏色異樣的地方就是該點周圍直接相連的點比其他多(圖中是8個,其他的為6)。
Openmesh實現很簡單,直接read進來,OpenMesh::IO::read_mesh(mesh, " eight.off")),然後遍曆一下頂點,直接通過mesh.valence(vertexHandler)就能得到valence值,再直接用 mesh.set_color(vertexHandler, MyMesh::Color(r,g,b,a))就可以針對valence值對每個點設定相應的顏色資訊,最後write_mesh()的時候就能將點資訊儲存好。儲存好後可以用其他的geometry view tools開啟看到效果。上圖右是用OpenFlipper開啟效果.