The Visual Engine

本篇文章、圖片出處來自 The Visual Engine
軟體版本與本翻譯文件可能會有落差,本翻譯文件僅供參考。
本譯文為本站譯者原創翻譯內容,文字著作權歸本站所有。
未經授權,請勿任意轉載、改作或商業使用。

關於升級

如果你是第一次接觸 Visual Engine,目前這個資產是 Vegetation Engine 的後繼版本。Vegetation Engine 在 5 年前推出,這些年來累積超過 80 次免費的大型更新。由於舊版設計較早期,當資產本體與模組逐漸擴張後,就更難維護並加入新功能。Visual Engine 是全新產品,完全重新設計,目標是更容易擴充、更強大、更好用,同時也解決了舊版的許多問題。以下是新版相較於舊版的重點改進:

  • 不再需要 Volume 工作流程!
    這些元素現在會根據場景相機或遊戲相機的位置,自動以 兩個 cascade(級距) 進行渲染:近距離用高解析度、遠距離用較低解析度。
  • 不再需要自訂網格(Custom Mesh)!
    任何網格都可以使用並可在任意 DCC 軟體中製作;你可以在材質上為每個效果選擇對應的遮罩(mask)。網格也能輸出為 .fbx 並依需求修改。
  • 不再使用昂貴的 Shader!
    Shader 現在用 keywords 控制所有效果,你可以把不需要的功能關掉以節省效能。
  • 不再是封閉式 Shader!
    Shader 以 Amplify 的「blocks」方式建構,而不是單一巨大的基底函式。每個 Shader 效果都是獨立單元,可被修改或擴充,讓你更容易替換或加入自訂 block。
  • 不再需要猜設定!
    所有管理器與 Shader 屬性都更明確,所有功能也各自分在獨立分類中,讓你更容易針對每個功能單獨調整。
  • 不再受那麼多限制!
    當然「完全沒限制」不存在,但你現在可以做到更多,例如:
    - 所有貼圖都能使用 planar/triplanar/stochastic
    - 掃描(scan)與苔蘚(moss)可用 2 層 detail layer
    - detail layer 可用自訂貼圖遮罩
    - overlay 可加入雪貼圖與亮粉(glitter)
    - 濕潤效果可加入動態雨滴
    - glow 元素可驅動自發光(emissive)顏色
    - atmo 元素可增加乾燥感
    - 天氣效果可在局部套用、可使用多重遮罩
    - motion flow 元素可驅動風的流向與速度
    - 重新計算法線以支援動態時仍有精準的鏡面高光
    - motion 可用程序式遮罩(procedural masks)
    - 還有更多功能

    另外也新增了 Simple Lit Shader(用於 core、blanket、terrain shader),再加上你原本熟悉的所有其他效果。

由於新增功能很多、且需要重新設計整套系統與 Shader,Visual Engine 的價格提高到 120 美元(相較於 Vegetation Engine 的 90 美元),或是既有使用者可用 30 美元的升級費用(沒有時間限制)。基本上,不管你何時購買舊資產,新版都會對所有使用者多收 30 美元!你擁有的所有模組都可以免費升級

Shader 比較

為了更清楚說明 Shader 有哪些改進,這裡用一個簡單例子:以「Overlay」效果作為雪或沙層。 左側是 Vegetation Engine:可調整的控制項有限、沒有貼圖、也沒有完善的遮罩(注意只提供 3 個設定)。 右側是 Visual Engine:支援貼圖、planar/triplanar/stochastic 貼圖映射、glitter 效果、進階遮罩控制,而且效能會依照啟用的功能自動調整!

Shader 功能特色

不只是 Overlay 效果更進階。所有 Shader 功能都重新設計,提供更細的控制與更好的效能。 每個效果都比照 Overlay 的方式處理:新增對貼圖的支援、triplanar 與 stochastic 映射、進階遮罩, 並支援使用全域數值與全域元素,在局部區域控制該功能。 Shader 現在也新增了方便的搜尋列,並會用顏色指示哪些功能已啟用!

Shader Blocks

如果你喜歡研究 Shader,Visual Engine 完整支援 Amplify Shader Editor。 若你以前在 Vegetation Engine 裡做過自訂 Shader,你應該還記得舊版採用的是「單體式(monolithic)」函式: 幾乎沒有延展性,除非你自己維護一套基底函式。 到了 Visual Engine,每個功能都是獨立的 block,你可以很容易直接擴充現有 block, 或建立自己的 block 來做出自訂效果!

效能(Performance)

如同前面所示,Visual Engine 的所有功能現在都比以前更複雜、更進階。不只是 Shader 更複雜, 全域管理器(global manager)也會把元素渲染兩次:讓近距離能以高品質渲染, 同時也能在遠距離以較低品質支援顯示。 這些變更可能帶來效能下降(取決於你使用了哪些功能),但當你停用不需要的功能時,也可能帶來效能提升! 在 Vegetation Engine 中,所有功能預設都是啟用狀態,即使某些功能沒有使用,也仍然會被計算; 這讓它更難擴充與調整,除非你在 Amplify Shader Editor 重新編譯自訂 Shader!

接著來看 Diorama 示範場景的一些數據:在編輯器中以 2K 解析度(2560x1440)擷取, 使用 Universal Render Pipeline,Unity 6 Preview 的預設設定。 請注意:Vegetation Engine 的效能不會因為使用了哪些功能而變動(維持固定), 但 Visual Engine 在停用各種未使用功能後,效能會提升:

  • Image 01:Vegetation Engine(含 Seasons)
    Simple Tinting / Simple Overlay / Simple Wetness / Simple Cutout / Size Fade / Motion and Interaction
  • Image 02:Visual Engine(含 Seasons)
    Advanced Tinting / Advanced Overlay with Textures and Glitter / Advanced Wetness with Puddles and Rain Drops / Advanced Cutout / Size Fade / Motion and Interaction
  • Image 03:Vegetation Engine(不含 Seasons)
    Simple Tinting / Simple Overlay / Simple Wetness / Simple Cutout / Size Fade / Motion and Interaction
  • Image 04:Visual Engine(不含 Seasons)
    No Tinting / No Overlay / No Wetness / No Cutout / No Size Fade / Motion and Interaction

升級注意事項(Upgrade Notes)

升級步驟(Upgrading Steps)

  • Visual Engine 是全新資產,對 Vegetation Engine 的功能與多個面向做了全面重新設計,因此有些部分無法自動升級。 請先備份你的專案
  • 匯入新版之前,請先刪除所有與 TVE 相關的資料夾
  • 匯入新的套件與模組,並在全部匯入完成後使用 Material Upgrader(它會在匯入完成後自動開啟)!

