2018/09/11

[製Game之路] 001 Blender匯出與Unity匯入


Unity 其實可以直接使用 Blender 的 .blend檔案,至於使用各種格式間使用與會不會造成某些差異,我也不甚了解,目前求的是匯入的結果為正向1:1,不旋轉、不放大、不位移。




關於Mesh

以保齡球瓶為例,需要一個顯示用的球瓶Mesh與碰撞用的球瓶Mesh,為什麼不顯示與碰撞共用呢?
因為顯示用會比較精緻,點線面會很多,拿來應用在碰撞上,會造成運算的數量太過龐大,所以有一個255點的上限。
綠線為 Mesh collider所引用的 mesh


匯入到Unity後,須要注意的事

基礎想法就在於,當初在Blender用何種大小比例、擺放方式去設計,在Unity也要一模一樣。
這樣才有辦法依照設計來實作遊戲。
  1.  大小與Blender下相同
    意即,原本設定為 1.5 BU(Blender Unit)大的 cube,進入到 Unity後,也是 1.5 UU(Unity Unit)
  2. 在 asset內,轉向/縮放相同
    意即,在 asset內看起來是正向擺放的(與Blender設計時相同,如果在 Blender設計是站著的,進入Unity後,在asset內也是站著的)
  3. 在Unity內實體化後,rotation為 0,0,0 與scale為 1,1,1

各種格式與問題

座標軸定義不同

因座標軸定義不同,在blender正常輸出的,在unity的asset內看起來是倒的,實體化後,可能又是自動轉正(如:x軸會被 -90度自動轉正)

解法:
  1. 在 Blender下為正向時,x軸轉 -90, Apply Rotation
  2. x軸轉 90,在 Location 0,0,0, Rotation 90,0,0 Scale 1,1,1的狀態下匯出

.fbx格式被自動縮放

.fbx格式,預設勾選 use file scale,會被縮小100倍(0.01),實體化時,scale自動設定為 100,100,100,所以實體化後為 1倍
縮小100倍(0.01)
實體化時,被放大100倍

這個問題,會在使用mesh collider產生奇怪的狀況,因為mesh collider引用 mesh 時,並不會將它實體化,造成mesh collider的大小為原始設計的0.01倍,碰撞定義變成物件裡的非常小的一個點,進而產生奇怪的情況。
右側.fbx因為mesh collider的問題,掉落到平面下


註:此問題在 .dae格式不存在,.dae匯入時為 1:1

解法:
  1. 取消 asset/inspector內的use file scale
  2. 在instance時手動將 scale 改回 1,1,1

顏色色調不太相同

使用 .dae格式時,物件較使用.fbx格式灰暗,原因為 material的intensity屬性,預設為 0.8,貌似.fbx並沒有保留此屬性,造成較為明亮的效果。
dae格式顏色灰暗
下圖,
上面二瓶為.fbx,下面為.dae
左側二瓶為intensity 0.8,右側為 1.0
可見 .dae保留了material的intensity屬性。









沒有留言:

張貼留言