當前位置: 華文世界 > 數碼

VR套用3D模型最佳化的10個最佳實踐

2024-03-12數碼

NSDT工具推薦: Three.js AI紋理開發包 - YOLO合成數據生成器 - GLTF/GLB線上編輯 - 3D模型格式線上轉換 - 可編程3D場景編輯器 - REVIT匯出3D模型外掛程式 - 3D模型語意搜尋引擎 - Three.js虛擬軸心開發包

對於許多在建模、渲染和動畫方面經驗豐富的 3D 建模者來說,3D 最佳化可能是一個令人畏懼的過程 - 特別是當你正在最佳化即時應用程式的 3D 模型時! 在 Google 上快速搜尋「如何最佳化 3D 檔」將會出現一些建議,例如減少多邊形數和消除多余的頂點。

然而,針對即時應用程式最佳化 3D 檔存在許多細微差別,這些細微差別可能會讓 3D 建模者感到不知所措。 無論你是在最佳化 Sketchup 或 Revit 建築檔,還是在 Solidworks 中建立的工程模型,都需要牢記一些要點,在最佳化 VR 3D 模型時,我們將這些要點匯總到了最佳實踐列表中。

1、例項化重復零件

想象一下重新處理相同的 3D 網格一百次。 聽起來像是浪費資源,對吧? 這正是遊戲引擎處理檔中重復網格時發生的情況。 無論你的模型是由數千個螺栓組成,還是多次包含相同的門模型,在渲染你的設計時,這些重復的零件都會重復處理。

虛幻引擎中的 3D 模型顯示了各種重復的零件

你可以例項化重復項並建立它們的複制,而不是處理相同的重復項並使用器材上的其他資源。 現在,當你編輯或渲染模型時,所有例項都會立即收到更新並更有效地進行處理。 速度和效率是在 VR 中實作最佳化的即時視覺化的兩個關鍵要求。

2、修正重疊或隱藏的部份

遺失或隱藏零件是由多名設計師處理同一專案的 3D 團隊中的常見問題。 例如,在設計過程中,使用者可能會隱藏某個部件而不是將其從專案中刪除,而下一個使用者匯出檔時並不知道存在隱藏的部件或圖層。 該問題也可能是由於轉換過程中的錯誤造成的。 如果一個零件太復雜,它可能會意外地被轉換兩次。 無論哪種方式,隱藏的部份都會消耗額外的資源,從而損害 CPU 的處理能力。

最好檢查並找到隱藏部份並將其刪除,以避免即時視覺化中不必要的延遲。

影像顯示重疊的彈簧

3、減少面數

移動 VR 耳機具有標準 FPS,你需要保持在該標準內,以避免出現滯後問題和暈動病。 這通常在 60 到 90 FPS 之間。 詳細且高多邊形的 3D 模型是 FPS 緩慢的主要原因。 減少面數可以降低模型的復雜性,從而:

  • 遊戲引擎渲染速度更快,即時效能提高
  • 3D 建模者可以更輕松地編輯網格、紋理和 UV 展開它。
  • 對於 Autodesk Maya 使用者來說,新的 2020 版本配備了新的重新網格和重新拓撲工具,使用者可以控制修改設定。 對於需要簡化的單個零件,Maya 的工具提供了一個很好的解決方案。

    4、套用 LOD

    當 3D 模型遠離相機時,套用細節級別 (LOD) 可降低 3D 模型的復雜性,從而消除多余的細節。 套用 LOD 會刪除網格特征,例如開口、間隙、凹凸、透明度等。 當網格靠近相機時,LOD 會渲染出所有所需的細節。 但當網格遠離相機時,網格會與自身質素較低的版本進行交換,從而解除安裝來自 CPU 或 GPU 的渲染請求。

    套用 LOD 時要記住的另一個因素是體積分辨率。 在視覺化中不重要的較小物件不需要與較大物件一樣高的分辨率。 例如,在為食品制造廠建立視覺化時,模型的較大部件(例如傳送帶和機械臂)可以具有更詳細的分辨率,而機械不同部件上的螺栓和螺釘可以采用低得多的 LOD。

    Autodesk Maya 的全新重新拓撲工具和全新虛幻引擎 LOD 生成器可幫助 3D 開發人員達到最佳 FPS。

    5、減少材質數量

    3D 模型中的材質過多會增加檔大小和復雜性,使其難以在即時遊戲引擎中使用。 保留盡可能少的材料對於即時最佳化 3D 模型非常重要。 另一個好的做法是使用純色而不是影像紋理,因為它們更容易渲染。

    生成 LOD 時,你會建立較低分辨率的多邊形網格,並以較低的分辨率建立材質 LOD 副本。 建立材質 LOD 後,最好檢查 LOD 材質是否具有任何金屬、透明度或不透明內容。 如果存在,則可以將其刪除,因為你不太可能在渲染中看到任何這些功能。

    6、生成新的法線

    基於物理的渲染(PBR)是改進即時視覺化的重要一步。 PBR 使用一些可快速計算的參數來近似材料的最佳內容(參考)。 為了生成 PBR 的準確結果,3D 引擎在方程式中使用多邊形法線。 因此,CAD 轉換後生成準確的法線對於最終結果至關重要。 反射、漫射、透明度、粗糙度和金屬度在很大程度上依賴於法線。

    在多邊形網格轉換期間,法線可能會被錯誤地面對。 渲染模型時,倒置的面會建立不正確的著色器。 為了避免這種情況,3D 建模者必須手動確保所有面都朝向正確的方向,就像在遊戲引擎中渲染之前的 Maya 一樣。

    反轉法線會在渲染中產生陰影

    7、整理大綱

    大綱是模型的支柱。 它組織 3D 檔中的每個零件或節點,以及在你需要移動或操作場景中的組或單個網格時連線零件和父級。 淩亂的大綱不僅會使模型難以使用,還會在匯入或保存過程中引起問題。

    在將 CAD 轉換為多邊形網格的過程中,在許多情況下,所有網格的位置、旋轉和比例都會轉換為單獨的父級。 這意味著網格將具有多個父節點,每個父節點都包含上述內容之一。 這種多重父問題會產生大量無用的數據集,通常會導致軟件崩潰。

    為了部份解決這個問題,Autodesk Maya 和其他軟件包提供了凍結變換工具,該工具可以重設網格變換,從而消除上述的父依賴性。 現在可以安全地刪除這些空父節點,而無需移動、旋轉或重新縮放網格。 但問題是,將凍結變換工具套用於大檔中的所有網格可能會導致崩潰。 此外,手動刪除所有網格的空父節點也是一個繁瑣的過程。

    右:最佳化前的大綱。 左:最佳化後的大綱

    除了凍結和刪除多個父節點之外,匯總工具還可以刪除空節點。 一些空節點攜帶對視覺化無用但占用空間的後設資料,例如歷史記錄、零件 SKU、制造資訊等。刪除這些空節點是減少不必要的數據復雜性的簡單方法。

    8、合並相鄰網格

    正如上一節所討論的,最小化的大綱對於 VR 開發的最佳化工作流程至關重要。 實作此目的的另一種有效方法是組合相鄰網格。 例如,將五個螺釘組合成一個網格 - 因此在大綱檢視中它顯示為一個節點而不是五個。 組合零件將有助於使大綱檢視更易於管理,並使零件選擇和操作方式更加高效。

    組合網格還可以減少對 CPU 和 GPU 的處理繪制呼叫的數量。 例如,當你組合了五個螺絲時,渲染時將只有一個繪制呼叫,而不是五個繪制呼叫。 這有效地幫助提高你的 FPS。 最後要註意的一件事是,組合網格後,UV 殼將全部移動到一個新的 UV 集,該集與殼重疊。 開啟 UV 編輯器來組織 UV 布局。

    9、重新拓撲模型

    重新拓撲是透過更最佳化的幾何形狀改善網格邊緣流的過程。 這一步尤其重要,你需要將面數從數百萬減少到數百。 但是,如果你在不先生成 LOD 的情況下開始套用重新拓撲工具,則重新拓撲可能會導致不正確的邊流出現錯誤。 確保首先使用 LOD 生成器或 Autodesk Maya 的「減少網格」工具來減少面數。 較少的面數有助於軟件最大限度地減少 CPU 使用率並加快重新網格劃分過程和準確性。

    10、刪除不必要的物體

    刪除視覺化中不需要的部份是即時最佳化 3D 模型的另一種好方法。 這包括額外的節點、網格、材質和紋理,這些都會增加檔大小並使您的專案難以即時渲染。 例如,在汽車模型的視覺化中,移除大量內部零件(例如螺釘或電線)將顯著降低檔的復雜性和大小,從而使其更適合即時視覺化。 移除螺釘等結構部件不會影響模型的完整性,因為機械和物理內容不適用於遊戲引擎。

    11、最佳化 VR 3D 檔,最終想法

    我們希望本指南在你最佳化 VR 視覺化專案的 3D 模型時有所幫助。 正如你所看到的,在最佳化 VR 3D 檔時需要考慮許多小細節。 隨著 3D 檔變得越來越復雜,良好最佳化的好處變得更加明顯。

    原文連結:http://www.bimant.com/blog/10-best-pratices-when-optimizing-3d-files-for-vr/