2011-05-03 63 views
0


如何擠壓切割(如solidworks)3D模型?
有沒有簡單的方法,或者我需要做一些複雜的計算?OpenGl中的拉伸切割

回答

3

你想要做的是一個名爲構造實體幾何(CSG)的學科的一部分,它是關於3D圖形和處理最棘手的主題之一。有幾種方法如何解決這個問題:

  • 如果你是在光線跟蹤事情真正得到很容易使CSG只是感興趣的是:在每一個射線/表面相交你遞增/遞減計數器。 CSG組合也可以轉化爲表面計數。通過對射線交點計數器和CSG曲面數進行對比,您可以將CSG運算應用於所跟蹤的射線。如果您對在三角模型上進行CSG感興趣,最常見的方法是從幾何構建BSP樹並應用BSP上的CSG運營。然後從生成的BSP重新創建網格。這就是它在基於網格的建模器中的實現方式(看看Blender的源代碼,它確實是這樣)

  • 分析表面上的CSG非常困難。曲線或曲面的交點沒有封閉的解決方案。最好的方法是在交點處數字地找到許多采樣點,並沿交叉點擬合一條曲線。這可能會在數值上不穩定。 (這是我爲我的3D引擎實現(甚至可能發明)):在3D硬件上渲染曲線或曲面片時,通常必須在之前將它們鑲嵌到三角形網格中。在這個tesselation階段中,您可以測試新創建的三角形的邊與曲線/曲面相交;在牛頓過零點求解器中使用一些迭代來找到兩個曲線/曲面的交點,並將其作爲邊界上的採樣點存儲,以便兩個曲面相關(這樣其他曲面的曲面將共享其頂點的位置與第一個表面)。在第一個tesselation階段之後,在頂點上使用鬆弛方法(基本上應用拉普拉斯算子),同時將它們約束到表面(記住您的曲面是數學上精確的,並且很容易擺弄曲面的變量,但使用結果職位爲公制)。它工作得很好,只要用普通的三角網格沒有交叉點被認爲是(網格的每個三角形不得不變成一個曲面片,減緩方法)

您標記此OpenGL的,所以爲了得到這一點:OpenGL不能幫助你,因爲OpenGL只是畫三角形,而不是處理複雜的幾何圖形。

1

引用的OpenGl faq

什麼是OpenGL的?

OpenGL代表Open Graphics Library。它是一個用於執行3D 圖形的API。

更具體地說,它是一個API ,用於「在您的場景上繪製三角形」。在這個GPU時代,它是 是關於與GPU交談,使它 做圖紙的工作。它不處理文件格式 。它不是 開放的BMP,PNG和任何圖像格式。它 不能打開3d對象格式,如 obj,max,maya。它不會做 動畫。它不處理 鍵盤,鼠標和任何輸入設備。 它不創建窗口,所以 。

所有的東西應該由 外部庫來處理(GLUT是一個例子 ,其用於創建和銷燬 一個窗口和處理鼠標 和鍵盤)。

GL已經歷了多個 版本。

所以答案是否定的。像擠壓切割這樣的事情是複雜的操作。你必須自己實施它,使用第三方庫。

+0

謝謝你的回答,我的意思是有一些圖書館爲我做這件事? Glu可以做嗎? ... – mrbm 2011-05-03 11:07:36