重大變更(Breaking Changes)

  • 所有腳本、Shader 與元素都已重新命名。若你的程式是用「名稱」方式做引用,你的腳本需要調整。
  • 所有 Global Manager 元件現在已合併成單一 Manager,集中管理所有設定,並且會重置為預設值
  • 所有材質都會升級到新版,但可能需要做些小調整!所有自訂編譯(custom-compiled)的 Shader 也會切換到新的 Shader。
  • 舊的風力參數將不再像以前一樣運作,因為整套風力系統已更動!
  • Mobile 與 Polygonal Shader 不再提供;新增了 Simple Lit Shader,並加入 core 套件與模組!
  • Legacy Terrain Details 與 Vertex Lit Shader 不再提供!

已知問題(Known Issues)

  • 由於 Unity 的 bug,在編輯器進行 Shader 編譯時,Shader 會在 Console 大量輸出 TEMP_ALLOC 警告! 此問題會在啟用 Project Settings > Editor > Async Shader Compilation 時發生。
  • 在 URP 中使用時,Simple Lit Shader 會固定以 Forward / Forward+ 渲染路徑進行渲染。

開始使用(GET STARTED)

學習資源(LEARNING RESOURCES)

歡迎!請注意,Visual Engine 是全新資產,對 Vegetation Engine 的功能做了全面重新設計, 而文件中的許多面向目前尚未更新。雖然功能相似,但名稱可能不同! 如果你有任何問題或疑問,或想討論更多關於此工具的進階主題,歡迎在 Discord 上聯繫!

文件將提供以下類別的教學:

  • 入門教學(Get Started Tutorials):開始使用 Visual Engine 系統的教學
  • 一般工作流程(General Workflows):涵蓋 Visual Engine 較小部分的短教學與技巧
  • 元素工作流程(Element Workflows):涵蓋元素細節工作流程的短教學與技巧
  • 模組工作流程(Module Workflows):涵蓋 TVE 模組的短教學與技巧
  • 腳本範例(Scripting Examples):用於存取全域參數與元素的短腳本範例
  • 第三方整合(3rd Party Integration):各種整合教學或下載內容

影片教學(VIDEO TUTORIALS)

  • 入門影片教學(Get Started Video Tutorial)
  • 收集轉換後資料(Collect Converted Data)
  • 森林著色變化(Forest Tinting Variation)
  • 直升機互動(Helicopter Interaction)
  • 草地動態(Grass Motion)
  • 風湍流(Wind Turbulence)
  • 動態互動(Motion Interaction)
  • 依地形高度的 Overlay(Overlay by Terrain Height)

模組影片教學(VIDEO TUTORIALS FOR MODULES)

請注意,模組為 Visual Engine 提供額外功能,並且在 Unity Asset Store 上分開販售

  • Terrain Shaders Module|Setup And Seasons
  • Terrain Balnket Module|Blanket Conforming To Terrain
  • Terrain Blanket Module|Blanket Mesh Dissapearing
  • HTrace World Space GI Integration

安裝與管理器(INSTALLATION AND MANAGER)

歡迎!快速入門教學會涵蓋 Visual Engine 的基礎內容。 若要更深入的工作流程與技巧,請查看文件!

匯入資產後,Shader 的渲染管線支援會依照你專案目前使用的管線自動安裝。 如果目前的 Unity 版本不被支援,會跳出警告視窗! 當渲染管線支援安裝完成,或當你升級到新的 Visual Engine 版本時,會出現 Material Upgrader 視窗。 Material Upgrader 會檢查專案內所有材質,並在需要時將它們升級。 若你有使用模組,建議等所有模組都安裝完成後再執行 Material Upgrader,以避免每安裝一個模組就要重跑一次!

安裝完成後,請到 BOXOPHOBIC > The Visual Engine > Learn 資料夾開啟 Learn 場景。 接著你需要把 Visual Engine Manager 設到場景中:在 Hierarchy 視窗按右鍵 > BOXOPHOBIC > The Visual Engine > Manager, 或是在你開始轉換 Prefab(見下方)時透過 Asset Converter 來建立。 Manager 會保存 Shader 與系統運作所需的所有全域設定。

轉換資產(CONVERTING THE ASSETS)

雖然你可以透過逐一替每個材質更換 Shader 來手動轉換資產,但 Visual Engine 提供了一鍵式、非破壞性的解決方案, 能把網格(meshes)、材質(materials)與貼圖(textures)轉換成統一格式。 Asset Converter 可以一次處理多個資產:它會轉換你選取的 Prefab,並保留備份,方便你之後還原或再次轉換。 請注意,轉換後的材質可能無法與原始材質 1:1 完全一致

要開啟轉換器,請到:Window > BOXOPHOBIC > The Visual Engine > Asset Converter。 在轉換 Prefab 時,轉換器會在與 Prefab 相同的資料夾位置建立一個名為 Prefabs Data 的新資料夾, 並在其中產生新的 meshes、materials、textures,以及 Prefab 備份。 轉換器也支援 Sharing Common Materials:若多個 Prefab 之間使用相同材質,就可以共用材質。

資產轉換是依照「轉換預設(conversion presets,簡單的文字檔)」來執行的。 套件預設只附帶少量 presets。請按下 Download All Conversion Presets 按鈕, 以取得 Unity Asset Store 上第三方資產所用的 presets。

轉換樹木(CONVERTING THE TREE)

在轉換器開啟後,選取 Tree(用 TreeIt 製作) 的 Prefab。 轉換器會以藍色顯示被選取的 Prefab,並偵測這棵樹是用 Tree It 工具製作, 因此會自動選取正確的 preset;但你仍需要手動選擇 Conversion Option(Prefab 類型)。 多數 Asset Store 的 presets 都支援自動偵測! 如果你用錯 preset 或 option 轉換了,也可以改選正確的 preset/option,再按一次 Convert。 在重新轉換時,你可以選擇 Keep the Converted Materials(保留已轉換的材質),或是 Replace them(以套用新轉換選項的結果取代)。

按下 Convert 按鈕後,幾秒內這棵樹就會轉換成 Visual Engine 的 Shader,Prefab 會以黃色顯示。 若你查看新建立的材質,樹皮會套用 General Standard Lit Shader; 樹葉則會套用 General Subsurface Lit(含進階光散射)Shader。

接著可以探索材質參數!在樹葉材質上,先降低 Subsurface Intensity, 再把 Main Color 模式設為 Dual Colors,並調整 Main ColorA, 讓它只影響樹葉顏色。最後調整 Main Multi Mask 的滑桿, 重新對應(remap)儲存在 mask map 藍色通道的樹葉遮罩。

