反向 kinematics

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

反向動畫學原理 (IK) 是一種常見的電腦動畫技術,可以以有效的方式移動和與環境交互的角色。 創建一個理想的動作需要眾多重複和微調,這與 IK 的過程通常需要很多次。 使用 IK ,您可以畫出多個角色零件,例如位置或調整單一對螺物件的位置。

這種動畫技術可以提供以下示例的解決方案:

在自動調整相關手臂、肘、和肩等時,抓住並呈姿勢。
讓角色的腳趾在不同的表面和斜坡上互動得到實際的互動效果。
快速建立實際交互與你的角色和物件的互動。

IKControl

您可以使用 IKControl 來將 IK 添加到您的角色陣外的動畫編輯器外。Studio 允許您程式化地應用 IK 於所有角色,例如 R15、Rthro 和自訂匯入的外觀角色,以在您的體驗中建立實現逼真運動和交互的實體移動和交互體驗。

當添加 IKControl 時,正確設置 所需的屬性 以避免意外且不自然的動畫結果。 與所有動畫相同, 測試您的 IKControls 以確認您達到所需的行為。

所需屬性

當將 IKControl 添加到你的角色的 HumanoidAnimationController 時,必須設定以下必要的屬性才能啟用 IK:

屬性說明
Type指定 IK 控制的行為類型。請參閱 Enum.IKControlType 以取得行為選項清單。常見的行為類型包括 PositionTransform
EndEffector您的角色網格跟隨向 BasePart ,或向 Bone 。 例如,您可以將左手骨設為 Target 骨,以達到 1>Class.IKControl.EndEffector|EndE
TargetClass.IKControl.EndEffector|EndEffector 指向的對象或地點。Target 可以是任何世界位置的對象。
ChainRoot定義了 Class.BasePart|Class

測試 IKControls

您可以通過 IKControl 程式碼或直接編輯程式碼來添加或編輯程式。您甚至可以在 IKControl 期間進行遊戲測試,以快速檢查各種屬性對角色的移動如何影響。

要快速測試你的 IKControl 使用 Attachment 作為目標:

  1. 在測試標籤中,選擇 播放 以啟動播放測試。

  2. 在 Explorer 中,導航到 工作區 → 您的用戶的 Model 。這個 Model 實例名為您目前的 Roblox 帳帳號。

  3. 點擊您角色模型 的鄰近,並添加 HumanoidRootPart

  4. 選擇 附件 並使用 移動 工具將對象放置在檢視角前方的你角色。

  5. Explorer 窗口中,選擇你角色旁邊的 圖示,並且添加一個 Humanoid

  6. 選擇 IKControl 並在 屬性 面板中設定以下屬性值:

    1. 輸入 : 從下拉欄中選擇 Transform
    2. EndEffector : 選擇您的模型的 左手 MeshPart 在 Explorer 中。
    3. 目標 : 選擇目 Explorer 中新建的 附件 對象。
    4. ChainRoot : 在 Explorer 中選取您的模型的 左上角手臂 MeshPart
    IKControl 屬性
    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 和子附件:

  1. 在 Explorer 中,找到您的模型的 左下角手臂 並單擊 ⊕ 按鈕

  2. 增加 關節約束 與名稱 LeftElbowConstraint

  3. 在 Explorer 中,導航至 左上角上臂.左臂弓箭頭附件 並添加附件:

    1. 按一下 ⊕ 按鈕 以添加名為 LeftElbowConstraintAttachment0LeftElbowConstraintAttachment0

    2. 在視角中,選擇附件並使用 旋轉工具 來旋轉附件,讓黃色 主軸 是您的腕部旋轉的預期旋轉軸。

    3. LeftElbowConstraint.Attachment0 屬性設定為此新附件。

  4. 在 Explorer 中,將您的模型 左下角手臂.左臂鞋子 添加附件:

    1. 點擊 ⊕按鈕 並添加 附件LeftElbowConstraintAttachment1的名稱。
    2. LeftUpperArm.LeftElbowConstraint.Attachment1 設定為此新附件。
    3. 複製 LeftElbowConstraintAttachment0.CFrameOrientation 屬性,並將其作為 LeftElbowConstraint.Attachment1.CFrameOrientation 值的貼入。

測試您的 IKControl 以確認肘只能在關節軸上旋轉:

腕部

即使有腕限制式,IKControl 還是能以腕部的姿勢產生不真實的姿勢。

腕錶在某些方向上會不自然彎曲

您可以通過添加 BallSocketConstraint 來限制手腕的旋轉。 雖然這與添加 HingeConstraint 到肘的過程相似,但您可以使用 LimitsEnabled 屬性對此限制來進一步控制手腕的運動範圍。

要為腕表增加 BallSocketConstraint

  1. 在 Explorer 中,找到您的模型的 左手 並按一下 ⊕ 按鈕
    1. 增加 BallSocketConstraint 用 LeftWristConstraint 的名稱。
  2. 找到您的模型的 左下臂.左腕鞋子附件 並添加附件:
    1. 點擊 ⊕按鈕 並添加 附件LeftWristConstraintAttachment0的名稱。
    2. 在視角中,選擇附件並使用 旋轉工具 旋轉附件,讓黃色主軸指向模型的腳趾。
    3. LeftWristConstraint.Attachment0 屬性設置在全新的 LeftWristConstraintAttachment0 上。
  3. 找到您的模型的 左側手腕鏡騰附件 並添加附件:
    1. 點擊 ⊕按鈕 並添加 附件LeftWristConstraintAttachment1的名稱。
    2. 複製 LeftWristConstraintAttachment0.CFrameOrientation 屬性,並將其作為 LeftWristConstraintAttachment1.CFrameOrientation 屬性的貼入。
    3. LeftWristConstraint.Attachment1 屬性設置為此新的 LeftWristConstraintAttachment1
  4. 在 Explorer 中,選擇 左腕約束器
  5. 在屬性編輯器中設置以追蹤中項目:
    1. 啟用 限制已啟用
    2. 上角角度 設為 80 。這會控制限制器的軸可以旋轉多少,80度大約是手腕可以彎曲的程度。
  6. 您的角色取決於您想要調整圓錐的方向。您可以使用 旋轉工具 來旋轉限制的 附件0。

選擇 LeftWristConstraint 時,會出現一個綠色圓錐,表示手腕的移動範圍。

設定約束後,測試 IKControl 使用手指指向角色前方,讓手腕更靈活地旋轉並彎曲。