逆動力學

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

逆動力學 (IK) 是電腦動畫中常見的技巧,可以有效地讓角色在環境中實際地移動和互動。為角色創建一個逼真的運動過程經常需要多次迭代和各種關節的微調。使用 IK,您可以通過擺姿勢或調整單一物物件來塑造和動畫多個角色部分。

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

抓取並擺放角色的手,同時自動調整相關的肢體,例如腕、肘和肩。
>

讓角色的腳在不同表面和坡度上實際地互動。
>

抓取並移動單個目標物件來快速創建與角色和道具實際互動。
>

IK控制

您可以使用 IKControl 來在動畫編輯器之外的角色幀中以程序方式添加 IK。工作室允許您以程式方式應用 IK 到所有角色,例如 R15、Rthro 和自訂進口外觀角色,以在體驗中創建出現實的運動和互動。

當添加 IKControl 時,正確設置 需要的屬性 以避免意外和不自然的動畫結果。與所有動畫一樣,測試您的 IK控件以確保您達到所需的行為。

需要的屬性

當將 IKControl 添加到角色的 HumanoidAnimationController 時,您必須設置以下必需屬性,以啟用IK:

屬性說明
Type指定 IK 控制的行為類型。請見 Enum.IKControlType 列出行為選項的列表。常見的行為類型是 PositionTransform
EndEffector您角色模型中的 BasePartBone 跟蹤到 Target 的角色模型。例如,您可以將 左手骨 設為 EndEffector 以達到作為 Target 的門把手對象設置。
TargetEndEffector 到達或指向的對象。一個 Target 可以是任何擁有世界位置的對象。
ChainRoot定義影響 BasePartsBones 的疊加鏈,其中 IKControl 受影響。所有連接到 和 之間的零件都受到定義的行為類型影響,使用定義的行為類型。例如,如果你的角色的 左手 設為 Target,你可以將 IK 應用到整個左臂,設置 ChainRoot左上臂 。若要應用 IK 只於肘下的部分,請將 ChainRoot 設置為 左下臂

測試 IK控件

您可以透過程式方式新增或編輯 IKControl 程式或直接通過探索器進行。您甚至可以在遊戲測試期間添加並更改 IKControl 以快速檢查各種屬性如何影響角色的運動。

若要快速測試您的 IKControl 使用一個 Attachment 作為目標:

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

  2. 導航器 中,導航到 工作區 → 您的使用者的 Model。這個 Model 實例被命名為您目前的 Roblox 帳號。

  3. 點擊角色模型的 圖標旁邊的HumanoidRootPart,並添加一個 附件

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

  5. 檢索器 窗口中,選擇你角色的 圖示旁邊的 Humanoid ,然後添加一個 IKControl

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

    1. 類型 : 從下拉列表中選擇 Transform
    2. 終端效果器 :在探索器中選擇您的模型的 左手 MeshPart
    3. 目標 :在 Explorer 中選擇新建的 附件 對象。
    4. 樹狀根 : 在 Explorer 中選擇您的模型的 左上臂 MeshPart

    IKControl 屬性
    >

    探索面板 - 角色模型
    >

    你的角色左臂現在應該能夠達到目標 Attachment 。您可以通過移動 Attachment 或編輯 IKControl 屬性來實現不同的結果。

添加限制

您可以使用 Constraints 來限制關節在達到目標時可以移動的方式。限制可以確保肘和膝蓋自然彎折,或使機械聯節在特定方向旋轉。

肘部彎曲不自然
>

正確彎折肘
>

若要使用 IKControl 將限制添加到你的角色,你的 IKControl 和限制必須符合以下條件:

  • 約束的 / 》屬性中提到的附件會附在相同的限制式件上,與 》 / 》 / 》 一樣。
  • Attachment0 / Attachment1 的相對位置必須與對應的 Motor6D / C0 / C1 CFrames 的位置相等。
  • 限制和 IKControl 共享相同的父 Model

以下說明描述了添加 HingeConstraint 來限制角色肘部的旋轉和添加 BallSocketConstraint 來限制旋轉角度的過程。

肘子

Roblox R15 角色已包含在它們的聯結中附加的附件,您可以使用它們來應用肘部限制式。對於肘,左上臂和左下臂都包含 LeftElbowRigAttachment 。除了添加限制式外,您還需要為每個零件的 LeftElbowRigAttachment 添加額外的子附件,以指定肘子可以旋轉的軸。

要添加 HingeConstraint 和子附件:

  1. 在探索器中,找到您的模型的 左下臂 並點擊 ⊕ 按鈕

  2. 添加具有名稱 **** 的 LeftElbowConstraint

  3. 在探索器中,導航到 左上臂.左肘子附件 並添加附件:

    1. 點擊 ⊕ 按鈕 以添加名稱為 的附件。

    2. 在視角中,選擇附件並使用 旋轉工具 旋轉附件,使黃色 主軸 成為你肘部預期旋轉的軸。

    3. 左肘束約束。附件0 屬性設為此新附件。

  4. 在探索器中,導航到你的模型的 左下臂.左肘子附件 添加附件:

    1. 點擊 ⊕ 按鈕 並添加具有名稱 **** 的 LeftElbowConstraintAttachment1
    2. 左上臂.左肘束約束.附件1 屬性設為此新附件。
    3. 複製 左肘束約束附件0.CFrameOrientation 屬性,並將其貼為 左肘束附件1.CFrameOrientation 值。

測試您的 IKControl 以確認肘僅轉動關於其旋轉軸:

腳踝

即使有肘部限制式,IKControl仍然可以使用腳踝產生不切實際的姿勢。

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

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

要為腕部添加 BallSocketConstraint 來添加腕部:

  1. 在探索器中,找到您的模型的 左手 並點擊 ⊕ 按鈕
    1. 添加名稱為 BallSocketConstraintLeftWristConstraint 球體約束。
  2. 找到你的模型的 左下臂.左腕子附件 並添加附件:
    1. 點擊 ⊕ 按鈕 並添加具有名稱 **** 的 LeftWristConstraintAttachment0
    2. 在視角中,選擇附件並使用 旋轉工具 將附件旋轉,使黃色主軸指向模型的手指。
    3. 左腕束約束。附件0 屬性設為新的 LeftWristConstraintAttachment0
  3. 找到你的模型的 左手.左腕Rig附件 並添加附件:
    1. 點擊 ⊕ 按鈕 並添加具有名稱 **** 的 LeftWristConstraintAttachment1
    2. 複製 左腕束縛附件0.CFrameOrientation 屬性,並將其貼為 左腕束縛附件1.CFrameOrientation 屬性。
    3. 左腕束縛限制。附件1 屬性設為此新的 左腕束縛限制附件1
  4. 在探索器中,選擇 左腕束縛
  5. 在屬性編輯器中,設置以追蹤中:
    1. 啟用 限制啟用
    2. 上角 設為 80。這會控制限制軸的旋轉量,80 度大約是手腕應該能夠彎折的程度。
  6. 根據您的角色,您可能想調整錐指向的方向。您可以使用 旋轉工具 來旋轉約限制式的 附件0

當選擇 左腕限制 時,會出現綠色錐體,視覺化手腕的運動範圍。

配置限制後,測試IKControl手指指向角色前方,肘應更真實地旋轉和彎曲。