由於升級Unity版本導致的Lightmap錯亂問題

      由於某些迫不得已的原因,對一個幾年前的舊項目升級了Unity的版本,從Unity5.5.4升級到Unity2017.4.25。
      升級過程沒什麼太大問題,就是某些api已經過時了修改一下代碼就好。但檢查美術場景的時候,發現之前經過烘焙Lightmap的場景,都出現了莫名其妙的黑塊。
在這裏插入圖片描述
在這裏插入圖片描述
      從現象分析,lightmap貼圖沒有變過,從編輯器查看模型本身的lightmapIndex和LightmapScaleOffset都沒有發生變化,但模型上的lightmap疊加出錯,那應該是UV出問題了,於是用代碼獲取一下某個模型分別在新舊版本里面的頂點數和uv數據,結果發現,在新版本Unity裏面模型的uv2變化了。
在這裏插入圖片描述
      出現uv2變化的原因,是因爲在模型導入的時候,選擇了Generate Lightmap UV。
在這裏插入圖片描述
      從結果分析,應該是不同版本的Unity,自動展UV的算法不太一樣,從而導致了同樣的模型展出來的uv結果有區別。
      Generate Lightmap UV這個選項其實不是一定要勾選的,只有當模型本身沒有經過展UV的操作,或者模型的UV本身超過0-1的範圍,或者模型的UV有重疊的地方,才需要Unity給你重新展一次UV用於lightmap烘焙。如果模型本身的UV已經完全展開,沒有重疊,並且都在0-1之間,完全可以用uv1來作爲lightmap烘焙時的UV。
      於是驗證了一下想法,同一個fbx複製一份,一個勾選了Generate Lightmap UV,一個沒有勾選,然後烘焙,再用高版本的打開,勾選了Generate Lightmap UV的模型lightmap錯亂了,沒有勾選的模型是正常顯示的。
在這裏插入圖片描述
      如果說美術那邊很習慣做模型用對稱、或者複用某個部位的貼圖,而導致模型uv一定有重疊或者超出0-1的,那麼建議也可以在3dmax裏面生成個uv2,直接自動展開就行了。畢竟如果你的uv1不能直接用做lightmap烘焙,unity也會自動給你展,數據量不會省的,自己展起碼不會受unity版本的影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章