【技術筆記】Unity匯入VRM模型時發生材質過大錯誤,如何解決【Unity/Vroid VRM 3D Model】
Oct 29, 2024
最近使用VRM模型開發Unity專案時遇到的問題,掙扎了很久爬文找不到解方,詢問chatGPT找到的方法。怕自己忘記,也幫助可能有需要的人,故發此文。
前置適用條件
- 錯誤提示通常長這樣:
RenderTexture.Create failed: RenderTexture too big
且通常是跳 VRM>Editor>LookAt>VRMLookAtHeadEditor.cs 的第104行有問題。 - Unity可能跟我一樣裝了VRM匯入套件:
https://github.com/vrm-c/UniVRM/releases/tag/v0.127.0
解決方法
在出問題的104行前在加兩行限制大小的語法即可:
public override void OnPreviewGUI(Rect r, GUIStyle background)
{
r.width = Mathf.Min(r.width, 2048); // 新增限制最大寬度
r.height = Mathf.Min(r.height, 2048L); // 新增限制最大高度
m_previewRenderUtility.BeginPreview(r, background); //原104行
若還是有無法解決的人,可能可以嘗試在Unity的Project Setting中找到關於Graphic Setting增加讀取圖面大小的數值限制設定。並且在Vroid中,輸出時儘量減少面數及材質數(如下圖),減少程式的運作負擔。其中Texture Atlas Resolution一率建議設置成2048*2048。