轉換草(CONVERTING THE GRASS)

在轉換器開啟後,選取所有 Grass(來源不明) 的 Prefab。 若同一個 Prefab 的多個實例(instance)被重複選取,轉換器在專案中只會顯示該 Prefab 的根物件(prefab root)! 如果某個 Asset Store 資產沒有對應的 preset,你可以改用 Automatic presets 試看看。 若原本的 Shader 來自 Unity,或其內部屬性與 Unity 的 Shader 類似,貼圖通常可以正確轉移,但仍可能需要額外調整!

選擇 Automatic > Grass 的 preset 後進行轉換。 依你選擇的 option,轉換器會替網格指派不同的風力遮罩(wind masks),以符合所選的 Prefab 類型。 草的網格通常在法線朝上時會更好看,尤其是風格化草。 你可以選擇 Normals > Make the Normals Flat (Full) 這個 override 來改變法線的轉換方式。 override 是一種很好的方式,用來修改或替既有 preset 增加功能;而且 override 可以設為 Global(鎖頭圖示), 如此每次開啟轉換器時會自動套用。 接著再轉換一次,並選擇保留已轉換的材質(keep the converted materials)。

選取草的材質,把 Render Normals 設為 Same, 讓正面與背面都以同樣方式受光,接著降低 Main Alpha 讓草看起來更厚實。 再把 Occlusion Intensity 設為 1, 並將 ColorB 設為較深的顏色,為底部增加遮蔽感(occlusion), 讓草看起來更「貼地」、更有重量感。

轉換岩石(CONVERTING THE ROCKS)

岩石材質預設會指定 Albedo 與 Normal 貼圖;而 AO、Smoothness、Height 這些遮罩, 會依你使用的渲染管線不同,可能是分開貼圖,也可能被打包(packed)在同一張貼圖中。 請使用 Automatic > Props 的 preset 來轉換岩石 Prefab。 轉換後會套用 General Standard Lit Shader,並且會將 Shader Map 打包, 以減少 Shader 使用的貼圖數量。更多細節請查看文件中的 Material Texture Anatomy

接著來加一點「由上往下投影」的苔蘚!把 Layer Intensity 設為 1, 並將內附的 Moss 貼圖指定到正確的欄位。 Layer 功能可以讓你新增一層貼圖,用於苔蘚混合或其他特殊效果。 再依你的喜好調整顏色、法線強度與光滑度(smoothness)。

Layer pass 會使用多種遮罩組合,以對應不同用途。要啟用由上往下投影,請把 Layer ProjY Mask 的滑桿設為 1,並用 remap 滑桿調整投影遮罩。 把 Layer Shader map 或 noise map 指定為 Layer Mask map, 再調整 Layer TexB Mask 的滑桿,使用儲存在貼圖 藍色通道的遮罩來增加額外細節。 Luma Mask 是一個簡單方式:用 Albedo 的亮度(luminosity)當作遮罩來加細節。 Mesh Mask 設定可用於頂點繪製(vertex painting),在特定頂點上遮掉或增加混合效果。 最後,使用 Layer Blend Remap 的滑桿來重新對應整體混合遮罩! 若要反轉遮罩,請在 Remap 下拉選單中選擇 Invert

轉換桶子(不支援)(CONVERTING THE BARREL (NOT SUPPORTED))

當你嘗試轉換桶子時,第一個會注意到的是 Convert 按鈕被停用, 因為轉換器只能處理 Prefab,而桶子目前只是 Model。 要把它變成 Prefab,只要把它拖曳到 Project 視窗即可。 同樣的動作也適用於 SpeedTreeTree Creator 的資產!

如果你查看桶子的材質,它和許多 Asset Store 的材質一樣,使用的是自訂 Shader。 由於沒有它專用的 preset,你可以先試試 Automatic > Props 的 preset 來轉換。 結果會很「驚喜」:著色壞掉了。 因為該 Shader 使用了比較不常見的貼圖命名方式,這個 preset 沒有設定好要把那些貼圖轉移到 Visual Engine 的材質中。 你必須手動重新指定缺少的貼圖,並把主要的 MetallicSmoothness 設為 1

手動設定整個資產非常耗時!更好的自動化方式當然是使用 presets。 Preset 是簡單的文字檔,任何文字編輯器都能編輯,而且提供完整的 API:可用來轉換網格與材質、打包貼圖、設定貼圖格式、 切換 Shader、或修改儲存路徑。 請改用 Utility > Template 的 preset 再轉換一次桶子,這次所有貼圖就會被複製過來。 若要建立自己的 preset,請到 Core > Presets > Converter 資料夾中, 複製 [PRESET] Utility - Template 檔案。 打開 preset 之後,你會看到材質貼圖與屬性如何被複製或設定,以及貼圖如何被打包的範例。 完整的 presets API 可以在 Presets 章節中找到。

多材質編輯(MULTI-MATERIAL EDITING)

當你要調整帶有 LOD 或 Motion Setting 的 Prefab 材質時,你需要確保不同材質之間的參數一致。 若要一次替多個 Prefab 或多個材質套用相同設定,請到 Window > BOXOPHOBIC > The Visual Engine > Material Manager 開啟材質管理器。

Material Manager 會顯示「被選取的 Prefab 內包含的所有材質」,或「專案中被選取的材質」。 你也可以在這裡切換該材質是否允許被 Material Manager 覆寫(overridable)。 若要避免某一個屬性被 Material Manager 影響,在 Unity 2022.3 LTS 或更高版本中, 你可以把材質屬性鎖定(lock)。 如果不同材質之間的屬性值不一致,管理器會在那些屬性上顯示「混合值(mixed values)」。 針對 Motion Settings,介面會提供一個風力控制滑桿,用來在不同風力條件下測試動態設定, 從微風到強風都能測。

最後,你也可以透過 presets(和轉換器一樣)來修改材質設定或 Shader; 並且可以把目前設定或所有材質設定儲存成 presets,方便套用到其他材質。 若有需要,presets 也可以用任何文字編輯器進行修改。

全域著色控制(GLOBAL TINTING CONTROL)

