The Visual Engine TERRAIN BLANKET
本篇文章、圖片出處來自 The Visual Engine
軟體版本與本翻譯文件可能會有落差,本翻譯文件僅供參考。
本譯文為本站譯者原創翻譯內容,文字著作權歸本站所有。
未經授權,請勿任意轉載、改作或商業使用。
Terrain Blanket:簡介(TERRAIN BLANKET: INTRODUCTION)
Terrain Blanket Module 需另外購買
Terrain Blanket 模組可以讓大面積的草片(grass patch)或一整組岩石等物件, 原本只適用於平面時,改為能貼合(conform)並對齊到地形表面與法線方向。 其 Shader 會使用預先烘焙的 pivots,把每個 sub-mesh 當作獨立物件來處理, 讓你可以用更少的草物件覆蓋更大的區域;或者也能把樹根之類的物件貼合到地形上, 像是 3D 網格貼花(3D mesh decal)一樣。 當你使用 Terrain Shaders 模組時,blanket shaders 也支援物件與地形之間的無縫混合; 或是取樣地形法線並用在物件上!
請注意:貼合(conforming)只是視覺效果,不會影響 mesh 的渲染 bounds, 因此當物件 bounds 不在鏡頭視野內時,你可能會遇到渲染問題! 碰撞器(colliders)也不會跟著改變,這讓 blanket shaders 適合用在貼合到地形的草與平面物件; 或者在「停用貼合(conforming is disabled)」但使用物件與地形混合時, 仍可用在帶有 collider 的 Prefab。
Terrain Blanket:取樣地形資料(TERRAIN BLANKET: SAMPLING TERRAIN DATA)
Terrain Blanket Module 需另外購買
和許多 Visual Engine 功能一樣,把物件貼合(conforming)或對齊(aligning)到地形,是透過 elements 來完成的。 elements 會取得地形高度與法線,並把它們渲染到 Form 的全域 render textures, 接著再把這些貼圖送進 blanket shaders。用 elements 來渲染高度與法線的好處, 是你可以在多個地形上使用同一組 blanket prefabs 與同一套材質。
開始吧!選取 terrain 後,建立一個新的 element。當 terrain 被選取時, 新建立的 element 會符合地形大小;在建立時,你也可以在建立對話框中選擇把地形資料指派到 element 元件上。 當地形資料已指派後,element 就能取樣地形的高度、法線或洞(hole)貼圖! 取樣高度也能用在多種效果上,例如只在山頂加雪。
在使用 Blanket shaders 之前,我們需要先把 element 設定成能把地形高度與法線送到全域 Form render texture。若要把物件貼合到地形,請把 element shader 切換為 Form Surface (Terrain) shader。請注意:只有在地形以 instanced terrain 方式繪製時, 才會有 Normal Texture 可用!
Terrain Blanket:使用 Blanket Shaders(TERRAIN BLANKET: USING BLANKET SHADERS)
Terrain Blanket Module 需另外購買
你可以手動把 Prefab 的材質 Shader 改成 BOXOPHOBIC > The Visual Engine > Blanket; 或是打開 Material Manager,選用 Shader > Switch to Blanket shaders 的 preset, 一次替多個 Prefab 切換 Shader! Blanket shaders 擁有和 General shaders 相同的功能,但它們還能根據地形表面提供更多效果,例如: 貼合(conforming)、對齊(alignment)、物件與地形混合(object-to-terrain blending)、 以及地形法線到物件的混合(terrain normal-to-object blending)!
在材質的 Conform Settings 下,你可以選擇物件是否要貼合與/或對齊地形表面。 使用 Conform Mode > Freeform 可以手動在 Y 軸移動物件; 或者當物件已放在地形上、無法再移動時,改用 Conform Offset 值來調整!
材質可以用「每個 pivot(或預先烘焙的 pivots)」或「世界座標(world space)」來取樣 Global Form Texture,用途會不同。
- 當你使用帶有預先烘焙 pivots 的草叢群(grass clusters)時,請把材質的 Global Settings > Global Form Pivots 設為 1, 讓它在 pivot 位置取樣,這樣每個草的 sub-mesh(每片草)都會各自貼合並對齊地形。
- 當你使用大型平面網格、無法使用預先烘焙 pivots 時,請把 Global Settings > Global Form Pivots 設為 0, 改成在 world space 取樣,讓網格像貼花(decal)一樣貼合在地形上。 這種情況下,orientation(方向對齊)功能無法使用!


