2013-07-13 17 views
1

因爲我不想重新發明輪子,我正在尋找一個好的數據結構,可以幫助我使用3D渲染引擎的基本3D編輯器,我基本上在尋找一種數據結構,它能夠存儲這在我的情況下,僅限於必要的數據:體素數據/ openvdb結構如何工作?

  • 幾何
  • 局部和全局座標,或者也稱爲轉換
  • 材料或指向另一個結構保持真正的定義爲這個材料

現在,這是我的第一個3D渲染方法,但是我已經很好地瞭解了光柵化器如何工作,GPU如何處理三角形,點和線以生成圖像,我的問題是現在我沒有得到什麼這個新的「基於體素」的數據結構是,即使這個OpenVDB是適合我的或不是。

我認爲這個引擎的大部分「輸入」將來自obj-like文件,所以基本上是三角形和點,但我仍然不想錯過最新和最偉大的,所以我問,什麼是真正的OpenVDB和包含三角網格的通用數據結構之間的區別? OpenVDB可能的真實世界應用有哪些?

回答

6

如果您瞭解二維矢量和柵格藝術之間的差異,那就類似於三角形和三維像素之間的差異。矢量藝術使用線段和幾何來表示形狀,就像三角形表示3D中的網格一樣。或者,圖像使用排列在網格上的像素來表示形狀,就像使用體素來表示3D體積一樣。例如,球體可以表示爲網格,具有三角形或者作爲一組開/關體素在3D網格上,3D紋理現在可以存儲在GPU上,從而實現高效的光線投射,遍歷等等。它們對煙霧和流體尤其有用。

OpenVDB是基於CPU的,但擴展了單個3D卷,因此它是多分辨率的。許多較小的NxNxN卷被合併到一棵樹中,以製作更大,更大的音量。

您使用的表示形式很大程度上取決於您想要執行的3D編輯操作。你想建立樹木和有機物嗎?你想編輯和模擬流體?你想爲角色建模嗎?對於一個非常基本的,即介紹3D編輯器,我會建議三角形和網格,因爲它們無處不在,以及GPU管線是如何設計的。