發表文章

目前顯示的是 9月, 2020的文章

根據不同平台調整Static mesh的LOD

圖片
通常開發跨平台遊戲的時候,會想要針對Static Mesh做LOD區隔。 而UE4提供好用的Minimal LOD功能,讓開發者不用特別寫程式碼,就可以根據不同平台調整LOD參數。Minimal LOD的參數是可以每個static mesh設定的,設定的地方可以在Static Mesh的編輯器內找到。如圖所示 例如說Windows的Minimal LOD設為0,Android跟iOS設為1。 這樣的話在實際執行的時候,Android跟iOS平台只會看到1以後的LOD mesh,可以有效的控制場景總面數。 還有另一個參數r.StaticMeshLODDistanceScale可以控制LOD切換的距離。 數字越大代表會越早切換到低階層的LOD。 這個參數也可以針對平台做設定,不過是影響全域的變數,所以要在Device Profile的頁面設定。記得要Save as Default才會存檔。 舉例來說 r.StaticMeshLODDistanceScale=2.0 然後LOD1的screen size設為0.3的話 代表在這個平台0.3*2的距離就會切換成LOD1了。 不過使用LODDistanceScale有個小缺點,就是在編輯的時候預設都是使用r.StaticMeshLODDistanceScale=1.0。要把場景調整到1.0跟2.0外觀看起來不錯的狀態,是需要很多人工檢查的。 上面提到的兩個參數可以控制Minimal LOD,不過這兩個參數都是執行的時候,告訴系統該顯示哪一層LOD。 在打包的過程還是都會把全部的LOD都包進去,影響最後打包的容量。 如果想要避免比Minimal LOD更精細的LOD也被打包進平台內。我們需要在打包的平台把Device Profile參數 r.StaticMesh.StripMinLodDataDuringCooking設為1。 或是使用文字編輯器打開 [Project Path]/Config/DefaultDeviceProfiles.ini 把以下區段 [Windows DeviceProfile] DeviceType=Windows BaseProfileName= 改為 [Windows DeviceProfile] DeviceType=Windows BaseProfileName= +CVars=r.Static