高階動畫繫結功能:角色與物品的互動
在設計Animation Rigging資源包功能時,我們探索了各種可能,努力擴充執行時與創作之間的邊界。本文將介紹Animation Rigging資源包最新的實驗功能。
閱讀準備
本文將重點介紹三種型別的元件:Rig Builder、Rig和各種Constraints約束元件。瞭解Animation Rigging資源包,請閱讀:《Unity 2019.1中的Animation Rigging資源包》。
下載本文中的專案:
https://github.com/Unity-Technol ... aracter-interaction
溫馨提醒:我們希望嘗試讓技術動畫師不必編寫程式碼,就可以在狀態機中建立約束互動的方法。本文中的狀態機功能均為試驗性的,暫時不可用於正式的產品製作。
高階動畫繫結功能
為了在已有的Animator動畫控制器中讓繫結約束活動起來,而且不需要編寫程式碼,我們在Animator狀態機的Layers圖層中嘗試了一種新方法。
在現有的狀態機中結合動畫繫結
為了在已有狀態機的只讀動畫剪輯上正確地同步繫結和約束,我們利用了Animator狀態機的Layers圖層。
我們可以使用Layers圖層和Sync同步功能,在已有的運動狀態機中為任何狀態新增啟用繫結或禁用繫結的剪輯。
我們使用動畫視窗建立了多個動畫剪輯,它們儲存在*Rig圖層中,能夠調整繫結和約束的屬性。這裡我們只是調整了不同繫結和約束的Weight(權重)和Source Weight(來源權重)屬性。
我們使用了Player指令碼來啟用或禁用部分Weight Layer屬性,實現不同的握槍方式。下圖是Player指令碼上控制握槍方式的滑動條。
忍者的槍械
建立忍者的繫結
Rig Builder元件上的Rig Layers可以讓使用者對繫結和繫結部件進行排序,從而確保棧計算和解算結果正確,讓繫結組合和解算順序更具靈活性。
例如:如果我們將示例中忍者的Shoulder Offset Rig排序故意弄錯,會發生什麼呢?
當我們將Shoulder Correction Rig移到Rig Builder元件上計算棧的底部,就會破壞正確的解算過程。
當Shoulder Correction Rig放回Rig Builder元件上計算棧的頂部時,我們又得到了正確的解算行為。
在第一張截圖中,Shoulder Offset放在了棧的底部,造成雙手位置錯位。在正確排序後,肩膀的解算優先於手臂的其它部分,因此手可以正確地握住手槍。
接下來,我們可以用RightArm IK來矯正手槍握把的位置,解算UpperBody Rig。
小提示:下文中關於繫結和約束設定中的排序不一定和上圖中展示的排序相同。
Shoulder Correction Rig
我們將Shoulder Correction Rig與RightArm Rig的Two Bone IK約束結合使用,從而矯正Right Shoulder骨骼的姿勢,在Assault Rifle閒置動畫和Pistol閒置姿勢上做出應有的手臂彎曲。
我們使用Pivot模式的Override Transform元件和RightShoulder的Transform屬性,在Y軸和Z軸加入額外的旋轉角度。請注意,通過把Position Weight位置權重設為0,我們只會影響Rotation旋轉屬性。
Assault Rifle Rig
現在看看Hips Constraint遊戲物件和其子物件。在Override Transform元件中,我們把模式設為Pivot,將Hips Ctrl物件作為來源,從而影響Hips骨骼,這使得我們能夠偏移整個忍者層級。
然後,我們將Multi-Aim和Override Transform等約束組合在一起,建立一個能夠影響脊柱和臀部的上身瞄準繫結。設定不同的瞄準權重約束值將會影響所有脊柱效應部分中旋轉角度的分配。
在Hips Constraint物件下,Multi Aim Constraint元件的Source Objects部分中,各個部分的數值為:脊柱部分設為0.35,胸部設為0.5,胸部上半部分設為0.75,頭部設為1.0。所有這些設定為目標物件加上了不同的旋轉角度,創造出了瞄準效果。
Weapon Rig
Weapon Rig物件使用Override Transform元件來控制Weapon Bone動畫流,使用來源物件Weapon Ctrl物件對它進行重定向。
然後,我們在Multi-Referential Constraint元件中使用同樣的來源物件作為參照物件,實現多軸心操作。你可以在Multi Referential Constraint元件的Driving屬性中測試這些數值,實時檢視結果。
UpperBody IK Rig
Two Bone IK提供了對兩個骨架手臂的解算。Multi-Parent Constraints元件的作用是把RHIK Effector物件和LHIK Effector物件關聯到Weapon_Bone的IK目標子物件即AR_LHIK_Target和AR_RHIK_Target物件上。
Pistol Rig
我們使用了一套動畫繫結約束,實現初始閒置動畫向握槍姿勢的轉換。通過使用Pivot模式的Override Transform元件,我們把Pistol Ctrl物件效應部位上的資料偏移到Weapon Bone物件上。
然後,我們在Multi-Parent Constraint元件中,把Maintain Offset設為Position and Rotation選項,從而抵消Weapon Bone來源物件和Pistol Offset目標物件之間的全域性定位座標差異。
Weapons Source Rig
為了將突擊步槍和手槍的骨架連線到不同錨點上,我們利用了多重父物件約束的多來源功能。
Assault Rifle Attach Rig物件能夠充分利用Multi-Parent Constraint元件的多來源功能。當AR_Holster來源值設為1,Weapon_Bone來源值設為0時,AR_Grip_Bone物件會關聯到AR_Holster物件上。
如果想讓突擊步槍即AR_Grip_Bone物件跟隨Weapon_Bone物件,只需將Weapon_Bone來源值設為1,AR_Holster來源值設為0即可。請注意,我們可以在大部分約束屬性上編輯關鍵幀,例如:本示例中的多重父物件來源權重,從而得出想要的結果。
這個功能很關鍵,新的動畫剪輯將在同步的Animator控制器圖層的狀態中使用,從而在現有運動狀態機的狀態中限制特定繫結狀態。
下面的示例展示了在執行時對三個不同來源Pistol_Holster,Pistol Offset和RightHand_PistolGrip,使用多重父物件約束的方法。
該結果通過同步多個狀態機圖層上的兩個不同動畫剪輯得來,兩個動畫剪輯是:Base圖層上執行的.fbx格式只讀檔案Pistol_Equip,Rig Pistol圖層上的Unity原生動畫剪輯Rig_Pistol_Equip。
Legs IK Rig
忍者的檔案格式是fbx格式,包含了LowerBody物件的兩個子物件:LeftFootIK物件和RighFootIK物件,我們用DCC工具為這兩個物件加上了匹配的腳部骨架動畫。
多重父物件約束主要用於將Leg IK Rig物件上的Feet IK效應部位關聯到LeftFootIK物件和RightFootIK物件。該功能可將雙腳鎖定在地面根部層級上,使得在調整臀部時下身部分不會沉到地下。
最後,我們可以使用Two Bone IK約束上的IK解算,在下半身部分即腳部和指示部分的位置生成合適的動畫矯正。
腳部設定
我們發現使用Multi-Referential Constrain元件來製作腳部繫結的效果很好。通過建立多軸心腳部控制繫結,我們可以利用IK效應部分的控制功能,未來的動畫創作方案可能會和這種方法相似。
LeftHandGrip Rig
我們利用Left-Hand物件的層級的副本建立了一個完全不同的手部抓握姿勢。通過使用Rig元件的權重滑塊,我們可以在本地空間禁用或啟用多個Override Transform約束,每個約束作用於一個手指物件,從而重寫每個手指的本地角度。
為了將LHIK Effector物件對齊到AR_LHIK_Target_B物件,我們可以將AR_LHIK_Target的權重值設為0,將AR_LHIK_Target_B的權重值設為1。
然後,我們使用MonoBehaviour指令碼同步LeftHandGrip Rig物件的權重屬性和LeftArm IK及Muilti-Parent Constraint元件的來源權重屬性,即AR_LHIK_Target物件和AR_LHIK_Target_B物件,從而調整武器上的左手位置和抓握姿勢。
Twist Correction Rig
Twist Correction Rig物件是一個程式化的變形繫結,能夠影響手臂的上下部分,以及雙腳的上半部分。它能夠提取出腕部骨骼的旋轉角度,再根據特定權重值將旋轉效果分佈到每個手腕骨骼的本地X軸上。
在本示例中,Twist Correction在Rig Builder元件上位於Rig Layers部分的底部,這樣Twist Correction物件可以方便接收之前繫結約束中的改動。
專案中的筆記和知識點
由於我們使用Animator狀態機來控制約束屬性,即浮點型別的權重值,它們將會繼承狀態機上的過渡與混合效果,例如:在混合處理結束前,數值可能會是0.998。要避免這個問題,請確保在約束權重動畫開始之前,有足夠的時間完成混合過渡。
該方法有另一個副作用,你需要記錄受到之前狀態影響的屬性,從而避免這些屬性回到預設數值或狀態,當狀態的同步層上沒有剪輯時,需要特別注意這個問題。
在解決完這些問題後,我們就有了功能完善的結果。
小結
我們很高興能與你分享這次實驗的成果,希望得到你的反饋,分享你使用Animation Rigging資源包的體驗。
如果你有任何建議,請訪問Unity官方動畫論壇:https://forum.unity.com/threads/ ... nity-2019-1.661975/
作者:Unity
來源:Unity官方平臺
原地址:https://mp.weixin.qq.com/s/wy_c_wjNqvdm-4T8IKTZxQ
相關文章
- 玩家角色——移動功能和動畫藍圖動畫
- 【動畫進階】極具創意的滑鼠互動動畫動畫
- Python高階 -- 08 MySQL與Python互動PythonMySql
- ue4繫結動畫、重定向動畫動畫
- Flare動畫進階——建立可互動的一拳超人動畫動畫
- css3高階動畫CSSS3動畫
- java中的靜態繫結與動態繫結Java
- 理解靜態繫結與動態繫結
- 敘事:遊戲中角色與劇情的互動遊戲
- iOS 核心動畫高階技巧 - 1iOS動畫
- iOS高階-WebView & JavaScript互動(附DEMO)iOSWebViewJavaScript
- 【譯】使用者與Flutter互動時的粒子動畫Flutter動畫
- MySQL高階特性——繫結變數MySql變數
- App自動化測試:高階控制元件互動技巧APP控制元件
- WebGL程式設計指南(3)高階變換與動畫基礎Web程式設計動畫
- 體感互動大屏的功能與應用
- 使用者可在Messenger內讀書並與角色互動Messenger
- 互動媒體日常——互動漫畫之對話方塊互動
- C++的動態繫結和靜態繫結C++
- 帶有活力的屬性動畫原始碼分析與實戰——Android高階UI動畫原始碼AndroidUI
- 可以玩的UI-iOS互動式動畫UIiOS動畫
- 【動畫進階】當路徑動畫遇到滾動驅動!動畫
- 萬彩動畫大師教程 | 如何新增父母及小孩動畫角色動畫
- Mac動畫互動設計軟體Mac動畫
- 為角色外表注入“靈魂”的動畫製作動畫
- 萬彩動畫大師教程 | 如何新增男女服務員動畫角色動畫
- 動畫史上最美少年角色TOP 10動畫
- 萬彩動畫大師教程 | 如何新增運動員,農民及工人動畫角色動畫
- Principle for Mac(動畫互動設計軟體)Mac動畫
- Flutter學習之佈局、互動、動畫Flutter動畫
- 關於動態字串的繫結字串
- CSS的動畫的基礎概念定義/呼叫/繫結複習必備CSS動畫
- Flutter 與 Android 的互動FlutterAndroid
- Java與Excel的互動!-JavaExcel
- ReactNative與iOS的互動ReactiOS
- 《公主連結》互動設計師:如何用TV畫手法制作2D技能動畫動畫
- 巧用漸變實現高階感拉滿的背景光動畫動畫
- 巧用 CSS 變數,實現動畫函式複用,製作高階感拉滿的網格動畫CSS變數動畫函式