來把 Prefab 做全域上色吧!選取 Nature 這個 gameobject,開啟 Material Manager, 並把 Material Settings 設為 All Material Settings。 搜尋 Tinting Settings,把 Tinting Intensity 設為 1。 Tinting 功能非常適合用在季節效果、增加色彩變化,或讓草與地形更自然地融合。 材質會使用 Tinting Paint Mask 的值來決定這個效果是「局部」還是「全域」。 當 mask 設為 1 時,材質會改用 Manager 裡的全域設定。 在 Hierarchy 中選取 The Visual Engine gameobject > Global Settings, 把 Global Paint Data > Tinting Color 改成淺橘色,並把 Tinting Intensity 設為 1, 就能做出秋天的場景。 請注意:對於 props,Tinting 會被固定鎖定,以避免非植被資產被著色,因此 Material Manager 不會影響它。 你需要手動設定 props 的 tinting intensity,或先把該屬性解鎖!

你可以用各種遮罩來控制每個材質「某個功能」要如何被套用。 Multi Mask 會使用 Shader Map 的藍色通道,可用來把樹葉部分篩選出來, 讓上色只作用在樹葉上(若有提供)。 Luma Mask 會使用由 Albedo 計算出的亮度遮罩,適合用來讓 tinting 增加更多細節。 像是岩石加苔蘚這種多層著色,我們可能希望苔蘚層有顏色變化,但排除岩石本體; 這種情況下,你可以針對每一層分別控制 tinting 使用的 Multi Mask。 把 Main Multi Mask 的 remap 滑桿設為 1-1(會讓 multi mask 變黑), 並把 Layer Multi Mask 設為 0-0(會讓 multi mask 變白)。 這樣就只有苔蘚會受到影響。

使用元素進行著色(TINTING WITH ELEMENTS)

Visual Engine Manager > Global Settings 區塊底下的設定,也可以透過 Elements 來做局部控制。 請先確認材質上有啟用 Use Paint Elements 的開關。 Elements 是 Visual Engine 很重要的一部分,它們就像是從上方投射下來的貼花(decals)。 元素的類型範圍很廣:從上色(季節著色)、加入動態互動(觸碰彎折),到控制透明度(冬季把葉子裁切掉), 或控制尺寸(讓草長大或隱藏)等等。

要建立一個 element,請在 Hierarchy 視窗按右鍵 > BOXOPHOBIC > The Visual Engine > Element。 場景中會建立一個一般的 gameobject,你可以移動、旋轉或縮放它; 預設情況下,元素材質會使用 Paint Tinting Shader,用來替 Prefab 上色。 元素基本上就是把全域數值做「局部覆寫」。 當多個元素彼此重疊放置時,它們會由上往下渲染,效果就像 Photoshop 的圖層一樣。 若要更換元素類型,你需要從 BOXOPHOBIC > The Visual Engine > Elements 類別中, 選擇 element 材質要使用的 Shader。

當 element 材質被存到磁碟後,這個 element 就能用在 Prefab 裡,並且你可以啟用 GPU Instancing, 讓所有使用同一材質的 elements 以 1 次 drawcall 進行渲染! 你可以在 element component 上按 Save Material To Disk 來存材質; 或是在 Project 中自行建立材質,再指派到 element gameobject 的 renderer 上。

使用元素控制季節(SEASONS WITH ELEMENTS)

來替場景做一套動態的季節控制吧!Visual Engine Manager 底下的 Season Control 滑桿就是為了搭配 elements 而設計的。 在前面建立的 Paint Tinting element 上,把材質的 Render Mode 選項改成 Seasons。 這樣你就能針對每個季節分別設定顏色。 當你不希望某個季節的顏色影響 Prefab 時,只要把該季節顏色的 alpha 設為 0 即可! 接著移動 Season Control 滑桿,就能看到變化。

Elements 也可以使用 layers,讓不同材質能被不同的 elements 分開控制。 在 element 材質上,你可以調整 Render Layers 選項;然後在 prefab 材質的 Global Settings 區塊中, 根據 element 類型選擇要使用哪個 layer。 你也可以依照 BOXOPHOBIC > The Visual Engine > Core > Resources > Internal Layers 檔案中的說明, 替 layers 重新命名,以便更容易辨識。 這在你想用一種方式給樹上色,但又想對草使用噪聲著色(noise coloring),或讓草與地形做混合、以達成風格化草地渲染時很有用。

顏色設定好後,來為場景加上雪吧。先在材質上啟用 Overlay 功能,並建立一個新的 element 來控制 overlay 效果。 Overlay 功能使用 Atmo MaskAtmo Elements 作為全域控制,因此建立新 element 後,把 Shader 改成 Atmo Overlay,再把 Winter Value 設為 1。 最後依每個 prefab 的需求調整材質參數:道具(props)搭配 Projection 看起來更好, 而植被(foliage)則只要使用 Luma mask 就能有不錯效果。

元素渲染(ELEMENTS RENDERING)

Elements 由 Visual Engine Manager 負責渲染:它會先把元素渲染成貼圖(render textures), 再把這些貼圖以全域方式送進 Shader。 渲染是在一個「跟隨遊戲相機或場景相機」的虛擬體積(virtual volume)中進行,並以 兩個 cascades(級距) 來完成;相關設定位於 Element Renderer 設定區塊:

  • Base Rendering:用於較遠距離的元素渲染,解析度較低(可自行選擇)
  • Near Rendering:用於較近距離的元素渲染,解析度較高(可自行選擇)
  • Base To Near Blend:用於在 Base 與 Near 的 render texture 之間做混合過渡

當 element 的縮放超過最大渲染距離時,base 距離邊緣的像素會在渲染邊界外被重複延伸, 讓位於邊界外的所有 Prefab 仍然能吃到 element 效果。 這是刻意的設計,例如可以讓整個場景都有季節效果,即使 base 渲染距離設得比相機遠裁切面(far clipping plane)還小! 若要讓 elements 在最大距離處淡出,可以在 element 材質上啟用 Bounds Fade 選項。

Element 的可見性可以在 Visual Engine Manager 上做全域設定,或針對每個 element 做局部設定,用於除錯。 預設情況下,elements 在 Scene view 中可見,但在執行時(runtime)會隱藏。 請注意:可見性不會影響 elements 的實際渲染結果!

動態與風力控制(MOTION AND WIND CONTROL)

在把植被 Prefab 轉換完成後,系統會依 Prefab 類型在材質上加入通用的 Motion 設定,多數情況下可能就能正常運作。 不過,為了得到最佳結果,你仍然可能會想(或需要)針對每個 Prefab 個別微調! Shader 支援 3 層風力動畫1 個風力高光效果;你可以在材質的 Motion Settings 區塊找到它們。

  • Motion Primary:從 Prefab 的 pivot 點開始,為整株植物或樹加入彎折動畫。 對草而言,系統會為每片草葉烘焙程序式 pivot,讓每片草葉都能各自彎折。 當材質的 Object Settings > Object Pivots Mode 設為 Baked 時,就會使用這些預先烘焙的 pivots。
  • Motion Second:加入「擠壓(squash)」動畫,非常適合棕櫚或柳樹,會沿風向推動頂點。
  • Motion Leaves:加入「拍動/飄動(flutter)」動畫,影響樹葉或葉緣,效果取決於遮罩如何烘焙到網格上。
  • Motion Ripples:加入一種視覺效果,用來凸顯風流向(wind flow);它使用葉子遮罩(leaves mask)。

所有層都支援調整 motion flow 貼圖的 TillingSpeedNoise 值在每一層的意義不同: 對 primary motion 會對風向加入雜訊; 對 second motion 會對風向加入雜訊,且在較高數值時會加入垂直方向的動作; 對 leaves motion 則是:值為 0 時依頂點法線方向驅動 flutter,值為 1 時加入隨機方向。 Delay 值會讓風向動畫產生延遲;對第二層來說,加入 delay 會在低風力強度時使用垂直動畫,並在高風力強度時過渡到完整動畫。 請使用共通的 Details Limit 值,在較遠距離淡出 flutter 動作與高光效果,以減少視覺雜訊!

對前兩層 motion,使用 Motion Pivots 滑桿來決定 motion flow 貼圖要在「世界座標」取樣, 或在 pivot(或烘焙 pivot)位置取樣。數值越高,動畫看起來越「硬/僵」;通常樹木會建議使用較硬的彎折動畫。

若要讓每片草 quad 或每個樹枝的動畫相位不同,請把 Motion Phase 滑桿設高一些。 相位變化遮罩由材質的 Object Settings > Object Phase Mask 控制。 對大多數商店資產,程序式變化(procedural variation)會被烘焙,通常對草與植物已足夠; 但對像樹這種複雜幾何,程序式變化可能會造成葉片與樹枝「脫節」。 有些工具(例如 Unity 的 Tree Creator、Fantasy Tree Creator(Asset Store)、TreeIt(免費軟體)等)提供正確的「每分枝」變化, 當網格有加入正確遮罩時,風動畫效果會最好。

風力強度可由 Visual Engine Manager > Motion Control 滑桿做全域控制,風向則由 Main Wind 物件的旋轉來控制。 Flow elements 可用來在局部控制風力強度或加入互動(下一節會說明)。

最後,設定 Prefab 的 Motion Settings 時,請用 Material Manager 確保同一個 Prefab 的所有材質都套用相同設定, 否則樹皮與樹葉之間的風動畫就不會同步。也請用 Material Manager 工具中的 Motion Control 在不同風況下測試動畫! 這個風力滑桿與 Visual Engine Manager 元件上的 Motion Control 滑桿是相同概念。

動態遮罩設定(MOTION MASKS SETUP)

和許多 Shader 效果一樣,motion 是由遮罩驅動的。像 Unity 的 Tree Creator 與 TreeIt(免費軟體)會把樹枝遮罩、每分枝相位變化、 葉子遮罩等資訊存到 vertex colors。像 SpeedTree 則更複雜,會儲存樹枝 pivot 與朝向,以取得更寫實的風動畫。 Visual Engine 結合了兩者:motion 遮罩類似 Tree Creator,但也會儲存預先烘焙的 pivots,讓每個 grass quad 或合併網格能像獨立物件一樣, 進行彎折、size fade、或全域貼圖取樣!但不支援每分枝 pivot(Per-branch pivots)

由於 Unity Asset Store 上許多資產沒有 motion 遮罩,或遮罩不完整,轉換時可以把遮罩加到新建立的網格上。 在 Advanced Settings 裡,針對每個 vertex color,轉換器可以加入程序式遮罩、從原始網格取得遮罩,或從貼圖計算遮罩。 預設的網格打包方式是:vertex Red(phase variation)、vertex Green(branch mask)、 vertex Blue(leaves mask)、vertex Alpha(用於彎折的 height mask)。 不過網格也可以用任何方式打包,因為你可以在材質上為每個 motion layer 選擇要用的遮罩來源。 若使用多材質網格,還能透過 presets 為每個 sub-mesh 分別加入遮罩!

若不經轉換就直接使用 Shader,且網格沒有任何 motion 遮罩,仍可使用程序式 height 與球形(spherical)遮罩。 程序式遮罩會使用 Object Settings > Object Height / Object Radius 的值來做遮罩 remap。

下方你可以看到 Unity 新版 URP Oasis 範例場景中使用的網格遮罩;它們是高品質風動畫遮罩設定的很好範例。 當遮罩不可用時,轉換器會加入程序式遮罩,但那只是近似,並不一定在所有情況都能正常運作! 遮罩越好,風動畫看起來就會越好!

動態互動(MOTION INTERACTION)

Motion Interaction 會在玩家穿越植被時,讓 Prefab 產生彎折與次要動態(secondary motion)。 這些效果由 Flow elements 控制。 要在材質上啟用互動,請在 Motion Settings 底下啟用 Use Flow Elements 開關, 然後用 Motion Primary InteractionMotion Second Interaction 滑桿, 分別控制彎折與擠壓(squash)動畫的互動強度。

來做一個簡單的互動效果吧!建立一個新的 element,並把 element 的 Shader 改成 Flow Interaction (Simple)。簡化版本會使用 Element Texture 的方向(運作方式類似法線貼圖), 而且只會影響「彎折」。 如果你想影響第二層與 flutter 動畫,以及 ripple 效果,你就需要使用 Flow Interaction 這個 element 類型, 並提高 element 材質上的 Motion Noise 值。 這個 element 類型能加入更複雜的互動效果(下方章節會介紹)。 彎折方向與 noise 值會被寫入全域貼圖,並由 Shader 取樣,因此無論使用多少個互動 element,計算成本都相同 (除了「渲染 elements」本身的成本之外)!

在某些情況下(例如角色會跳躍),我們只希望角色「接觸地面」時才有互動。 若要在跳躍時淡出 elements,可以啟用 Raycast Fade 選項,並設定距離與 element 的 raycasting 需要互動的 physics layer。

互動軌跡(INTERACTION TRAILS)

Elements 可以用網格(meshes)、粒子系統(particle systems)或 Trail Renderer 來渲染。 粒子元素的一個常見用途,是在角色穿越草地時留下「軌跡」。 在 Hierarchy 視窗按右鍵 > BOXOPHOBIC > The Visual Engine > Element (Particle) 來建立粒子 element。 系統預設會在物件「位移(translation)」時生成粒子;而由於 elements 是從上方渲染投射,粒子會朝上(facing up)。 Color over lifetime 會依粒子年齡讓 element 淡出。 調整生成率(spawn rate)、存活時間(lifetime)、粒子大小(particle size)、顏色,以及 alpha 漸層, 都是 Unity 粒子系統的標準控制項。

