2008-09-17 58 views
18

我正在尋找一個良好的3D網格庫一個良好的3D網格庫

  • 應該能夠閱讀流行格式(OFF,OBJ ...)
  • 應支持半邊結構三角湯
  • 應該容忍故障和非法網格。
  • 基本的幾何操作 - 交叉點,正常計算等'
  • 最重要的是 - 不應該使用無盡的模板和繼承層次結構。

我試過CGAL和OpenMesh,但都在最後一點失敗。

即使使用最先進的代碼分析工具也無法跟蹤的CGAL。

到目前爲止,我正在認真考慮拉我自己的。

我的偏好是C++,但我打開其他選項。

+0

我不知道這是否符合你的要求不是直接編碼實體的隱式表示,但看看到VCG – elect 2016-03-03 09:49:12

回答

10

請問爲什麼最後一點是要求?

爲公共消費編寫的圖書館被設計爲儘可能通用,以便最廣泛的受衆可以使用。在C++中,這通常最好使用模板完成。如果找到一個好的圖書館,它會非常糟糕,只會發現它對你的目的沒用,因爲它使用浮動而不是雙打。例如,CGAL似乎採用了廣爲人知和經過充分測試的編寫通用和可擴展C++庫的STL範例。這確實使代碼分析工具難以遵循;我懷疑他們是否非常擅長跟蹤STL頭文件。

但是你想使用庫或修改它?無論哪種方式,他們似乎都有一些非常高質量的文檔(例如Kernel Manual),這些文檔應該能夠相對簡單地找出您需要做的事情,而無需訴諸閱讀代碼。

聲明:我知道這不是你要求的。但我不認爲你在尋找什麼。這是異常罕見找到與我所見過的CGAL掃描一樣好的開源代碼。我強烈建議你再看看它。

2

首先,你需要一些一般性的評論:

  • 閱讀OBJ或關閉的文件是很容易的。幾分鐘後,您可以自己實現它,在提供更多幾何特徵的庫的頂部。另一方面,這樣的庫的幾何部分是非常棘手的,你應該專注於真正處理幾何算法的需求,並嘗試找到適合你的需求的東西。那麼,當然,如果有一個領帶,開始考慮這個接口問題。
  • 在幾何操作方面,你要求交集。你是指原始的交集? (可以找到並實現好的和簡單的算法)或計算兩個網格的交集?或碰撞檢測?(這是一個棘手的問題,沒有簡單的答案)
  • 如果您從更高層次上更具體地瞭解您想要構建的工具類型,那麼人們將能夠引導您找到合適的工具。您的要求太低級。

據我瞭解你的問題,在我看來,你沒有清楚地看到像CGAL和OpenMesh這樣的圖書館。這樣的庫可能不會提供您需要的所有更高級別的工具,但它們的目標是爲您(特別是CGAL案例)提供可以構建幾何應用程序的所有幾何框架。這樣的幾何框架對設計非常微妙,特別是由於魯棒性問題,這對計算幾何非常具體。沒有這樣的框架,構建一個強大的應用程序是一項可怕的工作。

如果您沒有找到適合您需求的庫,那麼您應該認真考慮使用諸如CGAL之類的庫作爲開發的底層框架。它將防止出現與健壯性相關的問題,通常只有在開發過程中才會開始注意到,當更改底層框架時會很痛苦。除此之外,CGAL擁有豐富的文檔和非常活躍的用戶郵件列表。

如果你不知道在幾何軟件的魯棒性問題呢,看看這個頁面: robustness issues

0

我不知道它是否能對您有用。還有另一個圖書館,稱爲紅樹林TDS圖書館,免費提供於http://mangrovetds.sourceforge.net它支持任何類型的形狀(2D,3D,任何維度),任何領域(流形,非流形,僞流形,iqm複合體,單純複合體等)。它可能支持不規則的形狀,即由不同維度形成的形狀。

它的主要特性是它是可擴展的,就任何拓撲數據結構而言都是支持的。它是一個插件,可以在運行時更改和加載。

其實現基於基於數組的索引,以數據結構編碼,支持迭代器。它也支持動態屬性。

最後,它支持的數據結構(鬼實體),這對提高拓撲查詢的效率