Unity3D 動(dòng)畫系統(tǒng)分類
1.Unity3D 3.5版本之前是舊的系統(tǒng)Legacy系統(tǒng)
2.Unity3D 4.0版本新增加Mecanim動(dòng)畫系統(tǒng)
新動(dòng)畫系統(tǒng)的有點(diǎn)
1>可視化動(dòng)畫剪輯編輯
2>能夠?qū)?dòng)畫信息進(jìn)行復(fù)用
3>利用動(dòng)畫狀態(tài)機(jī)(Animation State Mechine)實(shí)現(xiàn)不同狀態(tài)下動(dòng)畫剪輯的過渡
一般動(dòng)畫系統(tǒng)的制作與使用流程
1>在第三方的建模軟件中制作好模型,接著導(dǎo)出Unity3D 支持的格式,然后導(dǎo)入U(xiǎn)nity3D中
2>通過狀態(tài)機(jī)(State Mechines)和融合樹(Blend Trees)和反向動(dòng)力學(xué)(Inverser Kinematics)等功能對(duì)動(dòng)畫剪輯進(jìn)行設(shè)置,最后使用代碼控制角色的播放。
建模注意事項(xiàng);
1.注意模型尺寸,一般在1.7~1.8之間
2.在三維建模軟件中,是角色的最底部與世界坐標(biāo)的中心點(diǎn)對(duì)齊
3.盡量把模型制作為T型姿勢(shì)
4.確保骨盆位置上骨骼關(guān)節(jié)為所有的骨骼的父層級(jí)
5.確保骨骼結(jié)構(gòu)至少為15個(gè)骨骼
一般模型建議使用FBX格式導(dǎo)出。導(dǎo)出的兩個(gè)方式:
1.所有的動(dòng)畫信息與模型信息一起導(dǎo)出,這些動(dòng)畫導(dǎo)入U(xiǎn)nity3D 之后是被視為一個(gè)連續(xù)的動(dòng)畫
2.第二種方式把每個(gè)動(dòng)畫信息單獨(dú)導(dǎo)出為FBX格式。使用此方式導(dǎo)出時(shí)候,注意對(duì)動(dòng)畫合理的命名,一般的命名的規(guī)則為:模型名稱@動(dòng)畫剪輯.FBX
運(yùn)用Mecanim動(dòng)畫系統(tǒng)制作動(dòng)畫需要進(jìn)行四步的開發(fā)
1.制作替身
2.設(shè)置動(dòng)畫狀態(tài)機(jī)
3.設(shè)置動(dòng)畫循環(huán)
4.使用代碼控制角色動(dòng)畫。
狀態(tài)機(jī)的融合樹技術(shù)(Blend Tree)
融合樹結(jié)構(gòu)可以使得一個(gè)東湖愛剪輯與另外的動(dòng)畫剪輯序列進(jìn)行光滑融合,也就是說是兩個(gè)動(dòng)畫的合并
1.在Animator窗口右鍵 Create State ——>Form New Blend Tree ? 命名BlendTree-Crouch
2.雙擊進(jìn)入BlendTree-Crouch動(dòng)畫狀態(tài),進(jìn)入Blend Tree 編輯窗口
3.選擇BlendTree-Crouch,在屬性窗口中點(diǎn)擊Motion下面“+”號(hào),在彈出的下拉菜單中選擇“Add Motion Field” 添加動(dòng)畫序列。
4.點(diǎn)擊None后面的小圓圈,打開Select Motion面板,選擇相對(duì)應(yīng)動(dòng)畫,比如如下圖所示
5.可以修改權(quán)重位置。把自動(dòng)臨界點(diǎn)(Automatic Threshholds)的勾取消掉,這樣可以自定義
融合樹控制核心代碼
animator=GetComponent<Animator>();//得到物體的組件
AnimatorStateInfo stateInfo=animator.GetCurrentAnimatorStateInfo(0);//獲得動(dòng)畫器狀態(tài)信息
float h=Inout.GetAixs("Horizontal");//獲得水平的返回值
float v=Input.GetAixs("Vertical");//獲得垂直的返回值
animator.SetFloat("Speed",h*h+v*v);//把h和v求平方相加賦值給狀態(tài)機(jī)中的自定義變量Speed上
animator.SetFloat("Direction",h,DirectionDampTime,Time,delltaTiome);//DirectionDampTime這是自定定義的float變量 ??
if(stateInfo.IsName("Base Layer.Blend Tree-Crouch"))
{
? ? if(h < 0)
? ?{
? ? ? ?tranform.position+=-transform.right*leftspeed*Time.deltaTime;
? ?}
}
Animator 屬性說明:
Controller:附加到角色的動(dòng)畫控制器
Avatar:角色Avatar
Apply Root Motion:動(dòng)畫自身還是腳本控制角色的實(shí)際位置(開啟為腳本)
動(dòng)畫層與身體蒙版
動(dòng)畫層技術(shù)可以從已有的動(dòng)畫創(chuàng)造出新的動(dòng)畫系統(tǒng)
融合樹技術(shù)是有兩個(gè)動(dòng)畫序列的同一谷歌的不同運(yùn)動(dòng)位置融合為骨骼的最終位置,而動(dòng)畫層用于把不通部位的東湖組合起來成為最后的全身的動(dòng)畫效果。
動(dòng)畫復(fù)用
動(dòng)畫復(fù)用就是把動(dòng)畫剪輯序列復(fù)用到其他的角色上
反向力學(xué)(IK)
反向動(dòng)力學(xué)是依據(jù)子關(guān)機(jī)的最終位置、角色來反求出父關(guān)節(jié)甚至整個(gè)骨架的形態(tài)。