ue4 Worldmachine 結合使用


最近項目需求制作一個場景的遠景部分。正好可以嘗試使用一下UE4的 Landscape。不過直接在 Editor 里刷地形工作量太大,刷出的地形也不真實,最關鍵的是 Landscape 的工具並不是那么好用。

所以我們決定使用 WorldMachine 作為地形的生成工具,將地形的高度圖導入 Editor,再在 Editor 中對細節進行修改。WorldMachine 生成的高度圖相對人工算出來的要真實,最重要的是快,用它找坡度,溝壑更加准確。

在 UE4 中使用 WorldMachine 還要解決幾個問題。官方有篇 wiki 將的很清楚。World Machine to Unreal Engine 4 - In Depth Guide

問題1:高度圖尺寸

UE4 的高度圖有一些限制,這與 UE4 地形系統的組織有關。高度圖中每一個像素對應着地形系統的一個頂點。UE4 的地形組織分為3層:組件 component,分段 section,四邊形 quadsLandscape Technical Guide

四邊形是地形系統最小單位,每個四邊形對應4個頂點。

分段由四邊形組成,是 drawcall 和 LOD 的最小單位。因為要對每個分段單獨做 LOD,高度圖需要做 mipmap,所以每個分段的高度圖都是2的整數次冪,可以是 8x8 到 256x256 中間的一個。分段中每個四邊形共享頂點,所以每邊四邊形的個數是 x-1。

組件由分段組成,每個組件只能有 1x1 個或者 2x2 個分段。組件是渲染、可視性和碰撞的基本單元。每一邊組件的數量可以是1到32中的一個,長和寬可以不相同。組件越多,CPU 消耗越大。

了解了以上的關系,高度圖的尺寸就可以計算出來了。但是這里推薦的方法是在 Editor 里調整組件和分段的選項,來得到高度圖的尺寸。


高度圖尺寸

上圖中的高度尺寸就是 505x505。

問題2:世界尺寸

第二個問題就是要弄清地形系統中的距離表示的實際世界尺寸。正常地形系統中頂點之間距離是1ued,代表實際中的1cm,但是在創建時可以看到 Scale 是 (100, 100, 100)。所以頂點間距離是1m。地形系統的高度范圍是 -255 到 257,同樣在 Scale = 100 時,單位是 m。如果希望上圖中的設置,高度圖1像素對應1m,那么 WorldMachine 的設置是,分辨率 505x505,寬是505m,高是505m。海拔的設置,由於world machine從0開始,所以要設成512m。


分辨率,寬,高

高度

之后的操作就是在 WorldMachine 里做圖並導入 Editor。WorldMachine 默認都是 km 級別的,可以放大 100 倍,方便在 WorldMachine 里操作。

問題3:地形材質

地形材質方面主要要搞清 LayerInfo 的2兩種混合模式和材質中的3種混合類型的含義。

LayerInfo 的2兩種混合模式:Weight-Blend(normal), No Weight-Blend


Weight-Blend(normal), No Weight-Blend

Weight-Blend 的層權重和為1,增加一個層的權重,其他層的權重就會減少。No Weight-Blend 的層單獨計算權重,不對其他層有影響。


No Weight-Blend 的層單獨計算權重

圖中,紅色和藍色部分為 Weight-Blend,綠色部分為 No Weight-Blend。先刷紅色,再刷藍色,綠色。藍色部分覆蓋紅色部分的區域,紅色部分的權重變成了0。而綠色部分覆蓋的區域紅色部分權重沒有變。

LB_WeightBlend,LB_AlphaBland,LB_HeightBland

WeightBlend 和 HeightBland 都是權重混合。在同一像素上不同層的權重和為1。但是 HeightBland 提供高度圖。在邊界產生下圖效果。


HeightBland

WeightBlend 和 HeightBland 都是無序的, 減少一個層的權重,其他層的權重會增加,但是增加那個並不確定。

AlphaBland 是有序的,好像一層覆蓋一層,減少一層會露出下一層。這里官方文檔說的也不詳細。查了一下代碼
int32 UMaterialExpressionLandscapeLayerBlend::Compile(class FMaterialCompiler* Compiler, int32 OutputIndex, int32 MultiplexIndex)

他們的關系應該是這樣的。


blend 公式

w是權重,color 是這個點的顏色, AlphaBland 在最后才混合,每個 Alpha 層都會 lerp 一次,順序不定。



原文鏈接:http://www.jianshu.com/p/f0feccb546f2

 
 
歡迎大家來我的新家看一看  3wwang個人博客-記錄走過的技術之路


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM