游戲世界之Unity3D的基礎認識


1.寫在前面

Unity3D是由Unity Technologies開發的一個讓你輕松創建諸如三維視頻游戲、建築可視化、實時三維動畫等類型互動內容的多平台的綜合型游戲開發工具,是一個全面整合的專業游戲引擎。Unity類似於Director,Blender game engine, Virtools 或 Torque Game Builder等利用交互的圖型化開發環境為首要方式的軟件其編輯器運行在Windows 和Mac OS X下,可發布游戲至Windows、Mac、Wii、iPhone、Windows phone 8和Android平台。也可以利用Unity web player插件發布網頁游戲,支持Mac 和Windows的網頁瀏覽。它的網頁播放器也被Mac widgets所支持。

Unity3D,簡稱U3D,是德國UnityTechnologies公司所開發的中端游戲引擎。
U3D相對於虛幻3引擎,只能算是小弟級的游戲引擎,但是它在游戲制作上的高效率,以及對應多平台的游戲開發,使得它在國外的獨立游戲制作小組中具有很高的人氣。

U3D的免費版和專業版的區別主要在於畫面濾鏡和底層類庫的使用權限,U3D免費版也是能制作完整游戲的,並且可以發布PC,MAC和Web平台的游戲,移動平台(IOS,Android)和次世代游戲機平台(PS3,XBOX360,Wii)則需要另外的授權。
*Unity3D的開發公司和Adobe公司合作之后,從3.5版本起,U3D增加了Flash的發布功能(需另外授權)。

U3D借鑒了虛幻引擎和一些大型三維動畫軟件的操作理念,因此很容易入門,並且它和其他軟件的協作會很便捷。U3D的軟件界面布局很完善,用戶可以快速的選擇一個適合自己開發習慣的窗口排序。

*如果要和三維動畫軟件做對比的話,我覺得U3D就像是Maya的軟件操作,3dsMax的功能執行,C4D的菜單管理。
新建一個工程目錄時,為了提高場景載入速度,U3D默認是不加載資源包的。因此用戶可根據自己的工程所需,選擇相應的功能包。例如內置的角色控制系統,地形組件,天空盒,畫面濾鏡,腳本集等。
U3D的工程目錄作為資源存放的系統文件夾,可隨時更新和調用,相對於UDK必須提前導入引擎包的形式,U3D更為人性化。我們可以在U3D的工程目錄管理窗口中直接建立文件夾,用來對資源進行存放和分類,例如:scripts(腳本),materials(材質),meshes(網格),scenes(場景),textures(貼圖)等。U3D的文件會自動排列,為了保持我們建立的目錄次序,我們可以在文件名前加入下划線,如:_ script,_material。
U3D可以建立一些基本的幾何體,但是你不能執行建模操作,只能對他們進行一些簡單的整體變形,所以多數的圖形元素,我們需要從外部導入。雖然U3D中可以創建並繪制地形,不過若非很平坦的地形,對於起伏強烈的山地,使用maya創建會更理想一些,因為涉及到貼圖拉伸的問題。
* U3D目前還無法改變模型的軸心點,因此需要在三維軟件中事先完成設置。
U3D的場景單位是米,而maya是厘米,因此軟件的數值上maya需要設定為100倍,才能和引擎中的場景比例匹配。例如,一個引擎中1.7M高的角色,在maya中的高度應該是170單位(厘米)--也可以在導出FBX文件的時候再設置單位,或者在U3D中調整FBX文件的ScaleFactor屬性。當然,用戶也可以自行更改maya的默認單位,不過個人不推薦那么做,因為除了動力學方面的影響,建模時的一些默認數值將會變得巨大(例如Bevel倒角功能)。
*U3D雖然單位是米,但是它默認的ScaleFactor參數是0.01,也就是對應的是maya中厘米;如果在Maya中使用了米為單位,導入U3D中時,還需要手動將ScaleFactor設置為1。
雖然U3D支持導入Maya特有的ma,mb或者3dsMax的Max格式文件,但是讀取會很慢,因此最適合U3D的外部導入3D文件格式是FBX。當將FBX文件放於U3D工程目錄時,U3D會自動讀取FBX中包含的模型材質,並歸於一個獨立的文件夾Materials中。要注意,在U3D中拖拽貼圖到材質球和點擊材質球貼圖方框內的select按鈕是不一樣的,前者會不斷的生成獨立的紋理增加文件量,而后者則是共用一個紋理。
*U3D3.X還無法對多個物體同時賦予相同的材質,因此在導入U3D前,我們應該在Maya中將材質分類好;還要注意模型面的法線朝向,盡量不要出現反面。
提示:Unity4.X版本之后可對多個物體同時賦予材質。
當把prefabs預置物放入場景中,會自動形成一個類似maya渲染代理一樣的幾何體,修改這個幾何體的屬性后,點擊Revert可以返回初始狀態;如果點擊Apply,會直接應用到工程目錄的prefabs中,所有場景中的prefabs都會同時改變,因此要慎用。

