3D 機器學習課程文件
行進立方體
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
行進立方體
行進立方體是一種將體素表示轉換為密集網格的演算法。

- 將空間劃分為體素: 將 3D 空間劃分為體素網格(立方體單元)。每個體素的大小決定了網格的解析度。
- 取樣八個頂點位置: 對於每個體素,取樣其八個頂點(角點)處的密度。根據密度確定每個頂點是在表面內部還是外部。
- 確定三角形配置: 每個體素有八個頂點,每個頂點有兩種可能狀態(內部或外部),從而產生 256 種可能的配置。每種配置對應一種特定的三角剖分模式。
讓我們更詳細地瞭解這些步驟。
1. 將空間劃分為體素
第一步是將 3D 空間劃分為體素網格。每個體素的大小將決定網格的解析度。
2. 取樣八個頂點位置
對於每個體素,演算法會取樣八個頂點的密度。根據密度,每個頂點被分類為表面內部或外部。
3. 確定三角形配置
每個體素的八個頂點可以有兩種可能狀態,從而產生 $2^8 = 256$ 種可能的配置。每種配置對應一種特定的三角剖分模式。

4. 生成網格
為了生成最終網格,演算法會“遍歷”每個體素並應用相應的三角形配置,因此得名“行進立方體”。

這個過程會產生一個密集、粗糙的網格,近似於體積的表面。
侷限性
雖然行進立方體網格對於視覺化很有用,但由於幾個限制因素,它們大多不適用於遊戲等生產場景。
- 多邊形數量: 高多邊形網格需要更多的計算量進行渲染,這會顯著影響即時應用程式的效能。
- 邊流: 糟糕的邊流會影響網格在動畫時的變形方式,導致摺痕和擠壓等不良偽影。
- 紋理: 密集且不規則的拓撲結構使 UV 對映和紋理化變得複雜,從而導致紋理偽影。

改進
像 FlexiCubes 這樣的技術透過允許網格頂點移動來解決一些限制,從而建立更平滑的表面。這種方法被 InstantMesh 使用,它是當前 領先的 開源 3D 管線。然而,由此產生的網格仍然過於密集,不適合生產。
實際應用
清理行進立方體輸出的拓撲結構通常比從頭建立網格需要更多的時間和精力。這給 3D 機器學習應用帶來了主要瓶頸。如前所述,高斯濺射提供瞭解決此瓶頸的潛在方案。
然而,最近出現了一些工作,直接解決了這個瓶頸,使用可微技術生成具有更高質量拓撲的低多邊形網格。這將在下一節中介紹。
< > 在 GitHub 上更新