Unity3D根運(yùn)動(dòng)Root Motion工作原理
2021-1-7 18:36:44??????點(diǎn)擊:
身體變換
身體變換 (Body Transform) 是角色的質(zhì)心。它用于 Mecanim 重定位引擎,提供最穩(wěn)定的位移模型。身體方向 (Body Orientation) 是下半身方向與上半身方向的平均,與 Avatar T 字姿勢(shì) (T-Pose) 相關(guān)。
身體變換 (Body Transform) 和方向 (Orientation) 存儲(chǔ)在動(dòng)畫(huà)片段 (Animation Clip) 中(使用 Avatar 中設(shè)置的肌肉線條)。它們是存儲(chǔ)在動(dòng)畫(huà)片段 (Animation Clip) 中的唯一世界空間曲線。其他一切事項(xiàng):肌肉線條和 IK 目標(biāo)(四肢 (Hands and Feet))相對(duì)身體變換存儲(chǔ)。
根變換
根變換 (Root Transform) 是身體變換 (Body Transform) 在 Y 平面上的投影,在運(yùn)行時(shí)計(jì)算。在每一幀,根變換 (Root Transform) 中的變化都會(huì)計(jì)算出來(lái)。然后變換的變化會(huì)被應(yīng)用到游戲?qū)ο?(Game Object) 上,使之移動(dòng)。
動(dòng)畫(huà)片段檢視器
動(dòng)畫(huà)片段編輯器 (Animation Clip Editor) 設(shè)置(根變換旋轉(zhuǎn) (Root Transform Rotation)、根變換位置 (Root Transform Position) (Y) 和根變換位置 (XZ))讓您從身體變換 (Body Transform) 控制根變換 (Root Transform) 投影。根據(jù)這些設(shè)置,身體變換 (Body Transform) 的某些部分可能會(huì)是轉(zhuǎn)移的根變換 (Root Transform)。例如,您可以決定是否要讓運(yùn)動(dòng) Y 位置成為根運(yùn)動(dòng) (Root Motion)(軌跡)或者姿勢(shì)(身體轉(zhuǎn)換)的一部分,這就是所謂的合并到姿勢(shì) (Baked into Pose)。
根變換旋轉(zhuǎn)
合并到姿勢(shì) (Bake into Pose):方向與身體變換(或者姿勢(shì) (Pose))保持一致。根方向 (Root Orientation) 保持不變,增量方向 (Orientation) 相同。這意味著,該 AnimationClip 完全不會(huì)旋轉(zhuǎn)游戲?qū)ο?(Game Object)。
只有擁有類似啟停根方向 (Root Orientation) 的 AnimationClip 才會(huì)使用該選項(xiàng)。您會(huì)在 UI 看到綠燈 (Green Light),告知您某個(gè) AnimationClip 是好的候選片段。合適的候選片段應(yīng)當(dāng)是直走或跑步動(dòng)畫(huà)。
基于 (Based Upon):該選項(xiàng)允許您設(shè)置片段的方向。片段使用身體方向 (Body Orientation) 定向,以循著身體的向前向量。該默認(rèn)設(shè)置適用于大多數(shù)動(dòng)作捕捉 (Motion Capture)(動(dòng)態(tài)捕捉 (Mocap))數(shù)據(jù),比如走路、跑步、跳躍,但不能用于掃射之類的動(dòng)作,這些動(dòng)作與身體的向前向量垂直。在這種情況下,可以使用偏移(Offset) 設(shè)置手動(dòng)調(diào)整方向。最后,您會(huì)在導(dǎo)入的片段中找到自動(dòng)添加授權(quán)位移的原始方向 (Original)。它常常與鍵幀 (Keyframed) 數(shù)據(jù)配合使用,以遵循美工設(shè)置的方向。
偏移 (Offset):為基于 (Based Upon) 選擇該項(xiàng)時(shí)用來(lái)輸入偏移量。
根變換位置 (Y)
該項(xiàng)使用根變換旋轉(zhuǎn) (Root Transform Rotation) 中描述的相同概念。
合并到姿勢(shì) (Bake Into Pose):運(yùn)動(dòng)的 Y 分量與身體變換 (Body Transform)(姿勢(shì) (Pose))保持一致。根變換 (Root Transform) 的 Y 分量保持不變,增量根位置 Y (Delta Root Position Y) 為 0。這意味著,該片段不會(huì)更改游戲?qū)ο蟾叨?(Game Object Height)。您再次看到綠燈 (Green Light),告知您某個(gè)片段是將 Y 動(dòng)作合并到姿勢(shì)的良好候選片段。
大多數(shù) AnimationClip 會(huì)啟用該設(shè)置。只有更改游戲?qū)ο?(GameObject) 高度的片段會(huì)關(guān)閉該設(shè)置,比如跳上跳下。
注意:Animator.gravityWeight 由合并到姿勢(shì) (Bake Into Pose) 位置 Y 驅(qū)動(dòng)。啟用該設(shè)置時(shí),gravityWeight = 1,禁用該設(shè)置時(shí)則 = 0。在狀態(tài)之間轉(zhuǎn)換時(shí),gravityWeight 用于片段融合。
基于 (Based Upon):您可以按照與根變換旋轉(zhuǎn) (Root Transform Rotation) 類似的方式從原始方向 (Original) 或質(zhì)心 (Mass Center)(身體 (Body))中進(jìn)行選擇。還有一個(gè)雙腳 (Feet) 選項(xiàng),非常便于 AnimationClip 更改高度(合并到姿勢(shì) (Bake Into Pose) 已禁用)。使用雙腳 (Feet) 選項(xiàng)時(shí),根變換位置 Y (Root Transform Position Y) 會(huì)為所有幀匹配最低的腳 Y。因此,融合點(diǎn)常常停留在雙腳周圍,以防止在融合或轉(zhuǎn)換時(shí)出現(xiàn)浮動(dòng)問(wèn)題。
偏移 (Offset):可以按照與根變換旋轉(zhuǎn) (Root Transform Rotation) 類似的方式,使用偏移 (Offset) 設(shè)置手動(dòng)調(diào)整 AnimationClip 高度。
根變換位置 (XZ)
再一次,該項(xiàng)使用根變換旋轉(zhuǎn) (Root Transform Rotation) 和根運(yùn)動(dòng)位置 (Root Motion Position) (Y) 中描述的相同概念。
合并到姿勢(shì) (Bake Into Pose) 將用于當(dāng)你希望將xz坐標(biāo)位置偏移強(qiáng)制設(shè)定為零的“等待”時(shí)。他將會(huì)阻止大量計(jì)算中的積累誤差。這個(gè)同樣可以根據(jù)美工已設(shè)定的用來(lái)關(guān)鍵幀片段來(lái)使用。
循環(huán)姿勢(shì)
循環(huán)姿勢(shì) (Loop Pose)(就像混合樹(shù) (Blend Trees) 或轉(zhuǎn)換 (Transitions) 中的姿勢(shì)融合 (Pose Blending))在引用根變換 (Root Transform) 時(shí)出現(xiàn)。計(jì)算根變換 (Root Transform) 之后,姿勢(shì) (Pose) 變得與之相關(guān)。開(kāi)始 (Start) 和停止 (Stop) 幀之間的相對(duì)姿勢(shì) (Pose) 差異將被計(jì)算出,并分布在 0-100% 的片段范圍中。
通用根運(yùn)動(dòng) (Generic Root Motion) 和循環(huán)姿勢(shì) (Loop Pose)
身體變換 (Body Transform) 是角色的質(zhì)心。它用于 Mecanim 重定位引擎,提供最穩(wěn)定的位移模型。身體方向 (Body Orientation) 是下半身方向與上半身方向的平均,與 Avatar T 字姿勢(shì) (T-Pose) 相關(guān)。
身體變換 (Body Transform) 和方向 (Orientation) 存儲(chǔ)在動(dòng)畫(huà)片段 (Animation Clip) 中(使用 Avatar 中設(shè)置的肌肉線條)。它們是存儲(chǔ)在動(dòng)畫(huà)片段 (Animation Clip) 中的唯一世界空間曲線。其他一切事項(xiàng):肌肉線條和 IK 目標(biāo)(四肢 (Hands and Feet))相對(duì)身體變換存儲(chǔ)。
根變換
根變換 (Root Transform) 是身體變換 (Body Transform) 在 Y 平面上的投影,在運(yùn)行時(shí)計(jì)算。在每一幀,根變換 (Root Transform) 中的變化都會(huì)計(jì)算出來(lái)。然后變換的變化會(huì)被應(yīng)用到游戲?qū)ο?(Game Object) 上,使之移動(dòng)。
動(dòng)畫(huà)片段檢視器
動(dòng)畫(huà)片段編輯器 (Animation Clip Editor) 設(shè)置(根變換旋轉(zhuǎn) (Root Transform Rotation)、根變換位置 (Root Transform Position) (Y) 和根變換位置 (XZ))讓您從身體變換 (Body Transform) 控制根變換 (Root Transform) 投影。根據(jù)這些設(shè)置,身體變換 (Body Transform) 的某些部分可能會(huì)是轉(zhuǎn)移的根變換 (Root Transform)。例如,您可以決定是否要讓運(yùn)動(dòng) Y 位置成為根運(yùn)動(dòng) (Root Motion)(軌跡)或者姿勢(shì)(身體轉(zhuǎn)換)的一部分,這就是所謂的合并到姿勢(shì) (Baked into Pose)。
根變換旋轉(zhuǎn)
合并到姿勢(shì) (Bake into Pose):方向與身體變換(或者姿勢(shì) (Pose))保持一致。根方向 (Root Orientation) 保持不變,增量方向 (Orientation) 相同。這意味著,該 AnimationClip 完全不會(huì)旋轉(zhuǎn)游戲?qū)ο?(Game Object)。
只有擁有類似啟停根方向 (Root Orientation) 的 AnimationClip 才會(huì)使用該選項(xiàng)。您會(huì)在 UI 看到綠燈 (Green Light),告知您某個(gè) AnimationClip 是好的候選片段。合適的候選片段應(yīng)當(dāng)是直走或跑步動(dòng)畫(huà)。
基于 (Based Upon):該選項(xiàng)允許您設(shè)置片段的方向。片段使用身體方向 (Body Orientation) 定向,以循著身體的向前向量。該默認(rèn)設(shè)置適用于大多數(shù)動(dòng)作捕捉 (Motion Capture)(動(dòng)態(tài)捕捉 (Mocap))數(shù)據(jù),比如走路、跑步、跳躍,但不能用于掃射之類的動(dòng)作,這些動(dòng)作與身體的向前向量垂直。在這種情況下,可以使用偏移(Offset) 設(shè)置手動(dòng)調(diào)整方向。最后,您會(huì)在導(dǎo)入的片段中找到自動(dòng)添加授權(quán)位移的原始方向 (Original)。它常常與鍵幀 (Keyframed) 數(shù)據(jù)配合使用,以遵循美工設(shè)置的方向。
偏移 (Offset):為基于 (Based Upon) 選擇該項(xiàng)時(shí)用來(lái)輸入偏移量。
根變換位置 (Y)
該項(xiàng)使用根變換旋轉(zhuǎn) (Root Transform Rotation) 中描述的相同概念。
合并到姿勢(shì) (Bake Into Pose):運(yùn)動(dòng)的 Y 分量與身體變換 (Body Transform)(姿勢(shì) (Pose))保持一致。根變換 (Root Transform) 的 Y 分量保持不變,增量根位置 Y (Delta Root Position Y) 為 0。這意味著,該片段不會(huì)更改游戲?qū)ο蟾叨?(Game Object Height)。您再次看到綠燈 (Green Light),告知您某個(gè)片段是將 Y 動(dòng)作合并到姿勢(shì)的良好候選片段。
大多數(shù) AnimationClip 會(huì)啟用該設(shè)置。只有更改游戲?qū)ο?(GameObject) 高度的片段會(huì)關(guān)閉該設(shè)置,比如跳上跳下。
注意:Animator.gravityWeight 由合并到姿勢(shì) (Bake Into Pose) 位置 Y 驅(qū)動(dòng)。啟用該設(shè)置時(shí),gravityWeight = 1,禁用該設(shè)置時(shí)則 = 0。在狀態(tài)之間轉(zhuǎn)換時(shí),gravityWeight 用于片段融合。
基于 (Based Upon):您可以按照與根變換旋轉(zhuǎn) (Root Transform Rotation) 類似的方式從原始方向 (Original) 或質(zhì)心 (Mass Center)(身體 (Body))中進(jìn)行選擇。還有一個(gè)雙腳 (Feet) 選項(xiàng),非常便于 AnimationClip 更改高度(合并到姿勢(shì) (Bake Into Pose) 已禁用)。使用雙腳 (Feet) 選項(xiàng)時(shí),根變換位置 Y (Root Transform Position Y) 會(huì)為所有幀匹配最低的腳 Y。因此,融合點(diǎn)常常停留在雙腳周圍,以防止在融合或轉(zhuǎn)換時(shí)出現(xiàn)浮動(dòng)問(wèn)題。
偏移 (Offset):可以按照與根變換旋轉(zhuǎn) (Root Transform Rotation) 類似的方式,使用偏移 (Offset) 設(shè)置手動(dòng)調(diào)整 AnimationClip 高度。
根變換位置 (XZ)
再一次,該項(xiàng)使用根變換旋轉(zhuǎn) (Root Transform Rotation) 和根運(yùn)動(dòng)位置 (Root Motion Position) (Y) 中描述的相同概念。
合并到姿勢(shì) (Bake Into Pose) 將用于當(dāng)你希望將xz坐標(biāo)位置偏移強(qiáng)制設(shè)定為零的“等待”時(shí)。他將會(huì)阻止大量計(jì)算中的積累誤差。這個(gè)同樣可以根據(jù)美工已設(shè)定的用來(lái)關(guān)鍵幀片段來(lái)使用。
循環(huán)姿勢(shì)
循環(huán)姿勢(shì) (Loop Pose)(就像混合樹(shù) (Blend Trees) 或轉(zhuǎn)換 (Transitions) 中的姿勢(shì)融合 (Pose Blending))在引用根變換 (Root Transform) 時(shí)出現(xiàn)。計(jì)算根變換 (Root Transform) 之后,姿勢(shì) (Pose) 變得與之相關(guān)。開(kāi)始 (Start) 和停止 (Stop) 幀之間的相對(duì)姿勢(shì) (Pose) 差異將被計(jì)算出,并分布在 0-100% 的片段范圍中。
通用根運(yùn)動(dòng) (Generic Root Motion) 和循環(huán)姿勢(shì) (Loop Pose)
此項(xiàng)的工作原理本質(zhì)上與類人根運(yùn)動(dòng) (Humanoid Root Motion) 相同,但不使用身體變換 (Body Transform) 來(lái)計(jì)算/預(yù)計(jì)根變換 (Root Transform),而是使用根節(jié)點(diǎn) (Root Node) 中的變換集。姿勢(shì) (Pose)(在根運(yùn)動(dòng) (Root Motion) 骨骼下變換的所有骨骼)與根變換 (Root Transform) 相關(guān)。
聲明:文章內(nèi)容整理來(lái)源于網(wǎng)絡(luò),版權(quán)屬于原作者,如有問(wèn)題,請(qǐng)聯(lián)系我們!
- 上一篇:虛擬現(xiàn)實(shí)技術(shù)的軍事應(yīng)用 2021/1/8
- 下一篇:常見(jiàn)的三維文件格式介紹 2021/1/6


