天天看點

虛幻引擎自動替換CityEngine場景資産

作者:新缸中之腦

在這篇博文中,我們将學習将 ArcGIS CityEngine Datasmith 場景導入虛幻引擎後替換資産的流程。 替換工作流由虛幻引擎的資料資産(可以認為是簡單的表格資料)控制。 一旦設定正确,這些資料資産就可以在項目之間共享。

虛幻引擎自動替換CityEngine場景資産
推薦:使用 NSDT場景設計器 快速搭建 3D數字孿生場景。

1、從CityEngine到Unreal Engine

ArcGIS CityEngine 提供了強大的工具來程式化地建立詳細的建築物或大城市。 為了進一步處理或可視化,使用者通常需要将這些模型導出到第三方應用程式。

Unreal Engine 已成為建築可視化或建立互動式體驗的流行工具,但使用者在将場景從 ArcGIS CityEngine 導出到 Unreal 時通常面臨的問題是缺乏高品質的材料和網格。 幸運的是,虛幻引擎提供了幾個資源庫,例如 Quixel 或 Twinmotion Assets for Unreal Engine,它們可以在虛幻生态系統中免費使用。

為了幫助示範工作流程,我們建立了一個模闆項目,其中包含其他工具來協助替換,這将在本博文中詳細說明,是以你可以繼續操作。

我們還提供了一個現成的 ArcGIS CityEngine 和 Unreal Engine 示例項目,其中大量使用了這些替代品。 要打開 Unreal 項目,請確定已安裝 Twinmotion Content for Unreal Engine Plugin。

下載下傳連結:

  • Unreal 的 CityEngine 替換模闆項目 :可用作新項目模闆的替換項目
  • Unreal 的 CityEngine 替換插件 :可以內建到現有項目中的替換插件
  • 波士頓示例虛幻項目:需要安裝 Twinmotion Content for Unreal Engine 插件, 3.2 GB,最低系統要求:NVIDIA GeForce RTX 2060 顯示卡
  • 波士頓示例 CityEngine 項目:需要将最新的 Complete Street Rule 示例項目下載下傳到你的工作區

2、資産替換工作流

在本節中,我們将解釋如何在虛幻引擎中定義替換以及如何使用提供的模闆項目在你的場景中執行它們。

虛幻引擎自動替換CityEngine場景資産

首先,使用 Datasmith 導出器從 ArcGIS CityEngine 導出場景。 在 Unreal 中,我們可以使用 Dataprep 導入工作流程,或者在導入 Datasmith 場景後在關卡視口内應用替換。

通常,此工作流程是疊代的,這意味着我們可以多次執行替換,直到獲得所需的結果。

CityEngine生成的公園:

虛幻引擎自動替換CityEngine場景資産

導入Unreal Engine并替換為高品質材質後的同一個公園:

虛幻引擎自動替換CityEngine場景資産

3、從 ArcGIS CityEngine 導出

要從 ArcGIS CityEngine 導出我們的場景,我們使用 Datasmith 導出器。 根據用例,有多種選擇可供考慮。

虛幻引擎自動替換CityEngine場景資産
  • Global Offset:全局偏移。全局偏移應居中以避免由于可能的大坐标而導緻的精度誤差。
  • Mesh Merging:網格合并。對于小場景,這應該設定為 Per Initial Shape,對于大場景,應該設定為 Globally 或 Globally by Material。 通常每個初始形狀允許在 Unreal 中更好地處理,因為每個建築物都可以單獨修改。
  • Instancing:執行個體化。當使用許多執行個體時(例如,用于樹葉、草地或樹木),建議将此選項設定為使用執行個體化靜态網格物體 Actors。 這将在 Unreal 中使用經過優化的分層靜态網格元件,進而提高替換工作流期間的性能以及運作時的渲染性能。 注意:如果你使用的是 Visual Dataprep 工作流,則分層執行個體無法在預覽編輯器中正确呈現。

有關其他選項,請參閱 ArcGIS CityEngine Datasmith 導出器文檔。

提示:為了更容易在 Unreal 中配置替換,建議使用 material.name 屬性适當命名 CGA 材質,例如,通過調用 set (material.name, “Brick”)。 我們可以稍後在 Unreal 中引用這些名稱來替換材質。

4、虛幻引擎中的處理

在 Unreal 中,我們可以定義替換并在 Datasmith 場景中執行它們。

首先,我們需要確定我們的項目包含必要的工具。 如果我們想從一個新項目開始,我們可以使用适用于 Unreal 的 CityEngine 替換模闆項目。 或者對于進階用例,我們可以将适用于 Unreal 的 CityEngine 替換插件添加到現有項目,方法是将其複制到項目的插件檔案夾。

5、定義替換

替換工作流程由 Unreal Data Assets 控制。 我們的模闆項目提供了兩種特殊類型的資料資産。 MeshReplacement 類型定義如何替換 StaticMesh 執行個體,而 MaterialReplacement 類型定義如何替換網格上的材質。

在定義替換之前,需要在内容浏覽器中建立這些資産,方法是右鍵單擊然後選擇雜項 → 資料資産,然後選擇網格替換或材質替換。

現在可以添加替換項并使用資料進行設定。 設定必要資料的方法有兩種:在資料資産編輯器中手動輸入,或者在導入 Datasmith 場景後将它們添加到場景視圖上下文菜單中。