要做出軌跡互動,請把 element 材質的 Shader 改成 Flow Interaction。 這個 Shader 允許你用不同來源來設定 Motion Direction:例如 element 的 forward 方向、element texture、 particle translate、以及 particle velocity。請隨時查看 Shader 的 info box 以取得更多細節。 以軌跡效果來說,我們會使用 Particle Translate 方向,它會依系統移動方向來對粒子上色。 把粒子在草地中移動,你會看到彎折會跟著移動方向走。 若要讓互動更有動態感(例如通過後草會左右擺動),請把 Motion Noise 滑桿調高, 為 motion layers 加入雜訊。雜訊貼圖會沿著 motion 方向流動,你也可以控制它的 tiling 與 speed。 依不同設定,同一個 element Shader 也能用來做方向性互動、直升機效果等。 建議查看 demo scene,了解各種效果是如何完成的!

一般工作流程(GENERAL WORKFLOWS)

收集已轉換資料 01:運作方式(COLLECT CONVERTED DATA 01: HOW IT WORKS)

Collect Converted Data 功能會把已轉換的資產複製到一個新的資料夾, 讓你得到「乾淨的轉換結果」,而不必手動從原始套件裡清理那些不再使用的資產。

如果你以前用過 Convert and Collect 功能,從 7.2.0 版本開始, Collect Converted Data 已重新設計,使用上更容易,並且能避開一些限制 (例如:若貼圖不是由轉換器指派,就不會被複製)。 現在 Prefab 會一律先在原位置完成轉換,方便你快速迭代、調整材質,或補齊缺失的貼圖; 而「收集(collect)」可以在轉換後任何時間點進行,或在你做了修改之後再進行。

要收集 Prefab,請按下 Convert 按鈕旁邊那個小的青色 Package 按鈕, 並選擇新的 Prefab 與相關檔案要儲存到哪裡。 如果你對已轉換資產做了任何修改,你可以再次收集資產,來覆寫舊的資料!

請注意:被收集出來的資產永遠都是「獨立的一份」,不會依賴原始資產或它所來自的轉換資產! 因此你可以刪除原始資產與轉換後的資產,以清理專案。

收集已轉換資料 02:資料結構(COLLECT CONVERTED DATA 02: DATA STRUCTURE)

當你按下 Collect Converted Data 按鈕後,會跳出新的資料夾選擇視窗。 你可以選擇任何資料夾,所有已轉換的資產會依照以下結構被儲存到新資料夾中:

選取的資料夾
├─ Assets Data
│  ├─ Prefabs Data    - 保存所有「未共享」的已轉換 meshes 與 materials
│  └─ Shared Data     - 保存在多個 Prefab 之間「共用」的已轉換 materials
├─ Texture Data       - 保存所有原始貼圖的複本,以及由轉換器打包(packed)的貼圖
├─ Prefab A.prefab    - Prefab 會建立在「選取資料夾的根目錄」
└─ Prefab B.prefab    - Prefab 會建立在「選取資料夾的根目錄」
  

請注意:你隨時都可以重新命名或移動這個資料夾,也可以把 Prefab 移到其他資料夾以更好地整理專案; 但是當你再次使用 Collect Converted Data 時,如果 Prefab 已被移走, 收集功能會在「選取資料夾的根目錄」再建立一個同名的新 Prefab!

儲存已轉換資料:簡介(SAVING CONVERTED DATA: INTRODUCTION)

預設情況下,Assets Converter 會把 Prefab 直接存回原位置,並將轉換後的資產存到一個名為 Prefabs Data 的新資料夾中;該資料夾位於 Prefab 的根資料夾下。

Visual Engine 12.2.0 引入了在轉換時變更儲存格式的選項。 你現在可以指定:資產要存在哪裡、命名規則要怎麼用、以及在 collect 時要如何儲存。 此選項可在 Converter > Advanced Settings > OutputData 中設定,或透過 presets 設定!

你也可以建立 Preset Overrides,用來在「單一資產」或「整個專案」層級改變儲存命名規則: 做法是在 override presets 中加入 OutputBase / OutputData / CollectBase / CollectData, 並在後面接上命名規則。你可以把 override 設為 global(鎖頭圖示),讓它每次開啟轉換器都會自動套用!

以下命名標記(naming conventions)可用來建立新資料夾或改變命名格式:

  • CONVERTROOT:Prefab 的根資料夾
  • COLLECTROOT:收集 Prefab 時所選的資料夾
  • BASENAME:Prefab 的名稱
  • DATANAME:轉換後資產的名稱
  • DATAGUID:加到資產上的唯一 GUID,用來避免同名資產儲存時發生衝突
  • DATATYPE:轉換後資產的類型

請注意:某些操作需要資產名稱包含 TVE 與資產類型,以避免處理到整個專案內所有資產。 建議使用預設的資產命名規則;不過你可以安全地依需求調整儲存資料夾位置,以符合你的資料夾結構!

儲存已轉換資料:範例(SAVING CONVERTED DATA: EXAMPLES)

以下範例中,轉換器會使用 PrefabName_Converted 的規則來儲存新的 Prefab:

  • OutputBase CONVERTROOT/BASENAME_Converted

以下範例中,轉換器會用 Prefab 名稱建立新資料夾,並把與該 Prefab 相關的所有資產存放在其中:

  • OutputData CONVERTROOT/BASENAME/DATANAME DATAGUID (TVE DATATYPE)

以下範例中,轉換器會在不加入 GUID 的情況下儲存所有資產(不建議):

  • OutputData CONVERTROOT/DATATYPEs/DATANAME (TVE DATATYPE)

以下範例中,轉換器會用「不含空白、改用底線」的格式來儲存所有資產:

  • OutputData CONVERTROOT/BASENAME/DATANAME_DATAGUID_TVE_DATATYPE

以下範例中,轉換器會把所有資產存到 Sources 資料夾:

  • OutputData CONVERTROOT/Sources/DATATYPEs/DATANAME DATAGUID (TVE DATATYPE)

以下範例中,轉換器會把所有資產存到你指定的資料夾:

  • OutputBase Assets/Conversions/BASENAME
  • OutputData Assets/Conversions/Sources/DATANAME DATAGUID (TVE DATATYPE)

