在構建全局光照時,經常會出現“Lightmass crashed”的錯誤,導致光照構建失敗。本文將分析這一問題的原因,并給出解決建議。
UE4 版本4.26
報錯如下:
<None> === Lightmass crashed: ===
Assertion failed: (Index >= 0) & (Index < ArrayNum) [File:d:\build\++ue4\sync\engine\source\runtime\core\public\Containers/Array.h] [Line: 611]?
Array index out of bounds: 60 from an array of size 36
0x00007ffdb619cf19 KERNELBASE.dll!UnknownFunction [].......
一、問題原因
“Lightmass crashed”在技術層面是由于Lightmass運算時數組越界造成的崩潰。簡單來說,就是Lightmass在進行光照運算時,需要訪問的數組索引超出了數組范圍,導致程序崩潰。
造成這一問題的原因通常有:
1. 光照貼圖分辨率過大,超過Lightmass所能處理的范圍。
2. 系統內存不足,無法支持Lightmass的運算需求。
3. Lightmass進程沖突,多開swarm agent造成進程混亂。
二、解決方法
針對上述原因,可以從以下幾點著手解決“Lightmass crashed”的問題:
1. 適當降低光照貼圖的分辨率,比如從4096降到2048。
2. 升級系統內存,至少要確保有8GB以上RAM。
3. 清除Derived Data緩存,刪除Cache文件夾重新構建。
4. 在Swarm Agent菜單中進行Cache清理和Validate驗證。
打開 Swarm Agent > Menu > Cache >?Clean,單擊清理,然后單擊Validate驗證。
5. 檢查任務欄Swarm Agent 進程,避免重復開啟造成沖突。
6. 降低光照質量設置,減小Lightmass運算量。
7. 更新UnrealEngine版本,獲取修復bug的版本。
綜上,“Lightmass crashed”錯誤可以通過優化光照貼圖、系統內存、Swarm Agent設置等方法解決。但光照運算本身較占資源,要充分考慮場景規模和機器配置。?
?