![unity3D課件第08章模型與動(dòng)畫_第1頁](http://file4.renrendoc.com/view/1821505eb2c561db7fefd7306ecaba3d/1821505eb2c561db7fefd7306ecaba3d1.gif)
![unity3D課件第08章模型與動(dòng)畫_第2頁](http://file4.renrendoc.com/view/1821505eb2c561db7fefd7306ecaba3d/1821505eb2c561db7fefd7306ecaba3d2.gif)
![unity3D課件第08章模型與動(dòng)畫_第3頁](http://file4.renrendoc.com/view/1821505eb2c561db7fefd7306ecaba3d/1821505eb2c561db7fefd7306ecaba3d3.gif)
![unity3D課件第08章模型與動(dòng)畫_第4頁](http://file4.renrendoc.com/view/1821505eb2c561db7fefd7306ecaba3d/1821505eb2c561db7fefd7306ecaba3d4.gif)
![unity3D課件第08章模型與動(dòng)畫_第5頁](http://file4.renrendoc.com/view/1821505eb2c561db7fefd7306ecaba3d/1821505eb2c561db7fefd7306ecaba3d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章模型與動(dòng)畫
1第八章模型與動(dòng)畫1
8.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹Autodesk3DStudioMaxAutodeskMayaCinema4D28.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹2
8.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹Autodesk3DStudioMaxAutodeskMayaCinema4D38.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹3
8.13D模型背景知識(shí)8.1.2 Unity與建模軟件單位的比例關(guān)系為了讓模型在導(dǎo)入U(xiǎn)nity后能夠保持其本來的尺寸,就需要調(diào)整建模軟件的系統(tǒng)單位或者尺寸。在3D建模軟件中,應(yīng)盡量使用“米”制單位。表8-1中展示了建模軟件的系統(tǒng)單位在設(shè)置成“米”制單位后,與Unity系統(tǒng)單位的對(duì)應(yīng)比例。建模軟件建模軟件內(nèi)部米制尺寸/m導(dǎo)入U(xiǎn)nity中的尺寸/m與Unity單位的比例關(guān)系3dsMax10.01100:1Maya11001:100Cinema4D11001:10048.13D模型背景知識(shí)8.1.2 Unity與建模軟件單
8.13D模型背景知識(shí)8.1.2 Unity與建模軟件單位的比例關(guān)系下面將以3dsMax為例,介紹一下參數(shù)設(shè)置調(diào)整的過程(1)打開3dsMax軟件后,打開“自定義”菜單下的“單位設(shè)置”選項(xiàng),如圖8-1所示。(2)在彈出的“單位設(shè)置”對(duì)話框中,將“顯示單位比例”下的“公制”選項(xiàng)修改為“厘米”。如圖8-2所示。(3)點(diǎn)擊對(duì)話框頂部的“系統(tǒng)單位設(shè)置”按鈕,在彈出的“系統(tǒng)單位設(shè)置”對(duì)話框中將單位修改為“厘米”,如圖8-3所示。修改完成后單擊確定完成參數(shù)設(shè)置調(diào)整。
圖8-1自定義菜單 圖8-2單位設(shè)置菜單 圖8-3系統(tǒng)單位設(shè)置菜單58.13D模型背景知識(shí)8.1.2 Unity與建模軟件單
8.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nity下面以3dsMax為例,為讀者演示一遍從建模到將模型導(dǎo)入U(xiǎn)nity的過程。具體步驟如下。(1)首先打開3dsMax,點(diǎn)擊右側(cè)“AECExtended”(AEC擴(kuò)展)中“Foliage”(樹)按鈕,在下方的列表中的模型中任意選擇一種,創(chuàng)建一個(gè)樹模型。如圖8-4所示,這時(shí)就完成了一個(gè)最基本的建模工作。68.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nit
8.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nity(2)點(diǎn)擊窗口左上角的3dsMax標(biāo)志,打開下拉菜單。單擊導(dǎo)出選項(xiàng),如圖8-5所示。然后會(huì)彈出對(duì)話框,選擇導(dǎo)出的路徑并且為導(dǎo)出的文件命名(注意保存類型選擇.FBX),點(diǎn)擊保存按鈕即可導(dǎo)出。(3)將模型導(dǎo)入U(xiǎn)nity中,點(diǎn)擊Unity中菜單欄單擊“Assets”→“ImportNewAssets...”,會(huì)彈出導(dǎo)入資源對(duì)話框,按照模型的路徑找到并選中模型,點(diǎn)擊導(dǎo)入按鈕,完成導(dǎo)入。導(dǎo)入的模型會(huì)保存在Assets文件夾中,開發(fā)者可以在Assets面板中查看以及使用。78.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nit
8.2網(wǎng)格—Mesh8.2.1 網(wǎng)格過濾器(MeshFilter)網(wǎng)格過濾器中有一個(gè)重要的屬性——“Mesh”,用于儲(chǔ)存物體的網(wǎng)格數(shù)據(jù),它可以從資源中拿出網(wǎng)格并將網(wǎng)格傳遞給網(wǎng)格渲染器(MeshRenderer)
,并在屏幕上渲染。在導(dǎo)入模型資源時(shí),Unity會(huì)自動(dòng)創(chuàng)建一個(gè)網(wǎng)格過濾器,如圖8-6所示。圖8-6網(wǎng)格過濾器組件88.2網(wǎng)格—Mesh8.2.1 網(wǎng)格過濾器(MeshF
8.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹(1)Mesh中有一些用于儲(chǔ)存物體的網(wǎng)格數(shù)據(jù)的屬性,這些屬性主要用于儲(chǔ)存網(wǎng)格中各種數(shù)據(jù),并且均以數(shù)組的形式出現(xiàn),詳細(xì)說明如表8-2所示。屬性說明屬性說明vertices網(wǎng)格的頂點(diǎn)數(shù)組normals網(wǎng)格的法線數(shù)組tangents網(wǎng)格的切線數(shù)組uv網(wǎng)格的基礎(chǔ)紋理坐標(biāo)uv2如果存在,這是為網(wǎng)格設(shè)定的第二個(gè)紋理坐標(biāo)subMeshCount子網(wǎng)格的數(shù)量。每種材質(zhì)都有一個(gè)獨(dú)立的網(wǎng)格列表bounds網(wǎng)格的包圍體colors網(wǎng)格的頂點(diǎn)顏色數(shù)組triangles包含所有三角形頂點(diǎn)索引的數(shù)組vertexCount網(wǎng)格中頂點(diǎn)的數(shù)量(只讀)boneWeights每個(gè)頂點(diǎn)的骨骼權(quán)重bindposes綁定的姿勢(shì)。每個(gè)索引綁定的姿勢(shì)使用具有相同索引的骨骼98.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹屬性
8.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹(2)Mesh中有生成或修改物體網(wǎng)格的方法,這些方法主要用于設(shè)置儲(chǔ)存網(wǎng)格各種數(shù)據(jù),并且均以數(shù)組的形式出現(xiàn),詳細(xì)說明如表8-3所示。方法說明方法說明Clear清空所有頂點(diǎn)數(shù)據(jù)和所有三角形索引RecalculateBounds重新計(jì)算從網(wǎng)格包圍體的頂點(diǎn)RecalculateNormals重新計(jì)算網(wǎng)格的法線Optimize顯示優(yōu)化的網(wǎng)格GetTriangles返回網(wǎng)格的三角形列表SetTriangles為網(wǎng)格設(shè)定三角形列表CombineMeshes組合多個(gè)網(wǎng)格到同一個(gè)網(wǎng)格108.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹方法
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(1)首先創(chuàng)建一個(gè)工程項(xiàng)目,并命名為“BNUMeshes”。然后創(chuàng)建地形。(2)創(chuàng)建水。選中“Assets”文件夾,右鍵選擇ImportPackage→Water(ProOnly)導(dǎo)入標(biāo)準(zhǔn)水資源包,如圖8-7所示。然后拖拽DaylightWater到場(chǎng)景中,并調(diào)整水和地形的位置參數(shù),如圖8-9和圖8-10所示,最終實(shí)現(xiàn)如圖8-8的位置效果。
圖8-9水位置參數(shù) 圖8-10地形位置參數(shù)118.2網(wǎng)格—Mesh8.2.3 Mesh的使用 圖8-9
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用
圖8-7導(dǎo)入標(biāo)準(zhǔn)水資源包 圖8-8地形與水面的位置128.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(3)創(chuàng)建兩個(gè)空對(duì)象,分別命名為“Expansion”和“Triangle”,具體步驟為“GameObject”→“CreateEmpty”,如圖8-11所示。然后兩個(gè)空對(duì)象添加網(wǎng)格過濾器,先選中對(duì)象然后單擊菜單“Component”→“Mesh”→“MeshFilter”為對(duì)象添加網(wǎng)格過濾器,如圖8-12所示。
圖8-11創(chuàng)建空對(duì)象圖8-12添加網(wǎng)格過濾器138.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-1
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(4)下面向兩個(gè)空對(duì)象的網(wǎng)格過濾器組件中添加網(wǎng)格屬性。將“Assets\Meshes”文件夾下的“Triangle.FBX”和“Expansion.FBX”模型文件中的網(wǎng)格“Box01”,如圖8-13,分別拖拽到“Expansion”和“Triangle”對(duì)象的網(wǎng)格過濾器組件的“Mesh”屬性中,如圖8-14所示。
圖8-13模型文件中的網(wǎng)格“Box01” 圖8-14網(wǎng)格過濾器組件148.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-13
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(5)創(chuàng)建一個(gè)空對(duì)象,并且命名為“Obj1”,調(diào)整該對(duì)象的位置和大小,具體參數(shù)如圖8-15所示。然后為“Obj1”對(duì)象添加網(wǎng)格過濾器和網(wǎng)格渲染器,具體步驟為選中對(duì)象然后單擊菜單“Component”→“Mesh”→“MeshRenderer”為對(duì)象添加網(wǎng)格渲染器,如圖8-16所示。
圖8-15“Obj1”對(duì)象的位置和大小 圖8-16添加網(wǎng)格渲染器158.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(6)然后“Obj1”對(duì)象添加紋理。將“Assets\Textures”文件夾下的“wenli.tga”紋理文件拖拽到“Obj1”對(duì)象上,然后按照相同的方法再創(chuàng)建4個(gè)對(duì)象,并分別命名為“Obj2”、“Obj3”、“Obj4”、“Obj5”,拖拽后的五個(gè)對(duì)象的網(wǎng)格渲染器的“material”屬性就均被設(shè)置為“wenli”材質(zhì),如圖8-17所示。圖8-17“Obj1”對(duì)象的網(wǎng)格渲染器組件168.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-17
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(7)單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Create”→“C#Script”創(chuàng)建腳本。命名為“BNUMesh.cs”,然后雙擊打開腳本,開始“BNUMesh.cs”腳本的編寫,本腳本主要用于通過控制網(wǎng)格屬性來實(shí)現(xiàn)物體變形的效果
4 publicclassBNUMesh:MonoBehaviour{5 Meshmesh; //物體的網(wǎng)格對(duì)象6 inttime; //用于記錄時(shí)間7 publicGameObject[]g; //包含網(wǎng)格的對(duì)象數(shù)組8 Mesh[]m; //網(wǎng)格對(duì)象數(shù)組9 publicList<Vector3>vertice; //網(wǎng)格的頂點(diǎn)數(shù)組10 publicList<int>triangle; //包含所有三角形頂點(diǎn)索引的數(shù)組11 publicList<Vector2>uv; //網(wǎng)格的基礎(chǔ)紋理坐標(biāo)12 publicList<Vector3>normal; //網(wǎng)格的法線數(shù)組13 publicList<Vector4>tangent; //網(wǎng)格的切線數(shù)組14 boolbian=true; //物體一次變形是否完成15 ints=0; //物體變形形狀標(biāo)志位178.2網(wǎng)格—Mesh8.2.3 Mesh的使用17
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(8)在“BNUMesh.cs”腳本中Start方法的主要功能是系統(tǒng)通過在場(chǎng)景加載時(shí)調(diào)用此方法來實(shí)現(xiàn)物體網(wǎng)格的細(xì)化,Start方法的具體代碼如下。詳見課本(9)在“BNUMesh.cs”腳本中Update方法的主要功能是系統(tǒng)通過調(diào)用此方法來不斷改變網(wǎng)格數(shù)據(jù)使物體不斷變形。188.2網(wǎng)格—Mesh8.2.3 Mesh的使用18
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(10)將腳本“BNUMesh.cs”分別拖拽到上面創(chuàng)建的六個(gè)游戲?qū)ο笊?。然后單擊游戲?qū)ο螅趯傩圆榭雌髦锌煽吹侥_本組件的內(nèi)容,然后設(shè)置參數(shù),如圖8-18所示。圖8-18腳本參數(shù)設(shè)置198.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-18
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(11)單擊游戲運(yùn)行按鈕,觀察效果。在Game窗口中可以看到地形和不斷變形的六個(gè)物體。如圖8-19和圖8-20所示。
圖8-19案例運(yùn)行效果圖1 圖8-20案例運(yùn)行效果圖2208.2網(wǎng)格—Mesh8.2.3 Mesh的使用 圖8
8.3骨骼結(jié)構(gòu)映射——AvatarAvatar是Mecanim動(dòng)畫系統(tǒng)中自帶的人形骨骼結(jié)構(gòu)與模型文件中的骨骼結(jié)構(gòu)之間的映射,將帶有動(dòng)畫的模型文件資源導(dǎo)入U(xiǎn)nity3D后,系統(tǒng)會(huì)自動(dòng)為模型文件生成一個(gè)Avatar文件作為其子對(duì)象,如圖8-21所示。
圖8-21Avatar文件圖 218.3骨骼結(jié)構(gòu)映射——AvatarAvatar是Mecan
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.1 Avatar的創(chuàng)建單擊剛剛的人形角色模型文件,在Inspector視口中選擇Rig選項(xiàng),如圖8-22所示。單擊AimationType下拉按鈕,選擇Humanoid選項(xiàng),然后點(diǎn)擊Apply按鈕,視口變成如圖8-23所示。完成后該模型文件已經(jīng)被設(shè)置為人形角色模型,并且系統(tǒng)會(huì)為其創(chuàng)建Avatar文件。
8-22Rig選項(xiàng)圖 8-23Humanoid模式228.3骨骼結(jié)構(gòu)映射——Avatar8.3.1 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(1)在Assets面板中單擊模型文件下子對(duì)象Avatar文件,然后單擊Inspector面板中的“ConfigureAvatar”按鈕,如圖8-24所示。此時(shí)系統(tǒng)會(huì)關(guān)閉原場(chǎng)景窗口,進(jìn)入Avatar的配置窗口。配置窗口是系統(tǒng)開啟的一個(gè)臨時(shí)Scene視口,并且配置結(jié)束后該臨時(shí)窗口會(huì)自動(dòng)關(guān)閉。
圖8-24 圖8-25 238.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(2)配置窗口的Scene窗口中會(huì)出現(xiàn)導(dǎo)入人物模型的骨骼,如圖8-26所示。右側(cè)為Avatar的Inspector面板,配置窗口與平時(shí)開發(fā)用的Scene窗口相同,更改Inspector中的參數(shù)后也會(huì)改變顯示在Scene視口中的模型。圖8-26Scene視口248.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(3)在配置窗口右側(cè)的Avatar配置面板中可以按部位對(duì)人形角色模型進(jìn)行配置,此面板中共分為“Body”、“Head”、“LeftHand”和“RightHand”四個(gè)方面,分別對(duì)應(yīng)四個(gè)按鈕,如圖8-25所示。點(diǎn)擊不同的按鈕會(huì)出現(xiàn)不同部位的骨骼配置窗口,并且各個(gè)部位的配置互不影響,如圖8-27和圖8-28所示。
圖8-27頭部骨骼配置窗口 圖8-28手部骨骼配置窗口258.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(4)一般情況下開發(fā)者創(chuàng)建了Avatar后Uniy3D都會(huì)對(duì)其正確的初始化,但有時(shí)候如果出于模型文件本身的問題,Unity3D無法識(shí)別到每個(gè)部位相應(yīng)的骨骼,此時(shí)錯(cuò)誤部位就會(huì)呈現(xiàn)紅色,如圖8-29所示。
圖8-29錯(cuò)誤部位呈紅色
268.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(5)開發(fā)者此時(shí)需要手動(dòng)更改錯(cuò)誤部位的骨骼。首先在Hierarchy窗口的骨骼列表中找到正確的骨骼,如圖8-30所示。然后將正確的骨骼拖拽到Inspector視口中該骨骼相對(duì)應(yīng)的位置上,若拖拽到正確位置后,錯(cuò)誤的部位會(huì)變回綠色,Avatar的也就配置完成了。圖8-30Hierarchy窗口中的骨骼列表278.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(1)點(diǎn)擊Avatar視口中的Muscles按鈕進(jìn)入Muscle的配置窗口。該窗口和剛剛的骨骼配置窗口類似,由預(yù)覽窗口、設(shè)置窗口及附加配置窗口三部分組成。(2)下面以左胳膊的骨骼為例對(duì)參數(shù)調(diào)節(jié)進(jìn)行講解,首先選中設(shè)置窗口中LeftArm參數(shù),其附帶的子參數(shù)也會(huì)隨之展開,包括肩部的上下和前后移動(dòng),胳膊的上下、前后移動(dòng)和轉(zhuǎn)動(dòng)等等,如圖8-31所示。
圖8-31Muscle配置窗口
288.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(3)讀者可以通過拖動(dòng)參數(shù)對(duì)應(yīng)的拖拉條,調(diào)節(jié)相對(duì)應(yīng)部位骨骼的運(yùn)動(dòng)范圍,同時(shí)在Scene窗口中對(duì)應(yīng)的骨骼上會(huì)出現(xiàn)一個(gè)扇形區(qū)域,表示骨骼旋轉(zhuǎn)過的范圍,如圖8-32所示,能夠幫助開發(fā)者調(diào)節(jié)骨骼的動(dòng)作范圍。
圖8-32Scene視圖298.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(4)在下方AdditionalSetting窗口中還可以進(jìn)行其它的設(shè)置,比如UpperArmTwist參數(shù),如圖8-33所示。讀者可通過拖動(dòng)其拖拉條該骨骼的運(yùn)動(dòng)范圍進(jìn)行調(diào)整。設(shè)置完畢之后點(diǎn)擊配置窗口右下角的“Done”按鈕結(jié)束Muscle的配置。
圖8-33其它設(shè)置窗口
308.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(5)返回播放任務(wù)模型的動(dòng)畫,在Assets面板中找到導(dǎo)入的模型資源,點(diǎn)擊其中的動(dòng)畫文件,如圖8-34所示。在動(dòng)畫的Inspetor面板下方會(huì)播放該動(dòng)畫,點(diǎn)擊上方的進(jìn)度條可以按時(shí)間查看動(dòng)畫每幀的動(dòng)作,如圖8-35所示。
8-34模型文件下的動(dòng)畫文件318.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置
8-35播放動(dòng)畫文件328.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle8.4動(dòng)畫控制器8.4.1 創(chuàng)建動(dòng)畫控制器在Assets面板中單擊鼠標(biāo)右鍵“Create”→“AnimatorController”,創(chuàng)建一個(gè)動(dòng)畫控制器,如圖8-36所示。動(dòng)畫控制器的顯示和修改在獨(dú)立的動(dòng)畫編輯界面,雙擊該動(dòng)畫控制器,進(jìn)入動(dòng)畫控制器編輯窗口,如圖8-37所示
圖8-36創(chuàng)建動(dòng)畫控制器 圖8-37動(dòng)畫控制器編輯窗口338.4動(dòng)畫控制器8.4.1 創(chuàng)建動(dòng)畫控制器 圖8-38.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置1、動(dòng)畫狀態(tài)機(jī)和過渡條件動(dòng)畫狀態(tài)機(jī):一個(gè)角色在游戲中的不同狀態(tài)下可以作出不同的動(dòng)作,狀態(tài)機(jī)來更為方便地控制角色動(dòng)畫。每一個(gè)動(dòng)畫控制器中的狀態(tài)機(jī)會(huì)有不同的顏色,每一個(gè)動(dòng)畫狀態(tài)機(jī)都對(duì)應(yīng)一個(gè)動(dòng)作。動(dòng)畫狀態(tài)機(jī)的參數(shù)含義如表8-4所示
348.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 348.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置動(dòng)畫狀態(tài)機(jī)之間的箭頭表示兩個(gè)動(dòng)畫之間的連接,將鼠標(biāo)箭頭放在動(dòng)畫狀態(tài)單元上,右鍵點(diǎn)擊“MakeTransition”創(chuàng)建動(dòng)畫過渡條件,并再次點(diǎn)擊另一個(gè)動(dòng)畫狀態(tài)單元上,完成動(dòng)畫過渡條件的連接
名稱說明StateMachine動(dòng)畫狀態(tài)機(jī),可包含若干個(gè)動(dòng)畫狀態(tài)單元State動(dòng)畫狀態(tài)單元,動(dòng)畫狀態(tài)機(jī)機(jī)制中的最小單元Sub-StateMachine子動(dòng)畫狀態(tài)機(jī),可包含若干個(gè)動(dòng)畫狀態(tài)單元或子動(dòng)畫狀態(tài)機(jī)BlendTree動(dòng)畫混合樹,一種特殊的動(dòng)畫狀態(tài)單元AnyState特殊的狀態(tài)單元,表示任意動(dòng)畫狀態(tài)Entry本動(dòng)畫狀態(tài)機(jī)的入口Exit本動(dòng)畫狀態(tài)機(jī)的出口358.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 名稱說明S8.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置2、過渡條件的參數(shù)設(shè)置創(chuàng)建過渡條件的參數(shù)的方法,在動(dòng)畫狀態(tài)機(jī)窗口左側(cè)中的Parameters視口,點(diǎn)擊右上角的“+”號(hào)可選擇想要添加的參數(shù)類型,如圖8-39所示。然后可以為參數(shù)命名,并為其設(shè)置初始值,如圖8-40所示。
圖8-39新建參數(shù) 圖8-40參數(shù)設(shè)置368.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-8.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置單擊想要添加參數(shù)的過渡條件,然后在Inspector視口中的Conditions列表中單擊“+”號(hào)創(chuàng)建參數(shù),選擇所需的參數(shù),如圖8-41。然后為參數(shù)添加對(duì)比條件,不同類型的參數(shù)對(duì)比條件也不同,比如Float類型參數(shù)的對(duì)比條件有“Greater”和“Less”,如圖8-42所示。
圖8-41為過渡條件創(chuàng)建參數(shù) 圖8-42為參數(shù)添加對(duì)比條件378.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置圖8-48.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(1)首先創(chuàng)建一個(gè)工程項(xiàng)目,并命名為“BNUAnimator”。然后將隨書光盤的資源目錄下第8章的“BNUAnimator”工程文件下的“Animations”、“Models”、“Textures”等文件夾依次拷備進(jìn)項(xiàng)目中的“Assets”資源文件夾下。然后創(chuàng)建一個(gè)名為“AniControllers”的空文件夾,用于存放項(xiàng)目所需的動(dòng)畫控制器文件。(2)在AniControllers文件夾下單擊鼠標(biāo)右鍵“Create”→“AnimatorController”創(chuàng)建一個(gè)動(dòng)畫控制器,并命名為“AnimatorController”。雙擊該動(dòng)畫控制器,進(jìn)入動(dòng)畫控制器編輯窗口。(3)向編輯窗口拖拽進(jìn)“Boy@ForwardKick”、“Boy@KickBack”和“Boy@Idle”三個(gè)動(dòng)畫文件
388.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 388.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(4)將Idle動(dòng)畫狀態(tài)單元設(shè)置為默認(rèn)動(dòng)畫單元。右鍵點(diǎn)擊Idle動(dòng)畫狀態(tài)單元,在菜單中選擇“SetasLayerDefultState”,如圖8-43所示。修改完成后Idle動(dòng)畫狀態(tài)單元會(huì)變?yōu)辄S色,然后為各個(gè)動(dòng)畫狀態(tài)單元添加過渡條件,如圖8-44所示。
圖8-43添加動(dòng)畫單元 8-44為動(dòng)畫單元添加過渡398.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-48.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(5)動(dòng)畫單元和過渡添加完畢后,下面向游戲控制器中添加實(shí)現(xiàn)過渡條件所需的參數(shù)。單擊Parameters視口上的“+”號(hào),添加一個(gè)Float類型的參數(shù),并命名為“AniFlag”,設(shè)置其初始值為-1.0,如圖8-45所示。
圖8-45創(chuàng)建參數(shù)
408.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-8.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(6)然后選中任意一個(gè)過渡條件,在Inspector視口中的Conditions列表中點(diǎn)擊“+”號(hào)創(chuàng)建參數(shù)并進(jìn)行參數(shù)的設(shè)置(7)在Assets面板下新建一個(gè)場(chǎng)景,雙擊打開場(chǎng)景。在場(chǎng)景中創(chuàng)建一個(gè)地形,給地形添加綠色草地紋理,然后為其添加天空盒,并調(diào)整光照方向至合適角度,如圖8-46所示。
418.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 418.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(8)向場(chǎng)景中添加人物模型,將Models文件夾下的fighter模型文件拖拽到場(chǎng)景中,然后為其添加貼圖,如圖8-47所示。
圖8-47添加人物模型
428.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖88.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(9)接下來需要?jiǎng)?chuàng)建UI界面,點(diǎn)擊“GameObject”→“UI”→“Button”創(chuàng)建兩個(gè)按鈕,并分別命名為“Button1”和“Button2”按鈕。這兩個(gè)按鈕分別用于對(duì)兩個(gè)動(dòng)畫的控制,當(dāng)按下任意一個(gè)按鈕時(shí),系統(tǒng)將啟動(dòng)對(duì)應(yīng)的動(dòng)畫過渡。(10)下面為人物模型添加動(dòng)畫組件。選中“fighter”游戲?qū)ο?,將之前?chuàng)建的“AnimatorController”動(dòng)畫控制器拖拽到Animator組件下的“Controller”框中,如圖8-48所示。
代碼見課本
438.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 438.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(10)代碼編寫完成后將其掛載到fighter游戲?qū)ο笊?,然后點(diǎn)擊Button1和Button2兩個(gè)按鈕對(duì)象,將fighter對(duì)象拖拽到Inspector面板下方的OnClick方法的目標(biāo)對(duì)象上,然后選擇相應(yīng)的方法,如圖8-49所示。
圖8-49掛載腳本和方法448.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-498.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(11)點(diǎn)擊運(yùn)行按鈕之后,案例的運(yùn)行效果會(huì)顯示在Game窗口中,點(diǎn)擊屏幕上的兩個(gè)按鈕,可以使場(chǎng)景中的小男孩做出不同的動(dòng)作,如圖8-50和8-51所示。
圖8-50案例運(yùn)行效果一 圖8-51案例運(yùn)行效果二458.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8.5角色動(dòng)畫的重定向Unity3D提供了一套用于人形角色動(dòng)畫的重定向機(jī)制。游戲美工開發(fā)人員可以獨(dú)立地制作好所有角色模型,游戲動(dòng)畫開發(fā)人員也可獨(dú)立地進(jìn)行動(dòng)畫的制作,兩者不互干涉,
8.5.1 重定向的原理Mecanim動(dòng)畫系統(tǒng)提供了一套簡(jiǎn)化過的人形角色骨骼架構(gòu)。簡(jiǎn)單來說,Avatar文件就是模型骨骼架構(gòu)與系統(tǒng)自帶骨骼架構(gòu)間的橋梁,重定向的模型骨骼架構(gòu)都要通過Avatar與自帶骨骼架構(gòu)搭建映射。映射后的模型骨骼可能通過Avatar驅(qū)動(dòng)系統(tǒng)自帶骨骼運(yùn)動(dòng),這樣就會(huì)產(chǎn)生一套通用的骨骼動(dòng)畫,其他角色模型只需借助這套通用的骨骼動(dòng)畫,就可以做出與原模型相同的動(dòng)作,即實(shí)現(xiàn)角色動(dòng)畫的重定向。
468.5角色動(dòng)畫的重定向Unity3D提供了一套用于人形角8.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(1)首先創(chuàng)建一個(gè)工程項(xiàng)目,并命名為“BNUAiControl”,然后將隨書光盤的資源目錄下第8章的“BNUAnimator”工程文件下的“Animations”、“Models”、“Textures”等文件夾依次拷備進(jìn)項(xiàng)目中的“Assets”資源文件夾下。然后創(chuàng)建一個(gè)名為“AniControllers”的空文件夾,用于存放項(xiàng)目所需的動(dòng)畫控制器文件。(2)在AniControllers文件夾下單擊鼠標(biāo)右鍵“Create”→“AnimatorController”創(chuàng)建一個(gè)動(dòng)畫控制器,并命名為“AnimatorController”。雙擊該動(dòng)畫控制器,然后將“Boy@JumpTurnKick”和“Boy@RaceSideKick”兩個(gè)動(dòng)畫文件拖拽進(jìn)窗口,創(chuàng)建兩個(gè)動(dòng)畫狀態(tài)單元,如圖8-52所示。
圖8-52創(chuàng)建動(dòng)畫控制器
478.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 圖8.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(3)動(dòng)畫單元和過渡添加完畢后,下面向游戲控制器中添加實(shí)現(xiàn)過渡條件所需的參數(shù)。單擊Parameters視口上的“+”號(hào),添加兩個(gè)Bool類型的參數(shù),并分別命名為“JtoR”和“RtoJ”,設(shè)置其初始值為false,如圖8-53所示。(4)然后選中任意一個(gè)過渡條件,在Inspector視口中的Conditions列表中點(diǎn)擊“+”號(hào)創(chuàng)建參數(shù),并進(jìn)行參數(shù)的設(shè)置。
488.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 488.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(5)在Assets面板下新建一個(gè)場(chǎng)景,雙擊打開場(chǎng)景。在場(chǎng)景中創(chuàng)建一個(gè)地形,給地形添加綠色草地紋理,然后為其添加天空盒,并調(diào)整光照方向至合適角度,如圖8-54所示。
圖8-54添加地形和天空盒圖
498.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 圖8.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(6)向場(chǎng)景中添加人物模型,將Models文件夾下的Boy模型文件和Girl模型文件拖拽到場(chǎng)景中,然后為其添加貼圖,如圖8-55所示。
508.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 508.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(7)接下來需要?jiǎng)?chuàng)建UI界面,點(diǎn)擊“GameObject”→“UI”→“Button”創(chuàng)建兩個(gè)按鈕,并分別命名為“Button1”和“Button2”按鈕。這兩個(gè)按鈕分別用于對(duì)兩個(gè)動(dòng)畫的控制,當(dāng)按下任意一個(gè)按鈕時(shí),系統(tǒng)將啟動(dòng)對(duì)應(yīng)的動(dòng)畫過渡。(8)下面為人物模型添加動(dòng)畫組件。選中“Boy”和“Girl”游戲?qū)ο?,將之前?chuàng)建的“AnimatorController”動(dòng)畫控制器拖拽到Animator組件下的“Controller”框中,然后再新建一個(gè)C#腳本,并將其命名為“BNUAniControl.cs”。詳細(xì)代碼見課本。
518.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 518.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(9)代碼編寫完成后將其掛載到Boy游戲?qū)ο笊?,然后點(diǎn)擊Button1和Button2兩個(gè)按鈕對(duì)象,將Boy對(duì)象拖拽到Inspector面板下方的兩個(gè)按鈕的OnClick方法的目標(biāo)對(duì)象上,然后選擇相應(yīng)的方法,如圖8-56所示。
圖8-56掛載腳本528.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 圖8-58.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用(10)接下來點(diǎn)擊運(yùn)行按鈕,其運(yùn)行效果就會(huì)呈現(xiàn)在Game窗口中,當(dāng)讀者點(diǎn)擊任意一個(gè)按鈕時(shí),兩個(gè)游戲角色對(duì)象就會(huì)做出相同的動(dòng)作,如圖8-57和圖8-58所示。兩個(gè)角色對(duì)象通過Mecanim中的動(dòng)畫重定向功能,同時(shí)播放同一個(gè)動(dòng)畫。
圖8-57案例運(yùn)行效果一 圖8-58案例運(yùn)行效果二538.5角色動(dòng)畫的重定向8.5.2 重定向的應(yīng)用 圖8第八章模型與動(dòng)畫
54第八章模型與動(dòng)畫1
8.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹Autodesk3DStudioMaxAutodeskMayaCinema4D558.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹2
8.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹Autodesk3DStudioMaxAutodeskMayaCinema4D568.13D模型背景知識(shí)8.1.1主流3D建模軟件的介紹3
8.13D模型背景知識(shí)8.1.2 Unity與建模軟件單位的比例關(guān)系為了讓模型在導(dǎo)入U(xiǎn)nity后能夠保持其本來的尺寸,就需要調(diào)整建模軟件的系統(tǒng)單位或者尺寸。在3D建模軟件中,應(yīng)盡量使用“米”制單位。表8-1中展示了建模軟件的系統(tǒng)單位在設(shè)置成“米”制單位后,與Unity系統(tǒng)單位的對(duì)應(yīng)比例。建模軟件建模軟件內(nèi)部米制尺寸/m導(dǎo)入U(xiǎn)nity中的尺寸/m與Unity單位的比例關(guān)系3dsMax10.01100:1Maya11001:100Cinema4D11001:100578.13D模型背景知識(shí)8.1.2 Unity與建模軟件單
8.13D模型背景知識(shí)8.1.2 Unity與建模軟件單位的比例關(guān)系下面將以3dsMax為例,介紹一下參數(shù)設(shè)置調(diào)整的過程(1)打開3dsMax軟件后,打開“自定義”菜單下的“單位設(shè)置”選項(xiàng),如圖8-1所示。(2)在彈出的“單位設(shè)置”對(duì)話框中,將“顯示單位比例”下的“公制”選項(xiàng)修改為“厘米”。如圖8-2所示。(3)點(diǎn)擊對(duì)話框頂部的“系統(tǒng)單位設(shè)置”按鈕,在彈出的“系統(tǒng)單位設(shè)置”對(duì)話框中將單位修改為“厘米”,如圖8-3所示。修改完成后單擊確定完成參數(shù)設(shè)置調(diào)整。
圖8-1自定義菜單 圖8-2單位設(shè)置菜單 圖8-3系統(tǒng)單位設(shè)置菜單588.13D模型背景知識(shí)8.1.2 Unity與建模軟件單
8.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nity下面以3dsMax為例,為讀者演示一遍從建模到將模型導(dǎo)入U(xiǎn)nity的過程。具體步驟如下。(1)首先打開3dsMax,點(diǎn)擊右側(cè)“AECExtended”(AEC擴(kuò)展)中“Foliage”(樹)按鈕,在下方的列表中的模型中任意選擇一種,創(chuàng)建一個(gè)樹模型。如圖8-4所示,這時(shí)就完成了一個(gè)最基本的建模工作。598.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nit
8.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nity(2)點(diǎn)擊窗口左上角的3dsMax標(biāo)志,打開下拉菜單。單擊導(dǎo)出選項(xiàng),如圖8-5所示。然后會(huì)彈出對(duì)話框,選擇導(dǎo)出的路徑并且為導(dǎo)出的文件命名(注意保存類型選擇.FBX),點(diǎn)擊保存按鈕即可導(dǎo)出。(3)將模型導(dǎo)入U(xiǎn)nity中,點(diǎn)擊Unity中菜單欄單擊“Assets”→“ImportNewAssets...”,會(huì)彈出導(dǎo)入資源對(duì)話框,按照模型的路徑找到并選中模型,點(diǎn)擊導(dǎo)入按鈕,完成導(dǎo)入。導(dǎo)入的模型會(huì)保存在Assets文件夾中,開發(fā)者可以在Assets面板中查看以及使用。608.13D模型背景知識(shí)8.1.3 將3D模型導(dǎo)入U(xiǎn)nit
8.2網(wǎng)格—Mesh8.2.1 網(wǎng)格過濾器(MeshFilter)網(wǎng)格過濾器中有一個(gè)重要的屬性——“Mesh”,用于儲(chǔ)存物體的網(wǎng)格數(shù)據(jù),它可以從資源中拿出網(wǎng)格并將網(wǎng)格傳遞給網(wǎng)格渲染器(MeshRenderer)
,并在屏幕上渲染。在導(dǎo)入模型資源時(shí),Unity會(huì)自動(dòng)創(chuàng)建一個(gè)網(wǎng)格過濾器,如圖8-6所示。圖8-6網(wǎng)格過濾器組件618.2網(wǎng)格—Mesh8.2.1 網(wǎng)格過濾器(MeshF
8.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹(1)Mesh中有一些用于儲(chǔ)存物體的網(wǎng)格數(shù)據(jù)的屬性,這些屬性主要用于儲(chǔ)存網(wǎng)格中各種數(shù)據(jù),并且均以數(shù)組的形式出現(xiàn),詳細(xì)說明如表8-2所示。屬性說明屬性說明vertices網(wǎng)格的頂點(diǎn)數(shù)組normals網(wǎng)格的法線數(shù)組tangents網(wǎng)格的切線數(shù)組uv網(wǎng)格的基礎(chǔ)紋理坐標(biāo)uv2如果存在,這是為網(wǎng)格設(shè)定的第二個(gè)紋理坐標(biāo)subMeshCount子網(wǎng)格的數(shù)量。每種材質(zhì)都有一個(gè)獨(dú)立的網(wǎng)格列表bounds網(wǎng)格的包圍體colors網(wǎng)格的頂點(diǎn)顏色數(shù)組triangles包含所有三角形頂點(diǎn)索引的數(shù)組vertexCount網(wǎng)格中頂點(diǎn)的數(shù)量(只讀)boneWeights每個(gè)頂點(diǎn)的骨骼權(quán)重bindposes綁定的姿勢(shì)。每個(gè)索引綁定的姿勢(shì)使用具有相同索引的骨骼628.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹屬性
8.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹(2)Mesh中有生成或修改物體網(wǎng)格的方法,這些方法主要用于設(shè)置儲(chǔ)存網(wǎng)格各種數(shù)據(jù),并且均以數(shù)組的形式出現(xiàn),詳細(xì)說明如表8-3所示。方法說明方法說明Clear清空所有頂點(diǎn)數(shù)據(jù)和所有三角形索引RecalculateBounds重新計(jì)算從網(wǎng)格包圍體的頂點(diǎn)RecalculateNormals重新計(jì)算網(wǎng)格的法線Optimize顯示優(yōu)化的網(wǎng)格GetTriangles返回網(wǎng)格的三角形列表SetTriangles為網(wǎng)格設(shè)定三角形列表CombineMeshes組合多個(gè)網(wǎng)格到同一個(gè)網(wǎng)格638.2網(wǎng)格—Mesh8.2.2 Mesh屬性和方法介紹方法
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(1)首先創(chuàng)建一個(gè)工程項(xiàng)目,并命名為“BNUMeshes”。然后創(chuàng)建地形。(2)創(chuàng)建水。選中“Assets”文件夾,右鍵選擇ImportPackage→Water(ProOnly)導(dǎo)入標(biāo)準(zhǔn)水資源包,如圖8-7所示。然后拖拽DaylightWater到場(chǎng)景中,并調(diào)整水和地形的位置參數(shù),如圖8-9和圖8-10所示,最終實(shí)現(xiàn)如圖8-8的位置效果。
圖8-9水位置參數(shù) 圖8-10地形位置參數(shù)648.2網(wǎng)格—Mesh8.2.3 Mesh的使用 圖8-9
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用
圖8-7導(dǎo)入標(biāo)準(zhǔn)水資源包 圖8-8地形與水面的位置658.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(3)創(chuàng)建兩個(gè)空對(duì)象,分別命名為“Expansion”和“Triangle”,具體步驟為“GameObject”→“CreateEmpty”,如圖8-11所示。然后兩個(gè)空對(duì)象添加網(wǎng)格過濾器,先選中對(duì)象然后單擊菜單“Component”→“Mesh”→“MeshFilter”為對(duì)象添加網(wǎng)格過濾器,如圖8-12所示。
圖8-11創(chuàng)建空對(duì)象圖8-12添加網(wǎng)格過濾器668.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-1
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(4)下面向兩個(gè)空對(duì)象的網(wǎng)格過濾器組件中添加網(wǎng)格屬性。將“Assets\Meshes”文件夾下的“Triangle.FBX”和“Expansion.FBX”模型文件中的網(wǎng)格“Box01”,如圖8-13,分別拖拽到“Expansion”和“Triangle”對(duì)象的網(wǎng)格過濾器組件的“Mesh”屬性中,如圖8-14所示。
圖8-13模型文件中的網(wǎng)格“Box01” 圖8-14網(wǎng)格過濾器組件678.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-13
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(5)創(chuàng)建一個(gè)空對(duì)象,并且命名為“Obj1”,調(diào)整該對(duì)象的位置和大小,具體參數(shù)如圖8-15所示。然后為“Obj1”對(duì)象添加網(wǎng)格過濾器和網(wǎng)格渲染器,具體步驟為選中對(duì)象然后單擊菜單“Component”→“Mesh”→“MeshRenderer”為對(duì)象添加網(wǎng)格渲染器,如圖8-16所示。
圖8-15“Obj1”對(duì)象的位置和大小 圖8-16添加網(wǎng)格渲染器688.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(6)然后“Obj1”對(duì)象添加紋理。將“Assets\Textures”文件夾下的“wenli.tga”紋理文件拖拽到“Obj1”對(duì)象上,然后按照相同的方法再創(chuàng)建4個(gè)對(duì)象,并分別命名為“Obj2”、“Obj3”、“Obj4”、“Obj5”,拖拽后的五個(gè)對(duì)象的網(wǎng)格渲染器的“material”屬性就均被設(shè)置為“wenli”材質(zhì),如圖8-17所示。圖8-17“Obj1”對(duì)象的網(wǎng)格渲染器組件698.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-17
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(7)單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Create”→“C#Script”創(chuàng)建腳本。命名為“BNUMesh.cs”,然后雙擊打開腳本,開始“BNUMesh.cs”腳本的編寫,本腳本主要用于通過控制網(wǎng)格屬性來實(shí)現(xiàn)物體變形的效果
4 publicclassBNUMesh:MonoBehaviour{5 Meshmesh; //物體的網(wǎng)格對(duì)象6 inttime; //用于記錄時(shí)間7 publicGameObject[]g; //包含網(wǎng)格的對(duì)象數(shù)組8 Mesh[]m; //網(wǎng)格對(duì)象數(shù)組9 publicList<Vector3>vertice; //網(wǎng)格的頂點(diǎn)數(shù)組10 publicList<int>triangle; //包含所有三角形頂點(diǎn)索引的數(shù)組11 publicList<Vector2>uv; //網(wǎng)格的基礎(chǔ)紋理坐標(biāo)12 publicList<Vector3>normal; //網(wǎng)格的法線數(shù)組13 publicList<Vector4>tangent; //網(wǎng)格的切線數(shù)組14 boolbian=true; //物體一次變形是否完成15 ints=0; //物體變形形狀標(biāo)志位708.2網(wǎng)格—Mesh8.2.3 Mesh的使用17
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(8)在“BNUMesh.cs”腳本中Start方法的主要功能是系統(tǒng)通過在場(chǎng)景加載時(shí)調(diào)用此方法來實(shí)現(xiàn)物體網(wǎng)格的細(xì)化,Start方法的具體代碼如下。詳見課本(9)在“BNUMesh.cs”腳本中Update方法的主要功能是系統(tǒng)通過調(diào)用此方法來不斷改變網(wǎng)格數(shù)據(jù)使物體不斷變形。718.2網(wǎng)格—Mesh8.2.3 Mesh的使用18
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(10)將腳本“BNUMesh.cs”分別拖拽到上面創(chuàng)建的六個(gè)游戲?qū)ο笊?。然后單擊游戲?qū)ο?,在屬性查看器中可看到腳本組件的內(nèi)容,然后設(shè)置參數(shù),如圖8-18所示。圖8-18腳本參數(shù)設(shè)置728.2網(wǎng)格—Mesh8.2.3 Mesh的使用圖8-18
8.2網(wǎng)格—Mesh8.2.3 Mesh的使用(11)單擊游戲運(yùn)行按鈕,觀察效果。在Game窗口中可以看到地形和不斷變形的六個(gè)物體。如圖8-19和圖8-20所示。
圖8-19案例運(yùn)行效果圖1 圖8-20案例運(yùn)行效果圖2738.2網(wǎng)格—Mesh8.2.3 Mesh的使用 圖8
8.3骨骼結(jié)構(gòu)映射——AvatarAvatar是Mecanim動(dòng)畫系統(tǒng)中自帶的人形骨骼結(jié)構(gòu)與模型文件中的骨骼結(jié)構(gòu)之間的映射,將帶有動(dòng)畫的模型文件資源導(dǎo)入U(xiǎn)nity3D后,系統(tǒng)會(huì)自動(dòng)為模型文件生成一個(gè)Avatar文件作為其子對(duì)象,如圖8-21所示。
圖8-21Avatar文件圖 748.3骨骼結(jié)構(gòu)映射——AvatarAvatar是Mecan
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.1 Avatar的創(chuàng)建單擊剛剛的人形角色模型文件,在Inspector視口中選擇Rig選項(xiàng),如圖8-22所示。單擊AimationType下拉按鈕,選擇Humanoid選項(xiàng),然后點(diǎn)擊Apply按鈕,視口變成如圖8-23所示。完成后該模型文件已經(jīng)被設(shè)置為人形角色模型,并且系統(tǒng)會(huì)為其創(chuàng)建Avatar文件。
8-22Rig選項(xiàng)圖 8-23Humanoid模式758.3骨骼結(jié)構(gòu)映射——Avatar8.3.1 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(1)在Assets面板中單擊模型文件下子對(duì)象Avatar文件,然后單擊Inspector面板中的“ConfigureAvatar”按鈕,如圖8-24所示。此時(shí)系統(tǒng)會(huì)關(guān)閉原場(chǎng)景窗口,進(jìn)入Avatar的配置窗口。配置窗口是系統(tǒng)開啟的一個(gè)臨時(shí)Scene視口,并且配置結(jié)束后該臨時(shí)窗口會(huì)自動(dòng)關(guān)閉。
圖8-24 圖8-25 768.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(2)配置窗口的Scene窗口中會(huì)出現(xiàn)導(dǎo)入人物模型的骨骼,如圖8-26所示。右側(cè)為Avatar的Inspector面板,配置窗口與平時(shí)開發(fā)用的Scene窗口相同,更改Inspector中的參數(shù)后也會(huì)改變顯示在Scene視口中的模型。圖8-26Scene視口778.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(3)在配置窗口右側(cè)的Avatar配置面板中可以按部位對(duì)人形角色模型進(jìn)行配置,此面板中共分為“Body”、“Head”、“LeftHand”和“RightHand”四個(gè)方面,分別對(duì)應(yīng)四個(gè)按鈕,如圖8-25所示。點(diǎn)擊不同的按鈕會(huì)出現(xiàn)不同部位的骨骼配置窗口,并且各個(gè)部位的配置互不影響,如圖8-27和圖8-28所示。
圖8-27頭部骨骼配置窗口 圖8-28手部骨骼配置窗口788.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(4)一般情況下開發(fā)者創(chuàng)建了Avatar后Uniy3D都會(huì)對(duì)其正確的初始化,但有時(shí)候如果出于模型文件本身的問題,Unity3D無法識(shí)別到每個(gè)部位相應(yīng)的骨骼,此時(shí)錯(cuò)誤部位就會(huì)呈現(xiàn)紅色,如圖8-29所示。
圖8-29錯(cuò)誤部位呈紅色
798.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar的配置(5)開發(fā)者此時(shí)需要手動(dòng)更改錯(cuò)誤部位的骨骼。首先在Hierarchy窗口的骨骼列表中找到正確的骨骼,如圖8-30所示。然后將正確的骨骼拖拽到Inspector視口中該骨骼相對(duì)應(yīng)的位置上,若拖拽到正確位置后,錯(cuò)誤的部位會(huì)變回綠色,Avatar的也就配置完成了。圖8-30Hierarchy窗口中的骨骼列表808.3骨骼結(jié)構(gòu)映射——Avatar8.3.2 Avatar
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(1)點(diǎn)擊Avatar視口中的Muscles按鈕進(jìn)入Muscle的配置窗口。該窗口和剛剛的骨骼配置窗口類似,由預(yù)覽窗口、設(shè)置窗口及附加配置窗口三部分組成。(2)下面以左胳膊的骨骼為例對(duì)參數(shù)調(diào)節(jié)進(jìn)行講解,首先選中設(shè)置窗口中LeftArm參數(shù),其附帶的子參數(shù)也會(huì)隨之展開,包括肩部的上下和前后移動(dòng),胳膊的上下、前后移動(dòng)和轉(zhuǎn)動(dòng)等等,如圖8-31所示。
圖8-31Muscle配置窗口
818.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(3)讀者可以通過拖動(dòng)參數(shù)對(duì)應(yīng)的拖拉條,調(diào)節(jié)相對(duì)應(yīng)部位骨骼的運(yùn)動(dòng)范圍,同時(shí)在Scene窗口中對(duì)應(yīng)的骨骼上會(huì)出現(xiàn)一個(gè)扇形區(qū)域,表示骨骼旋轉(zhuǎn)過的范圍,如圖8-32所示,能夠幫助開發(fā)者調(diào)節(jié)骨骼的動(dòng)作范圍。
圖8-32Scene視圖828.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(4)在下方AdditionalSetting窗口中還可以進(jìn)行其它的設(shè)置,比如UpperArmTwist參數(shù),如圖8-33所示。讀者可通過拖動(dòng)其拖拉條該骨骼的運(yùn)動(dòng)范圍進(jìn)行調(diào)整。設(shè)置完畢之后點(diǎn)擊配置窗口右下角的“Done”按鈕結(jié)束Muscle的配置。
圖8-33其它設(shè)置窗口
838.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置(5)返回播放任務(wù)模型的動(dòng)畫,在Assets面板中找到導(dǎo)入的模型資源,點(diǎn)擊其中的動(dòng)畫文件,如圖8-34所示。在動(dòng)畫的Inspetor面板下方會(huì)播放該動(dòng)畫,點(diǎn)擊上方的進(jìn)度條可以按時(shí)間查看動(dòng)畫每幀的動(dòng)作,如圖8-35所示。
8-34模型文件下的動(dòng)畫文件848.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle
8.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle的配置
8-35播放動(dòng)畫文件858.3骨骼結(jié)構(gòu)映射——Avatar8.3.3 Muscle8.4動(dòng)畫控制器8.4.1 創(chuàng)建動(dòng)畫控制器在Assets面板中單擊鼠標(biāo)右鍵“Create”→“AnimatorController”,創(chuàng)建一個(gè)動(dòng)畫控制器,如圖8-36所示。動(dòng)畫控制器的顯示和修改在獨(dú)立的動(dòng)畫編輯界面,雙擊該動(dòng)畫控制器,進(jìn)入動(dòng)畫控制器編輯窗口,如圖8-37所示
圖8-36創(chuàng)建動(dòng)畫控制器 圖8-37動(dòng)畫控制器編輯窗口868.4動(dòng)畫控制器8.4.1 創(chuàng)建動(dòng)畫控制器 圖8-38.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置1、動(dòng)畫狀態(tài)機(jī)和過渡條件動(dòng)畫狀態(tài)機(jī):一個(gè)角色在游戲中的不同狀態(tài)下可以作出不同的動(dòng)作,狀態(tài)機(jī)來更為方便地控制角色動(dòng)畫。每一個(gè)動(dòng)畫控制器中的狀態(tài)機(jī)會(huì)有不同的顏色,每一個(gè)動(dòng)畫狀態(tài)機(jī)都對(duì)應(yīng)一個(gè)動(dòng)作。動(dòng)畫狀態(tài)機(jī)的參數(shù)含義如表8-4所示
878.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 348.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置動(dòng)畫狀態(tài)機(jī)之間的箭頭表示兩個(gè)動(dòng)畫之間的連接,將鼠標(biāo)箭頭放在動(dòng)畫狀態(tài)單元上,右鍵點(diǎn)擊“MakeTransition”創(chuàng)建動(dòng)畫過渡條件,并再次點(diǎn)擊另一個(gè)動(dòng)畫狀態(tài)單元上,完成動(dòng)畫過渡條件的連接
名稱說明StateMachine動(dòng)畫狀態(tài)機(jī),可包含若干個(gè)動(dòng)畫狀態(tài)單元State動(dòng)畫狀態(tài)單元,動(dòng)畫狀態(tài)機(jī)機(jī)制中的最小單元Sub-StateMachine子動(dòng)畫狀態(tài)機(jī),可包含若干個(gè)動(dòng)畫狀態(tài)單元或子動(dòng)畫狀態(tài)機(jī)BlendTree動(dòng)畫混合樹,一種特殊的動(dòng)畫狀態(tài)單元AnyState特殊的狀態(tài)單元,表示任意動(dòng)畫狀態(tài)Entry本動(dòng)畫狀態(tài)機(jī)的入口Exit本動(dòng)畫狀態(tài)機(jī)的出口888.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 名稱說明S8.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置2、過渡條件的參數(shù)設(shè)置創(chuàng)建過渡條件的參數(shù)的方法,在動(dòng)畫狀態(tài)機(jī)窗口左側(cè)中的Parameters視口,點(diǎn)擊右上角的“+”號(hào)可選擇想要添加的參數(shù)類型,如圖8-39所示。然后可以為參數(shù)命名,并為其設(shè)置初始值,如圖8-40所示。
圖8-39新建參數(shù) 圖8-40參數(shù)設(shè)置898.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-8.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置單擊想要添加參數(shù)的過渡條件,然后在Inspector視口中的Conditions列表中單擊“+”號(hào)創(chuàng)建參數(shù),選擇所需的參數(shù),如圖8-41。然后為參數(shù)添加對(duì)比條件,不同類型的參數(shù)對(duì)比條件也不同,比如Float類型參數(shù)的對(duì)比條件有“Greater”和“Less”,如圖8-42所示。
圖8-41為過渡條件創(chuàng)建參數(shù) 圖8-42為參數(shù)添加對(duì)比條件908.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置圖8-48.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(1)首先創(chuàng)建一個(gè)工程項(xiàng)目,并命名為“BNUAnimator”。然后將隨書光盤的資源目錄下第8章的“BNUAnimator”工程文件下的“Animations”、“Models”、“Textures”等文件夾依次拷備進(jìn)項(xiàng)目中的“Assets”資源文件夾下。然后創(chuàng)建一個(gè)名為“AniControllers”的空文件夾,用于存放項(xiàng)目所需的動(dòng)畫控制器文件。(2)在AniControllers文件夾下單擊鼠標(biāo)右鍵“Create”→“AnimatorController”創(chuàng)建一個(gè)動(dòng)畫控制器,并命名為“AnimatorController”。雙擊該動(dòng)畫控制器,進(jìn)入動(dòng)畫控制器編輯窗口。(3)向編輯窗口拖拽進(jìn)“Boy@ForwardKick”、“Boy@KickBack”和“Boy@Idle”三個(gè)動(dòng)畫文件
918.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 388.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(4)將Idle動(dòng)畫狀態(tài)單元設(shè)置為默認(rèn)動(dòng)畫單元。右鍵點(diǎn)擊Idle動(dòng)畫狀態(tài)單元,在菜單中選擇“SetasLayerDefultState”,如圖8-43所示。修改完成后Idle動(dòng)畫狀態(tài)單元會(huì)變?yōu)辄S色,然后為各個(gè)動(dòng)畫狀態(tài)單元添加過渡條件,如圖8-44所示。
圖8-43添加動(dòng)畫單元 8-44為動(dòng)畫單元添加過渡928.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-48.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(5)動(dòng)畫單元和過渡添加完畢后,下面向游戲控制器中添加實(shí)現(xiàn)過渡條件所需的參數(shù)。單擊Parameters視口上的“+”號(hào),添加一個(gè)Float類型的參數(shù),并命名為“AniFlag”,設(shè)置其初始值為-1.0,如圖8-45所示。
圖8-45創(chuàng)建參數(shù)
938.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖8-8.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(6)然后選中任意一個(gè)過渡條件,在Inspector視口中的Conditions列表中點(diǎn)擊“+”號(hào)創(chuàng)建參數(shù)并進(jìn)行參數(shù)的設(shè)置(7)在Assets面板下新建一個(gè)場(chǎng)景,雙擊打開場(chǎng)景。在場(chǎng)景中創(chuàng)建一個(gè)地形,給地形添加綠色草地紋理,然后為其添加天空盒,并調(diào)整光照方向至合適角度,如圖8-46所示。
948.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 418.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(8)向場(chǎng)景中添加人物模型,將Models文件夾下的fighter模型文件拖拽到場(chǎng)景中,然后為其添加貼圖,如圖8-47所示。
圖8-47添加人物模型
958.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置 圖88.4動(dòng)畫控制器8.4.2 動(dòng)畫控制器的配置3、通過代碼對(duì)動(dòng)畫控制器進(jìn)行操控(9)接下來需要?jiǎng)?chuàng)建UI界面,點(diǎn)擊“GameObject”→“UI”→“Button”創(chuàng)建兩個(gè)按鈕,并分別命名為“Button1”和“Button2”按鈕。這兩個(gè)按鈕分別用于對(duì)兩個(gè)動(dòng)畫的控制,當(dāng)按下任意一個(gè)按鈕時(shí),系統(tǒng)將啟動(dòng)對(duì)應(yīng)的動(dòng)畫過渡。(10)下面為人物模型添加動(dòng)畫組件。選中“fighter”游戲?qū)ο?,將之前?chuàng)建的“AnimatorController”動(dòng)畫控制器拖拽到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三方抵賬合同模板
- 個(gè)人商用車輛貸款擔(dān)保合同范本
- 個(gè)人設(shè)備抵押合同樣本
- 中外技術(shù)秘密許可合同(四)
- 二手家具買賣合同及附件
- 三方合作經(jīng)營(yíng)合同范本格式
- 臨時(shí)用工合同協(xié)議
- 個(gè)人汽車抵押借款合同范本
- 二手房預(yù)訂合同定金協(xié)議書模板
- 二手車買賣合同范本
- 2025年個(gè)人合法二手車買賣合同(4篇)
- 2025年山西國(guó)際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 青海省海北藏族自治州(2024年-2025年小學(xué)六年級(jí)語文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 外研版(三起)小學(xué)英語三年級(jí)下冊(cè)Unit 1 Animal friends Get ready start up 課件
- 江蘇省無錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語文試題(解析版)
- 銅礦隱蔽致災(zāi)普查治理工作計(jì)劃
- 農(nóng)業(yè)行政執(zhí)法現(xiàn)狀及相關(guān)法律法規(guī)課件
- 測(cè)量管理體系內(nèi)審檢查表
- 班組月度考核評(píng)分表
- 部編版一年級(jí)下冊(cè)《道德與法治》教學(xué)工作計(jì)劃及全冊(cè)教案
- 三重一大事項(xiàng)決策流程
評(píng)論
0/150
提交評(píng)論