以下範例中,轉換器在 collect 時會把所有 Prefab 收集到名為 Prefabs 的資料夾,並把資產收集到名為 Sources 的資料夾:

  • CollectBase COLLECTROOT/Prefabs/BASENAME
  • CollectData COLLECTROOT/Sources/DATATYPEs/DATANAME DATAGUID (TVE DATATYPE)

地形草與樹(TERRAIN GRASS AND TREES)

Visual Engine 的 Shader 可以用在地形上,但依你使用的資產或 Render Pipeline 不同,會需要不同工作流程:

  • Grass as Billboard Details:TVE 不支援!
  • Grass as Vertex Lit Details:TVE 不支援!
  • Grass as GPU Instanced Details:在 Unity 2021.3 或更高版本,TVE Shader 支援 GPU Instanced details。 Prefab 不能使用 LOD Groups(Unity 限制)。此方式可在所有 Render Pipelines 運作。
  • Grass with Nature Renderer:使用 Nature Renderer 時,你需要建立 TVE 的草 Prefab,並把它們畫到地形上。 TVE 不支援純 2D 貼圖草,會改用 NR 的 Shader。此方式可在所有 Render Pipelines 運作。
  • Grass with Vegetation Studio:使用 Vegetation Studio 時,你需要建立 TVE 的草 Prefab,並把它們拖到 Grass Biome Type 上。 TVE 不支援 2D 草貼圖,會改用 VS 的 Shader。此方式可在所有 Render Pipelines 運作。
  • Grass with GPU Instancer:使用 GPU Instancer Detail Manager 時,你需要建立 TVE 的草 Prefab,並把它們拖到 prototypes 清單中。 TVE 不支援 2D 草貼圖,會改用 GPUI 的 Shader。此方式可在所有 Render Pipelines 運作。
  • Grass as Terrain Tress:此流程可搭配 TVE Prefab 使用,但因效能考量不建議。(原文寫 Terrain Tress) 此方式可在所有 Render Pipelines 運作。
  • Trees as Terrain Tress:你可以把任何 TVE Prefab 畫成 Terrain Tree,但 Prefab 需要有 LOD Group (即使只放單一 mesh 當 LOD0 也可以),以覆寫藍色 billboard 的建立,並且能縮放與旋轉樹。(原文寫 Terrain Tress) 此方式可在所有 Render Pipelines 運作。

請注意:當 TVE Prefab 透過上述任一系統與地形系統一起使用時,你必須在 Project Settings > Player 啟用 Optimize Mesh Data, 否則地形會剝除(strip out)TVE Shader 需要的一部分 mesh 資料!

草地著色:一般(GRASS SHADING: GENERAL)

你在轉換草 Prefab 後,常常會遇到著色看起來很醜的情況。要改善問題,可以嘗試調整以下參數:

  • Render Normals:設定背面法線要不要像草是雙面一樣運作(flip 或 mirror),或不做處理(none)
  • Main Smoothness:若網格法線朝上,smoothness 可能看起來異常;多數情況下草的 smoothness 應該接近 0
  • Vertex Occlusion:調整顏色與 remap 滑桿,在草根部做出好看的環境遮蔽(AO),讓草更「貼地」
  • Subsurface Parameters:次表面效果對草的著色影響很大,建議花點時間微調;它可能決定左圖那種效果與健康草地質感之間的差異
  • Motion Highlight:為陣風(wind gust)加上一種不錯的高光點綴

草地著色:平面(GRASS SHADING: FLAT)