6、手動添加替換

要手動添加替換資料,請單擊替換旁邊的加号,這将向資料資産添加一個新條目。

虛幻引擎自動替換CityEngine場景資産

MaterialReplacement 資料資産可以通過比對材料名稱(材料名稱比對器)或按材料使用的名稱(紋理名稱比對器)查找特定紋理來替換材料。

虛幻引擎自動替換CityEngine場景資産

MeshReplacement 資料資産通過比對它們的名稱來替換 StaticMeshes。 我們可以添加幾個替換選項。 如果添加了多個選項,則按照定義的比例進行替換 — 如果添加兩個替換,比例為1和2,則第一個被選中的機率為1/3,第二個被選中的機率為2/3。

比對類型提供了幾個選項:

  • Starts With:檢查搜尋選項是否以給定文本開頭
  • Equals:檢查搜尋選項是否與給定文本完全比對
  • Contains:檢查搜尋選項是否包含給定的文本
  • Regex:将搜尋選項與給定的正規表達式模式相比對的進階用例

請注意,所有比對選項都區分大小寫。

進階用例:可以通過建立從基礎 StaticMeshMatcher 或 MaterialMatcher 類擴充的藍圖來添加自定義 Material 或 StaticMesh 比對器。

7、在視口中添加替換

我們還可以通過右鍵單擊視口中的 Actor 并在上下文菜單中選擇替換材質或替換網格來添加替換 — 這隻能在關卡編輯器視口中使用,而不能在 Dataprep 預覽視口中使用。

選擇“替換材質”将打開一個對話框,允許你替換視口中標明的材質,同樣通過選擇“替換網格”,将打開一個對話框以替換目前標明的網格。 現在我們需要選擇一個要添加替換的目标資料資産,我們也可以直接執行替換。

虛幻引擎自動替換CityEngine場景資産

8、執行替換

模闆項目提供兩種執行替換的方法:使用 Visual Dataprep 編輯器或在 Datasmith 導入後在關卡視口中執行替換。 這兩種工作流程各有優勢,将在以下部分進行說明。

9、Visual Dataprep工作流程

Visual Dataprep 允許我們在 Datasmith 導入期間自動執行操作。 模闆項目增加了兩種新的動作類型,用于替換資産和材料。 Replace Meshes 和 Replace Materials Actions 都采用它們各自的資料資産(如上所述)。

如果将其他 Dataprep 操作組合到一個工作流中,Visual Dataprep 工作流尤其有用。

虛幻引擎自動替換CityEngine場景資産

首先,我們需要通過在内容浏覽器中右鍵單擊并選擇 Dataprep → Dataprep Asset 建立一個新的 Dataprep 資産,然後打開該資産。

然後我們可以将 ArcGIS CityEngine 的 Datasmith 導出作為輸入添加到 Dataprep 編輯器。 按右上角的加号,選擇你的 Datasmith 檔案,然後按導入。

之後,我們可以添加要應用于導入場景的動作。 通常,我們為我們在項目中定義的每個替換資料表添加一個操作。

然後我們可以執行 Dataprep 管道。 該步驟可以根據需要重複多次,以實作所需的替換。

最後,我們送出管道,這會将場景添加到我們的關卡中。

注意:Dataprep 編輯器無法正确處理分層執行個體,是以如果你要導入包含許多執行個體的大型場景,建議使用下一節中介紹的正常 Datasmith 導入工作流程。

10、Datasmith 導入替換工作流程

Datasmith 導入工作流程的工作方式類似。

首先,我們通過單擊 Datasmith → 檔案導入将我們的 Datasmith 場景導入目前關卡。 與之前解釋的 Visual Dataprep 工作流程不同,在關卡視口中正常的 Datasmith 導入和執行替換也能夠正确處理 Hierarachical 執行個體,這使其成為大型場景的首選。

導入 Datasmith 場景後,右鍵單擊 Outliner 中的 DatasmithSceneActor,這将在 CityEngine 部分打開包含新條目的上下文菜單。

虛幻引擎自動替換CityEngine場景資産
  • Execute Replacements:執行替換。這将打開對話框以執行網格和材料替換。 替換資料資産可以添加到它們各自的清單中,我們也可以在執行替換之前恢複 Datasmith 場景。
  • Reload DataSmith Scene:重新加載 Datasmith 場景。這将重新加載源 Datasmith 場景,進而撤消場景中執行的所有替換。
  • Merge Instances:這會将所有執行個體化的 StaticMesh Actors 合并到分層執行個體化的 StaticMesh Actors 中,如果場景是使用執行個體化選項 Use Instanced Meshes 導出的,這将很有用。

我們現在可以點選Eexcute Replacements,這将打開一個對話框,我們可以在其中配置我們要執行的替換,方法是将它們添加到各自的清單中。 Restore Datasmith Scene Before Execution 也應設定為 true 以在原始場景上應用替換。

以下視訊示範了 Boston Example Unreal Project 中的整個工作流程:

虛幻引擎自動替換CityEngine場景資産

現在一切都已配置,你可以根據需要重複多次,直到場景變得完美!

原文連結:http://www.bimant.com/blog/cityengine-unreal-asset-replacements/

繼續閱讀