2014-01-23 47 views
5

我想知道在OpenGL中用於渲染複雜曲面的技術,這些復​​雜曲面不能用數學公式(如汽車)表示。我們是通過結合如此多的基本元素(球體,錐體......)來創造它嗎?或者還有其他一些方法? 我即將開始創建一個應用程序,該應用程序將呈現3D汽車並想知道從哪裏開始。在OpenGL中繪製複雜曲面

+0

您可以使用粗略近似表面的多邊形網格。然而,就創造/建模而言,可以通過使用諸如球體,錐體,盒子等基本元素來執行集合操作來完成。這將是被稱爲[構造實體幾何](http:// en。 wikipedia.org/wiki/Constructive_solid_geometry),結果通常會轉換爲三角形網格,以便進行高效的實時渲染。 –

+0

我建議你看看[實體建模](http://en.wikipedia.org/wiki/Solid_modeling),以獲取所有可用方法的更詳細概述。請注意,傳統上,GPU的設計目標是快速繪製三角形,因此通常無論最初如何創建模型,模型都會變得模樣。 –

回答

4

您可以使用第三方工具(如Blender)創建可以導出並在OpenGL中渲染的模型。這些模型通常由三角形組成,但是用3D工具繪製,類似於2D的筆和紙。

這裏是關於主題的教程:OpenGL Model Tutorial

2

是,OpenGL的通過拉伸許多基本元件產生的圖像(稱爲「原語」)。

最常用的基元是三角形和四邊形(或「四邊形」,通常實現爲兩個三角形)。 (也有關於繪製線條和點基元的規定,但這些通常不用於繪製逼真的表面。)

複雜曲面近似爲三角形或四邊形網格。通常通過使用深度圖來完成隱藏表面移除:靠近相機繪製的基元以每個像素爲基礎禁止並覆蓋更遠的基元。

爲了減少生成良好圖像所需的曲面細分級別,OpenGL支持在三角形(和四邊形)角之間插入一個(虛構的)切平面。這種便宜的近似稱爲「陰影法線」,實際上消除了多面的外觀,否則該多面的外觀會損壞與適量的基元近似的連續表面。

1

從頭開始設計你的對象是非常困難的。 OpenGL是多邊形渲染機器。 Usualy對象由三維位置的verteces和它們如何連接的索引來表示obj file。你可以找到一些代表汽車的obj文件或者其他東西來渲染它。另外還有一種使用補丁設計複雜模型的方法。修補程序用於CAD程序,以更好地控制patches型號。爲了製作更復雜的模型,你需要將許多補丁連在一起。