要做出「平面著色」風格的草地 Shader,需要讓網格的所有法線都朝上。 多數風格化資產在製作時就已經把網格法線整理成適合平面著色,但你也可以在轉換 Prefab 時, 對任何草地達成同樣效果。要更改著色方式,請照以下步驟:

  • Assets Converter 視窗中,切換(開啟)Show Advanced Settings
  • 找到 Normals Source 下拉選單,選擇 Procedural
  • 選擇其中一個 Flat Shading 選項(Low / Medium / Full
  • 轉換 Prefab
  • 轉換完成後,在材質上把 Render Normals 設為 Same

啟用 LOD Crossfade(ENABLE LOD CROSSFADE)

0.9.9 版本開始,Shader 支援 LOD Cross Fade。 要啟用它,請確認你的 Fade Mode 設為 Cross Fade, 並且在 LOD Group 元件上啟用 Animated Cross-fading 開關。 若 Fade Mode 設為 Speedtree,就不會啟用平滑的 crossfade。

轉換自製植被(CONVERT CUSTOM-MADE VEGETATION)

當網格是你自己製作時,你需要把風力資訊寫進 vertex colors。 下面整理了如何設定網格的 vertex colors 與材質,才能把 Visual Engine 的風動畫效果發揮到最好:

Mesh 設定(Mesh Setup)

  • Vertex Red:變化遮罩(Variation Mask) (樹:每個樹枝的變化,包含葉子;植物:每片葉子的變化)
  • Vertex Green:樹枝遮罩(Branch Mask) (植物也可以把葉子當作樹枝處理,因此它可以沿著葉子做遮罩)
  • Vertex Blue:拍動/葉子遮罩(Flutter/Leaves Mask) (用在植物時,會是 flutter 的邊緣遮罩)
  • Vertex Alpha:環境遮蔽(Ambient Occlusion) (如果沒有,就保持白色即可)

轉換設定(Conversion Setup)

  • Conversion Shader:材質請使用 BOXOPHOBIC > The Visual Engine > Helpers > I made It Shader。 加入 Albedo、Normal、Masks 所需的貼圖。轉換器會打包貼圖,使其能與植被 Shader 相容。
  • Conversion Preset:轉換時使用 I Made It 的 preset。

自訂設定(Custom Setup)

  • 如果你已經把 vertex colors 畫好了,但它們不符合 I made It preset 的配置, 你可以開啟 Show Advanced Settings,並選擇正確的 vertex color 通道, 分別指定給 Occlusion SourceVariation SourceMotion Secondary SourceMotion Leaves Source。物件彎折會使用預設的 Height mask
  • 如果你已經在使用 StandardURP LitHDRP Lit Shader, 你可以在開啟 Show Advanced Settings 的情況下使用任何 procedural preset, 並把正確的 vertex color 通道指定為 OcclusionVariationMotion SecondaryMotion Leaves 的來源。

轉換未知植被(CONVERT UNKNOWN VEGETATION)

要轉換「風力資訊不明」的網格,最簡單的方式是使用 Procedural 類型的 presets。 Assets Converter 工具提供多個 procedural presets:

  • Automatic Grass:由上往下(Top-down)的風遮罩、程序式變化(procedural variation)、簡單的由上往下 vertex occlusion
  • Automatic Plant:球形(spherical)風遮罩、程序式變化、簡單的球形 vertex occlusion
  • Automatic Tree:由上往下與膠囊(capsule)風遮罩、程序式變化、簡單的膠囊 vertex occlusion、苔蘚遮罩(moss mask)
  • Automatic Conifer:由上往下與膠囊風遮罩、程序式變化、簡單的膠囊 vertex occlusion
  • Automatic Props:對靜態 props 會跳過網格轉換(Mesh conversion is skipped)

材質轉換只有在使用 StandardURP LitHDRP Lit Shader 時,才會正常運作。


建立 Prefab Settings 的預設(CREATE A PREFAB SETTINGS PRESET)

Visual Engine 支援以文字檔為基礎的 Prefab Settings presets。要建立新的 preset,請到: Assets/BOXOPHOBIC/The Visual Engine/Core/Presets/Settings, 並複製其中一個 Motion presets。把新檔案依你需求重新命名即可。 檔名中的 「 - 」 字元會新增一個分類(category)。 當你打開 Prefab Settings 視窗時,新的 preset 會出現在 Material Preset 下拉選單中。

用 Notepad 或 Visual Studio 開啟新的 preset 檔案後,你可以透過以下 API 來設定材質屬性:

  • SET_FLOAT _FloatProp 0.75:把 prefab 材質上的 _FloatProp 浮點值設為 0.75
  • SET_COLOR _ColorProp 0.5 0.5 0.5 1:把 prefab 材質上的 _ColorProp 顏色設為 (0.5, 0.5, 0.5, 1)
  • SET_VECTOR _VecProp 0.5 0.5 0.5 1:把 prefab 材質上的 _VecProp 向量設為 (0.5, 0.5, 0.5, 1)

以下是範例:

Material SET_FLOAT _MotionAmplitude_10 0.5 - Will set the Primary Amplitude to 0.5
Material SET_FLOAT _MotionSpeed_10 2 - Will set the Primary Speed to 2
Material SET_FLOAT _MotionScale_10 1 - Will set the Primary Scale to 1
Material SET_FLOAT _MotionVariation_10 33 - Will set the Primary Variation to 33
Material SET_FLOAT _InteractionAmplitude 0.5 - Will set the Interaction Amplitude to 0.5

使用這個簡單 API,你可以設定任何材質屬性,例如 colors、floats 或 vectors。 未來會加入更多選項,用於 shader selection、keywords 等(原文寫「feature」)。 請查看內附 presets 以取得更多範例。


元素工作流程(ELEMENT WORKFLOWS)

Motion:簡易互動(MOTION: SIMPLE INTERACTION)

要建立互動 element,請依照以下步驟:

  • 從 GameObject 選單建立 element:BOXOPHOBIC > The Visual Engine > Element
  • 把 element shader 改成:BOXOPHOBIC > The Visual Engine > Elements > Flow Interaction (Simple)
  • 如果你需要把 element 加進 prefab、並在 runtime 生成(instantiate),請先在專案中建立一個使用互動 shader 的材質(project material), 把它指定給 element 的 mesh;接著你就可以把 element 存成 prefab!

Motion:直升機效果(MOTION: HELICOPTER EFFECT)

要做出直升機效果,只需要幾個簡單步驟:

  • 在場景中建立一個 element
  • 為它選用 Push Interaction Shader
  • 把預設的互動貼圖改成 Element Interaction Noise 貼圖
  • 旋轉 element(或用腳本設定旋轉),就完成了
  • 或者,你也可以先在 Project 面板中建立並指定 element 材質,這樣就能把 element 存成 prefab
  • 這個 element 在任何高度都會產生效果,因此你可能需要讓它在遠距離時淡出。請參考下方的 fade-out 教學

草地與地形混色 01:Prefab 設定(BLENDING GRASS WITH TERRAIN 01: PREFAB SETUP)

在這個範例中,我們要為你的 Prefab 做出風格化(stylized)的草地外觀。 首先,我們會先看看如何讓草看起來更「平面(flat)」。

  • 轉換草 Prefab 時,在 Assets Converter 裡打開 Advanced Settings, 將 Normals Source 設為 Procedural,並選擇 Flat Shading (Full)。 這個選項會把網格法線設為朝上,讓草看起來更平面。
  • 轉換完成後,在草的材質上把 Render Normals 設為 None, 讓兩個面(正反面)的打光效果一致。
  • Colors Mask 的 remap 滑桿把手兩端都設為 0, 讓草完全受 Colors elements 影響。
  • 你可以啟用 Size Fade 支援,讓草在遠距離淡出。 這個最好搭配 LOD Group 使用:你可以把 Cull distance 與 Size Fade 對齊, 以「遮蔽」草突然消失的感覺。(原文寫 maks out)
  • 由於我們要把草與地形做混色,草的顏色會從 color map 取得,因此 albedo 應該設為白色,才能得到完美的混色效果。

草地與地形混色 02:顏色貼圖(BLENDING GRASS WITH TERRAIN 02: COLORS MAPS)

在第二部分,我們會使用一張顏色貼圖(color map)來讓草與地形做混色。

  • 建立一個新的 Colors Map element
  • 將 element 縮放到與你的地形大小一致
  • 把 color map 放到 Element Texture 欄位,並調整 Main color, 讓草的顏色能與地形顏色匹配

請注意:Visual Engine 沒有用來烘焙(bake)color map 的工具, 你可以使用第三方方案,例如 MicroSplatStaggart Grass color maps generator 來產生 color map!

GPU Instanced Elements

2.1.0 版本開始,elements 支援 GPU Instancing。 要使用 GPU Instancing,elements 的材質必須先儲存到專案中。 有了這個功能,你可以用同一個材質在 一次 draw call 裡渲染數百個 elements! 這在有很多角色都會使用 Interaction elements 的情境特別有用。要使用 instancing,請依照以下步驟:

  • 選取一個 element,直接按下 Save Material to Disk 按鈕
  • 儲存後,在 element 的材質上啟用 GPU Instancing
  • 就完成了!進入 Play Mode 後,elements 會以 instancing 方式渲染

請注意:使用 GPU Instancing 時,無法使用粒子(particles)與即時排序(real-time sorting)! 請查看 Demo Instanced 場景:其中有 300 個 interaction elements 以 1 次 draw call 渲染。你可以在 Global Volume > Elements Instance 清單中看到所有 instanced elements。

此網誌的熱門文章

哥利亞遙控炸彈 (Leichter Ladungsträger Goliath)

O-I(試製120t超重戰車「オイ」)