動畫系統學習文檔
Animation:
一、 //動畫面板
Animation:默認動畫
Animations:待播放的全部動畫
Play Automatically:是否自動播放
Animate Physics:動畫是否在物理循環中執行(帶剛體動畫都打勾)
Culling Type:剔除類型
Based On Renderers:渲染外的動畫禁用(此時由動畫觸發的事件也被禁用了,慎用)
Always Animate:始終播放動畫,無禁用(動畫量大的時候消耗性能)
二、 //Animation自定義面板
打開快捷鍵:選中有animation動畫的物體Ctrl+6
常用按鍵左上角開始:
(1) 鎖定Transform組件(禁止移動旋轉縮放)
(2) 動畫開始播放與暫停按鍵
(3) 分幀執行---上一幀
(4) 分幀執行---下一幀
(5) 輸入框:填入指定幀
(6) Add KeyFrame:添加關鍵幀
(7) Add Event:添加觸發事件
(8) DopeSheet/Curves:點與曲線切換
三、 常用動畫方法:
//播放默認動畫
animation.Play();
//播放walk動畫,停止同一層的其他動畫
animation.Play(“walk”);
animation.Play(“walk”, PlayMode.StopSameLayer);
//播放walk動畫,停止其他動畫
animation.Play(“walk”,PlayMode.StopAll);
//在一定時間內淡入淡出播放walk動畫
animation.CrossFade(“walk”,0.2f);
//停止所有動畫播放
animation.Stop();
//設置動畫屬性狀態
animation[“walk”].speed=2.0f;//速度
animation[“walk”].weight=0.5f;//權重
//設置動畫的播放模式
animation.wrapMode=WrapMode.Default;//從動畫剪輯中讀取(默認為Once)
animation.wrapMode=WrapMode.ClampForever;//播放動畫到結尾時總是處於最后一幀的采樣狀態
animation.wrapMode=WrapMode.Once;//當時間播放到末尾時停止動畫播放(單次播放)
animation.wrapMode=WrapMode.Loop;//循環播放
animation.wrapMode=WrapMode.PingPong;//往復播放
//判斷當前是否在播放walk(某段)動畫
animation.IsPlaying(“walk”);
Animator:
一、 動畫面板
Controller:動畫控制器(動畫機)
Avatar:阿凡達(人物骨骼)僅在動畫為Human類型時作用
Apply Root Motion:是否將動畫的Transform變換應用到模型上(動畫結束后顯示)
與Apply Root Motion功能類似但有所區別的是Bake into Pose(在動畫面板中的屬性)勾選后動畫的Transform變化會實時影響到模型本身,也就是說動畫播放的同時場景中的模型會隨着動畫進行位移旋轉縮放等
Update Mode:更新模式分為
1) Normal:標准
2) Amimate Physics:物理交互模式
3) UnScaledTime:不縮放時間
Culling Mode:剔除模式分為:
1) Always Animate:總是使用動畫
2) Cull Update Transforms:剔除一部分(事件仍會觸發)默認使用
3) Cull Completely:不可見完全禁用
二、 動畫機面板
//右鍵Creat Animator Controller(創建動畫機)雙擊進行編輯
Layers:動畫層(越下層級別越高)(常用於組合復雜動畫使用)
Weight:權重
Mask:遮罩
Blending:動畫混合模式
1) Override:覆蓋
2) Additive:混合
Sync:同步層(當有多層時,當前編輯的層與之前層邏輯結構相同僅動畫不同時應用)
Timing:控制動畫時間(勾選當前層動畫按照此動畫層時間播放,同步的層可能變快變慢,不勾選則按照同步層時間走,此動畫層可能變快變慢)
IK Pass:反向運動學IK(開啟后腳本才可以控制IK)
其中Mask部分實例:
工程中右鍵創建一個Avatar Mask(阿凡達遮罩)雙擊后顯示如上圖
當動畫為人物骨骼時直接點擊人身上的區域即可綠色為動畫部分,紅色為禁用動畫部分,其中IK為反向運動學。
Parameters:控制因素
1) Float:數值型
2) Int:整數型
3) Bool:bool型
4) Trigger:觸發器型
動畫轉換:(右鍵動畫Make Transition 指定到過度動畫,點擊中間鏈條進行條件設置面板)
//條件設置面板:
Has Exit Time:是否自動觸發(在沒設定條件時自定過度到下一動畫)
Settings:設置參數
Conditions:設置觸發條件(點擊加號添加,即條件因素中的參數)
//動畫混合樹面板:
Blend Type:動畫樹類型
1) 1D:一維
2) 2D Simple Directional:具有方向性的動畫片段,同一方向上最好不要有多個動畫片段
3) 2D Freeform Directional :主要用於控制具有方向性的動畫片段,同一方向上允許有多個動畫片段,(0,0)位置上必須有一個動畫片段
4) 2D Freeform Cartesian : 不一定具有方向性的動畫片段.(一般用這個)
//TODO
//動畫拆分截取面板
點擊“+”號添加新的動畫片段,設置起始幀與結束幀,並重新命名,設定一系列參數(如:遮罩,事件等)后,Apply應用即可在原有模型的下面多出來新建動畫片段。
//更改模型動畫類型面板:
只有在人物模型的情況下才會有人的骨骼動畫(其他一般為一般動畫Legacy/Generic類型)
Human類型動畫設置時系統內部會自動綁定人物骨骼,Configure前的“√”代表綁定正確,若不正確則點擊Configure進行自定義骨骼編輯。
//骨骼綁定面板:
當圖中右側面板上無紅色區域即表示綁定完畢,可自主拖動骨骼。
一般點擊左下角選中Mapping –Automap//自動綁定
Pose-Enforce T-Pose//T字形綁定
常用的設置條件方法:
//設置參數值
1) animatior.SetFloat(“name”,1.2f);
2) animatior.SetInteger(“name”,10);
3) animator.SetBool(“name”,true);
//單次觸發器
4) animator.SetTrigger(“name”);
//獲取制定層的動畫進行操作(此處為0層動畫)
AnimatorStateInfo animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);