反向動畫學原理 (IK) 是一種常見的電腦動畫技術,可以以有效的方式移動和與環境交互的角色。 創建一個理想的動作需要眾多重複和微調,這與 IK 的過程通常需要很多次。 使用 IK ,您可以畫出多個角色零件,例如位置或調整單一對螺物件的位置。
這種動畫技術可以提供以下示例的解決方案:
IKControl
您可以使用 IKControl 來將 IK 添加到您的角色陣外的動畫編輯器外。Studio 允許您程式化地應用 IK 於所有角色,例如 R15、Rthro 和自訂匯入的外觀角色,以在您的體驗中建立實現逼真運動和交互的實體移動和交互體驗。
當添加 IKControl 時,正確設置 所需的屬性 以避免意外且不自然的動畫結果。 與所有動畫相同, 測試您的 IKControls 以確認您達到所需的行為。
所需屬性
當將 IKControl 添加到你的角色的 Humanoid 或 AnimationController 時,必須設定以下必要的屬性才能啟用 IK:
屬性 | 說明 |
---|---|
Type | 指定 IK 控制的行為類型。請參閱 Enum.IKControlType 以取得行為選項清單。常見的行為類型包括 Position 或 Transform 。 |
EndEffector | 您的角色網格跟隨向 BasePart ,或向 Bone 。 例如,您可以將左手骨設為 Target 骨,以達到 1>Class.IKControl.EndEffector|EndE |
Target | Class.IKControl.EndEffector|EndEffector 指向的對象或地點。Target 可以是任何世界位置的對象。 |
ChainRoot | 定義了 Class.BasePart|Class |
測試 IKControls
您可以通過 IKControl 程式碼或直接編輯程式碼來添加或編輯程式。您甚至可以在 IKControl 期間進行遊戲測試,以快速檢查各種屬性對角色的移動如何影響。
要快速測試你的 IKControl 使用 Attachment 作為目標:
在測試標籤中,選擇 播放 以啟動播放測試。
點擊您角色模型 ⊕ 的鄰近,並添加 HumanoidRootPart。
選擇 附件 並使用 移動 工具將對象放置在檢視角前方的你角色。
在 Explorer 窗口中,選擇你角色旁邊的 ⊕ 圖示,並且添加一個 Humanoid。
選擇 IKControl 並在 屬性 面板中設定以下屬性值:
- 輸入 : 從下拉欄中選擇 Transform 。
- 目標 : 選擇目 Explorer 中新建的 附件 對象。
您的角色左臂現在應該碰到目標 Attachment 。 您可以使用移動 Attachment 或編輯 IKControl 屬性來達到不同的結果。
增加限制
您可以使用 Constraints 來限制關節在達到目標時可以移動的方式。限制可以確保關節,例如腳踝和腳踝自然伸展,或使機械關節旋轉在特定方向。
要使用 IKControl 對您的角色添加限制,您的 IKControl 和限制必須滿足以下條件:
- 附件在 Attachment0 / Attachment1 屬性中與 Motor6D 1>Class.Motor6D.Part0|附件11> / 4>Class.Motor6D.Part1|附件14> 相
- Class.Limit | @Class.Limit Class.Limit | @Class.Limit Class.Limit | @Class.Limit / 1>Class.Limit | @Class.Limit1> CFrames.
- 限制和 IKControl 共用相同的父 Model 。
下列指令說明了添加 HingeConstraint 以限制角色的腕部旋轉和添加 BallSocketConstraint 以限制旋轉角度。
腳踝
Roblox R15 角色已包含在他們的關節中使用附件來應用肘壓限制式。對於肘,兩個左上角和兩個左下角都包含一個 LeftElbowRigAttachment 。 以添加限限制式,您還需要添加附件到每個零件的 LeftElbowRigAttachment 以指定肘可以旋轉的�
要新增 HingeConstraint 和子附件:
在 Explorer 中,找到您的模型的 左下角手臂 並單擊 ⊕ 按鈕 。
增加 關節約束 與名稱 LeftElbowConstraint 。
在 Explorer 中,導航至 左上角上臂.左臂弓箭頭附件 並添加附件:
按一下 ⊕ 按鈕 以添加名為 LeftElbowConstraintAttachment0 的 LeftElbowConstraintAttachment0。
在視角中,選擇附件並使用 旋轉工具 來旋轉附件,讓黃色 主軸 是您的腕部旋轉的預期旋轉軸。
將 LeftElbowConstraint.Attachment0 屬性設定為此新附件。
在 Explorer 中,將您的模型 左下角手臂.左臂鞋子 添加附件:
- 點擊 ⊕按鈕 並添加 附件 以LeftElbowConstraintAttachment1的名稱。
- 將 LeftUpperArm.LeftElbowConstraint.Attachment1 設定為此新附件。
- 複製 LeftElbowConstraintAttachment0.CFrameOrientation 屬性,並將其作為 LeftElbowConstraint.Attachment1.CFrameOrientation 值的貼入。
測試您的 IKControl 以確認肘只能在關節軸上旋轉:
腕部
即使有腕限制式,IKControl 還是能以腕部的姿勢產生不真實的姿勢。
您可以通過添加 BallSocketConstraint 來限制手腕的旋轉。 雖然這與添加 HingeConstraint 到肘的過程相似,但您可以使用 LimitsEnabled 屬性對此限制來進一步控制手腕的運動範圍。
要為腕表增加 BallSocketConstraint:
- 在 Explorer 中,找到您的模型的 左手 並按一下 ⊕ 按鈕 。
- 增加 BallSocketConstraint 用 LeftWristConstraint 的名稱。
- 找到您的模型的 左下臂.左腕鞋子附件 並添加附件:
- 點擊 ⊕按鈕 並添加 附件 以LeftWristConstraintAttachment0的名稱。
- 在視角中,選擇附件並使用 旋轉工具 旋轉附件,讓黃色主軸指向模型的腳趾。
- 將 LeftWristConstraint.Attachment0 屬性設置在全新的 LeftWristConstraintAttachment0 上。
- 找到您的模型的 左側手腕鏡騰附件 並添加附件:
- 點擊 ⊕按鈕 並添加 附件 以LeftWristConstraintAttachment1的名稱。
- 複製 LeftWristConstraintAttachment0.CFrameOrientation 屬性,並將其作為 LeftWristConstraintAttachment1.CFrameOrientation 屬性的貼入。
- 將 LeftWristConstraint.Attachment1 屬性設置為此新的 LeftWristConstraintAttachment1 。
- 在 Explorer 中,選擇 左腕約束器 。
- 在屬性編輯器中設置以追蹤中項目:
- 啟用 限制已啟用 。
- 將 上角角度 設為 80 。這會控制限制器的軸可以旋轉多少,80度大約是手腕可以彎曲的程度。
- 您的角色取決於您想要調整圓錐的方向。您可以使用 旋轉工具 來旋轉限制的 附件0。
選擇 LeftWristConstraint 時,會出現一個綠色圓錐,表示手腕的移動範圍。
設定約束後,測試 IKControl 使用手指指向角色前方,讓手腕更靈活地旋轉並彎曲。