我想在非凸多面體對象上實現布爾運算,並想用OpenGL渲染它們。我已閱讀了關於在多面體上執行布爾運算的兩種主要技術:邊界表示(BReps)和構造實體幾何(CSG)。 根據一些論文,使用CSG實現布爾應該更容易,所以我想使用CSG而不是BReps。 我知道BReps通過頂點和多邊形描述幾何體,而CSG使用基本原始對象,例如在樹結構中組合的圓柱體或球體。 我知道在BReps上執行布爾值是通過切割相交的多邊形並刪除那些不需要的多邊形來實現的(取決於操作符是否爲聯合或區別或...)。 但是如何在CSG方面實現布爾運算?我如何實現CSG布爾操作?我已經在互聯網上看過,發現這個例如http://evanw.github.io/csg.js/或https://www.andrew.cmu.edu/user/jackiey/resources/CSG/CSG_report.pdf 奇怪的是,這些算法只是使用BReps爲他們的布爾值。所以我不明白CSG的優勢應該在哪裏,或者爲什麼CSG布爾應該更容易實現。構造實體幾何與邊界表示
2
A
回答
1
你以某種方式談論蘋果和梨。
CSG是一種通用的方法來描述基本元素的複雜實體,如果你想要的話,它是一個「算術」的實體。這個過程獨立於這些固體的確切表示。替代/互補建模技術的例子有自由表面生成,廣義柱面,代數方法...
BRep是基於頂點/邊/面圖結構的實體的可能表示之一。一些替代表示是空間佔用模型,例如體素和八分體。
通常,使用手頭的表示來評估CSG表達式;在某些情況下,原來的CSG樹就像這樣保留下來,在樹葉上留下基本的基元。
多面BRep模型在概念上很容易實現;無論如何,CSG表達評估是艱鉅的(多面體交叉引起不安的數值和拓撲問題)。
BRep的渲染需要對面進行三角測量,然後可以通過標準渲染管線進行處理。
體素模型既易於實現,又使得CSG表達式處理起來微不足道;另一方面它給出了形狀的粗略近似。
原始CSG樹可用於通過射線追蹤技術進行直接渲染:在通過射線遍歷所有基元后,可以使用CSG表達式組合射線部分。這種方法將相對簡單的實現與準確性相結合,代價是高昂的計算成本(所有內容都需要在圖像的每個像素以及每個視圖上重複)。
1
CSG模型僅代表應用於轉化後的原生質體的期望操作(聯合,交叉點等)。它並沒有真正修改原語(例如修剪立方體的角落)。你可以看到顯示在屏幕上的複雜模型的原因是因爲渲染引擎正在執行。顯示CSG模型時,通常有兩種方法:第一種方法是將其快速轉換爲Brep模型,第二種方法是使用CSG直接顯示算法,該算法通常基於scanline algorithmsim。所以,如果你已經有了一個很好的CSG渲染引擎,那麼你不必擔心修剪Brep模型,你的生活確實更容易。但是如果你必須自己編寫渲染引擎,那麼使用CSG就不會節省太多時間。
0
在我的意見CSG
在所有
- 不容易,但它更精確的曲線 的有沒有使用
- 圓柱體,球體...
- 而是有使用旋轉曲面南玻
操作
- 如果在同一個軸上旋轉曲面上執行(bool)操作
- 然後只需對曲線執行操作...(這是CSG比BRep更好的地方)
- 當軸不是同樣的,你必須在CSG樹中創建新的條目
- 也可以通過簡單地更新它們的大小來完成兼容對象上的操作(如盒子加入/切割具有相同的連接/相交表面)...
- 但大多數實現不會做這樣的事情,而是每個操作都存儲在樹
- 中,這會使得樹中的任何更改後渲染速度變慢
- 也渲染必須做所有的操作,而不是在它自己的操作,但在渲染或預渲染階段
- ,這使得CSG實現更復雜。
- 我在看到它唯一的好處是,該模型可以有分析表示
- 這是更準確,特別是如果多個操作是在它的上面......
相關問題
- 1. 如何在OpenGL/C++中創建構造實體幾何體
- 2. 定位邊界2D實體
- 3. 邊界表示數據結構
- 4. 創造邊界
- 5. 如何簡化造型中的邊界幾何圖形
- 6. 實現邊界表示建模
- 7. 查找平面圖(幾何形狀)的邊界(邊界)
- 8. 由構造函數設置用於表示C++數組邊界的「const變量」?
- 9. SVG構造區域幾何?
- 10. 邊界和實體之間的關係
- 11. 實體控制邊界和CEC模式
- 12. 邊界控制實體的名稱圖
- 13. 代碼中的控制邊界實體
- 14. 如何構造界面?
- 15. 如何在Symfony2中構造實體
- 16. 實體框架DBContexts如何構造?
- 17. 無邊界窗體邊緣
- 18. SQLEXPRESS:幾何中的邊界框
- 19. Symfony窗體和實體構造函數
- 20. 如何構造矩形邊界框的R樹(STR方法)?
- 21. 如何在構造邊界使用底圖readshapefile方法
- 22. 邊界類可以與實體類交互嗎?
- 23. 如何去構造與實體名稱的PHP陣列
- 24. 物體沒有與邊界碰撞
- 25. 如何解析邊界頂點的圖像?複雜的物體幾何(物理實體)
- 26. cocos2d與levelhelper的邊界滾動邊界
- 27. 如何避免身體標籤產生的邊界/邊界?
- 28. Windows屏幕邊界與雙顯示器
- 29. 如何使下拉菜單顯示在實體化卡片的邊界之外
- 30. 構造的學說實體驗證