簡介
Unity3D擁有著強大的功能,不僅在2D、3D遊戲有很好的展示效果,在AI的模擬場景也是個很好發揮的製作平台。由於我們需要給感應器、攝影機最真實的現實場景,在模擬時所搜集的數據會與現實差距縮小,進而產出精準的AI model;所以在製作模擬場景的各個環節都是非常重要的。這篇主要在述說我們如需製作某一地區的真實物件建置在Unity3D中的製作流程,而在之後篇章也會介紹每個製作流程的各個功能教程與場景效能優化的撇步。
目的
1.可提供參數、特徵給AI訓練的場景
2.環境高模擬行為、與高精度
3.客製化,可調整參數改變地形中的物件
4.節省效能
上帝視角
首先製作場景時要有上帝視角的概念,頗析該場景後將各部位做切割,什麼東西是可以“靜態化”,什麼是不可以靜態,這個觀念跟效能優化有關係,在之後篇章會提到。下圖就是我將場景類別化:
Environment System : 模擬現實氣候。
Map : 地面街廓、Terrain、樹木花草等等。
Static Road Element :馬路、路面標示、交通號誌等等有關交通控制的系統。
Dynamic Movement Object:NPC,由系統控制的會移動的物件,例如行人、車輛等等。
Autonomous Vehicle:主要要放上感測器的AI訓練主角。
然而在Unity3D中,他在Editor模式是父子層級的觀念,所以可以將大類別下的細部項目放在同類別內,而且可以在父類別中設定子類別公用參數或效果,子類別將會共享父類別的參數。如下圖,將每層由下而上建構起來,會在之後訓練上遇到需要新增修改的物件會比較好製作。
物件大部分解
下圖我將場景中必要的元素都列在這張圖上,由上而下的Weather System,在Unity中有模擬風、模擬下雨(Particle System),模擬光照Lighting,模擬光線折射Reflection Probe。在Camera或Project Setting中的參數調整 (Post Processing , Render PipieLine High Definition) 上的效果。靜態物件的3D Model<-模型所需要的Material<-材質球所需的Texture。而在最後每個細部物件要對位的話有兩種方法,其一是土法煉鋼,實際丈量並推算場景中所有物件的尺寸,其二是使用HD map(下圖二),前提是有地圖資料的話,在對位上會更精準與快速。
當我們丈量物件後並有物件的照片後
1.開始建模型了 -(注意面數、法線、建模乾淨度)
2.拆解模型的UV map -(在之後要上材質球使用,或是要進入Substance Painter一定要拆過UV才能進行編輯)
3.基礎材質 – (主要是單純的路面材質,或是複雜的模型需要特殊的材質進行後製)
4.PBR材質 – (進入Substance Painter製作)
5.完成、修正 – (當將所有動作完成後就要將素材匯入Unity3D中並將之整合起來,看看在Unity中有哪些需要修正的地方,或者你也可以先在Painter中看他算圖的效果可以預先知道模型或材質的問題)
小結
就上面所提到的我們可以把它變成兩個軸線(也是用到父子層級的概念)
父層級:上帝視角軸線,從最底層的AI訓練物件到氣候環境模擬系統。
子層級:物件大部分解,再從父層級裡的子物件來做物件的大部分解。
細節處理:也就是每個模型的Modeling , Texture , Material著墨。
只要有以上的概念就可以在Unity中架構好模擬場景了。