Skybox天空盒的創建。游戲中的天空,就是一個包裹場景的幾何體貼圖。對於游戲引擎,是六張覆蓋立方體六個面的無縫天空紋理。U3D的天空盒需要和攝像機或者在渲染設置中進行關聯。
*渲染設置中加入天空材質,可以直接在場景中看到效果;攝像機中連接天空盒,只有執行游戲渲染時,才會在特定攝像機中看到。

U3D中有四種類型的燈光:PointLight,Spotlight,DirectionalLight,AreaLight,AmbientLight。其中,AmbientLight不是獨立的燈光元素,而是位於渲染設置中,可對場景中的背光進行色彩調節(通常是冷色系),用於模擬環境反射光(多為天光)。方向光常用於模擬陽光,燈光的所在位置不影響照明效果,因為它是基於朝向的。

目前U3D的光照系統和場景構建元素還沒有UDK(虛幻引擎開發套件)那么豐富,因此圖形的渲染效果上自然沒有UDK出眾,不過它已經足夠用來開發畫面強勁的次世代游戲,移動平台和網絡游戲更不在話下。

renderPass渲染通道。在U3D中有三種重要的渲染通道,都是基於燈光材質產生的。目前U3D還沒有實現類似maya或者UDK那樣可對材質着色通道進行紋理動畫連接的功能,因此用戶需要自行編寫材質,這在一定程度上限制了創意的發揮。

lightmass質量的設置直接決定着游戲品質。場景中的燈光和陰影是實時計算的,這不會應用於游戲中,游戲會通過燈光貼圖和陰影貼圖來提高畫面的運行效率。對於場景中靜止的物體,我們可以采用各種全局光照明來將燈光效果烘焙到模型對應的貼圖中,這有兩種方法:一種是在繪制模型貼圖時,通過三維軟件的全局光系統(如FG最終聚集,GI全局照明),將燈光效果烘焙;另外就是直接在游戲引擎中烘焙(依賴於引擎的功能)。U3D的燈光系統並沒有UDK那么強悍,尤其在全局照明效果上。

OcclusionCulling是U3D中用於優化場景顯示效率的一個功能,可以很大的降低游戲對系統資源的消耗。它的原理是不繪制在攝像機范圍內看不到的被遮擋物體。
*U3D可以針對web和移動平台做到很大的資源優化,這點是UDK不能比的。

 U3D支持多種語言編寫腳本:C#,JavaScript,Boo。JavaScript腳本較容易上手,常作為初學者或JavaScript編程人員的首選,不過從長遠的擴展來看,C#則是用戶最佳的選擇方案。當然,你也可以在一個游戲設計過程中,同時使用幾種語言的腳本進行組合,因為U3D最終都會將這些語言轉為它內置的編譯語言。

*JavaScript不是Java。

 【總結】

Unity3D具有廣闊的發展前景:通用的軟件操作規范,高效的開發速度,多平台的支持,以及廣泛的編程語言的兼容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM