2011-05-21 75 views
4

有沒有人有任何良好的實施策略或資源來組建一個b-rep建模系統? OpenCascade是一個非常好的b-rep建模庫(由FreeCad和PythonOCC使用都非常酷),但是這個庫很龐大,很複雜,並且可能不是學習b-rep建模引擎的好起點」。實現邊界表示建模

我已經完成了相當多的研究論文閱讀,雖然基本數學對於理解爲什麼一切正常有用,但它給我留下了一些實施問題。

halfedge數據結構似乎是存儲關於在B-REP實現的主體的信息的首選方式。

所以問題沒有特定的順序了一把:

  1. 使用半邊數據結構是如何渲染通常執行?基於固體邊界的三角測量?

  2. 通常如何實現圓形面/曲面?例如,在我閱讀的b-rep的一個基本介紹中,一個圓柱體被內部存儲爲棱鏡。一個擠出的三角形和元數據存儲在帽面上,表示它們確實是圓形的。

  3. 布爾操作是如何實現的?我已經閱讀了關於沿相交曲線生成BSP-Tree的內容,然後組合這些樹來生成新幾何。是否有其他方法來實現布爾運算以及他們有什麼樣的pro/con?

謝謝!

如果您想提供一個代碼示例,不用擔心語言 - 的問題,更多的是關於算法/數據結構實現細節

+0

我不知道,但我覺得這可能是http://programmers.stackexchange.com – 2011-05-21 03:59:15

+2

[不夠公平一個很好的問題,這個問題可能會適合在幾個方面:cstheory.stackexchange.com,math.stacke xchange.com] 雖然我的印象是,程序員更專業的討論和更少的有關代碼 – klyd 2011-05-21 04:07:15

+0

我不是_programmers_活躍,但在我看來,這個問題需要一個主題的討論,而不是特定的下回答,我認爲這是更接近FAQ描述了_programmers_。 – 2011-05-21 04:16:35

回答

0

我工作的A B-REP在C#中建模(我處於一個非常早期的階段:這是一個巨大的項目),所以我問自己和你一樣的問題。這裏是我的答案:

  1. 三角:我沒有做這一步,但我想的策略是如下:項目參數空間的端面界限,獲得2D多邊形(有孔),三角用耳廓裁剪算法,然後在三維空間中重新投影三角形頂點。對於曲面,我需要用網格分割多邊形以跟隨曲面;
  2. 對於圓柱體,有3個邊:兩個圓形和一個線段。我爲每種類型的曲線設置了類(Segment3d,Circle3d ...),並且每個半邊都包含其中一個類的實例。每個臉部都有一個表面物體(平面,圓柱體,球體......)的實例;
  3. 有一個基於BSP-Tree的有趣項目here,但它使用CSG方法,而不是B-rep。我仍在研究如何做到這一點,但我不認爲我需要一個BSP樹。難點在於計算交叉點和拓撲。

我已經在這個問題上找到的最好的書: