逆運動学

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

逆運動学 (IK) は、キャラクターが効果的に動き、現実的に環境と相互作用するためのコンピュータアニメーションで一般的な技術です。キャラクターにリアルな動きを作成するプロセスでは、さまざまな関節の多くの反復と微調整が必要です。IKを使用すると、単一のオブジェクトをポーズまたは調整することで、複数のキャラクター部分をポーズおよびアニメーションすることができます。

このアニメーション技術は、以下の例に対する解決策を提供できます:

キャラクターの手を掴み、手首、肘、肩などの関連する手足を自動的に調整しながらポーズを取ります。
異なる表面や傾斜でキャラクターの足が現実的に相互作用するようにします。
単一のターゲットオブジェクトを掴んで移動させることで、キャラクターと小道具とのリアルな相互作用をすばやく作成します。

IKControl

IKControlを使用して、Animation Editorの外部でキャラクターリグにIKを手法的に追加できます。Studioでは、プログラム的にIKをすべてのキャラクター(R15、Rthro、カスタムインポートされたスキンキャラクターなど)に適用して、ゲーム内でリアルな動きや相互作用を作成することができます。

IKControlを追加する際には、必要なプロパティを正しく設定して、予期しない不自然なアニメーション結果を回避します。すべてのアニメーションと同様に、IKControlsをテストして、目的の動作を達成できるか確認してください。

必要なプロパティ

キャラクターのHumanoidまたはAnimationControllerIKControlを追加する際、IKを有効にするためには以下の必要なプロパティを設定する必要があります:

プロパティ説明
TypeIKコントロールの動作タイプを指定します。動作オプションのリストについてはEnum.IKControlTypeを参照してください。一般的な動作タイプにはPositionまたはTransformがあります。
EndEffectorTargetを指し示すキャラクターリグ内のBasePartまたはBoneです。たとえば、LeftHandボーンをEndEffectorとして設定すると、Targetとして設定されたドアノブオブジェクトに手が届くようにできます。
TargetEndEffectorが到達または指し示すオブジェクトです。Targetはワールド位置を持つ任意のオブジェクトであることができます。
ChainRootIKControlが影響を与えるBasePartsまたはBonesの連鎖を定義します。ChainRootEndEffectorの間のすべての接続された部分は、定義された動作タイプを使用してIKControlに影響されます。

たとえば、キャラクターのLeftHandTargetとして設定すると、ChainRootLeftUpperArmに設定することで左腕全体にIKを適用できます。肘の下の部分にだけIKを適用する場合は、ChainRootLeftLowerArmに設定します。

IKControlsをテストする

プログラム的にまたはExplorerを介して直接IKControlを追加および編集できます。Playテスト中にIKControlを追加したり変更したりして、さまざまなプロパティがキャラクターの動きにどのように影響するかを迅速に確認できます。

Attachmentをターゲットとして使用してIKControlをすばやくテストするには:

  1. Studioのメザニンから、プレイテストを開始します。

  2. Explorerで、Workspace → あなたのユーザーのModelに移動します。このModelインスタンスの名前は、現在のRobloxアカウントと同じです。

  3. キャラクターモデルのHumanoidRootPartの隣にある**⊕**アイコンをクリックし、Attachmentを追加します。

  4. Attachmentを選択し、Moveツールを使用してビューポート内でキャラクターの前にオブジェクトを配置します。

  5. Explorerウィンドウで、キャラクターのHumanoidの隣にある**⊕**アイコンを選択し、IKControlを追加します。

  6. IKControlを選択し、Propertiesウィンドウで以下のプロパティ値を設定します:

    1. Type: ドロップダウンからTransformを選択します。
    2. EndEffector: ExplorerでモデルのLeftHand MeshPartを選択します。
    3. Target: Explorerで新しく作成したAttachmentオブジェクトを選択します。
    4. ChainRoot: ExplorerでモデルのLeftUpperArm MeshPartを選択します。
    IKControlプロパティ
    Explorer - キャラクターモデル

    キャラクターの左腕は、今やターゲットのAttachmentに手を伸ばすはずです。Attachmentを移動させたり、IKControlのプロパティを編集したりして、さまざまな結果を享受することができます。

制約を追加する

Constraintsを使用して、ターゲットに到達するときの関節の動きを制限できます。制約を使用すると、肘や膝などの関節が自然に曲がるようにしたり、機械的な関節が特定の方向に回転するようにできます。

肘が不自然に曲がっている
肘が正しく曲がっている

キャラクターにIKControlを使用して制約を追加するには、IKControlと制約が以下の条件を満たす必要があります:

以下の手順では、キャラクターの肘の回転を制限するためにHingeConstraintを追加し、手首にBallSocketConstraintを追加して回転角度を制限する方法について説明します。

Roblox R15キャラクターには、肘制約を適用するために使用できるアタッチメントがすでに関節に含まれています。肘の場合、LeftUpperArmとLeftLowerArmの両方にLeftElbowRigAttachmentが含まれています。制約を追加する際には、各部分のLeftElbowRigAttachmentに追加の子アタッチメントを追加して、肘が回転できる軸を指定する必要があります。

HingeConstraintと子アタッチメントを追加するための手順:

  1. ExplorerでモデルのLeftLowerArmを見つけて、⊕ボタンをクリックします。

  2. LeftElbowConstraintという名前のHingeConstraintを追加します。

  3. Explorerで、LeftUpperArm.LeftElbowRigAttachmentをナビゲートしてアタッチメントを追加します:

    1. ⊕ボタンをクリックして、LeftElbowConstraintAttachment0という名前のAttachmentを追加します。

    2. ビューポートでアタッチメントを選択し、Rotateツールを使用してアタッチメントを回転させ、黄色のPrimaryAxisが肘の予想される回転の軸になるようにします。

    3. LeftElbowConstraint.Attachment0プロパティをこの新しいアタッチメントに設定します。

  4. ExplorerでモデルのLeftLowerArm.LeftElbowRigAttachmentをナビゲートしてアタッチメントを追加します:

    1. ⊕ボタンをクリックして、LeftElbowConstraintAttachment1という名前のAttachmentを追加します。
    2. LeftUpperArm.LeftElbowConstraint.Attachment1プロパティをこの新しいアタッチメントに設定します。
    3. LeftElbowConstraintAttachment0.CFrameOrientationプロパティをコピーして、LeftElbowConstraint.Attachment1.CFrameOrientation値としてペーストします。

肘がヒンジ軸の周りだけを回転することを確認するためにIKControlをテストしてください:

手首

肘の制約があっても、IKControlは手首に対して非現実的なポーズを生成することがあります。

特定の方向で非現実的に曲がる手首

手首の回転を制限するためにBallSocketConstraintを追加することでこれを改善できます。これは肘にHingeConstraintを追加するプロセスに似ていますが、この制約のLimitsEnabledプロパティを使用して手首の可動範囲をさらに制御できます。

手首のためにBallSocketConstraintを追加するには:

  1. ExplorerでモデルのLeftHandを見つけて、⊕ボタンをクリックします。
    1. LeftWristConstraintという名前のBallSocketConstraintを追加します。
  2. モデルのLeftLowerArm.LeftWristRigAttachmentを見つけてアタッチメントを追加します:
    1. ⊕ボタンをクリックし、LeftWristConstraintAttachment0という名前のAttachmentを追加します。
    2. ビューポートでアタッチメントを選択し、Rotateツールを使用してアタッチメントを回転させ、黄色のPrimaryAxisがモデルの指先を指すようにします。
    3. LeftWristConstraint.Attachment0プロパティを新しいLeftWristConstraintAttachment0に設定します。
  3. モデルのLeftHand.LeftWristRigAttachmentを見つけてアタッチメントを追加します:
    1. ⊕ボタンをクリックして、LeftWristConstraintAttachment1という名前のAttachmentを追加します。
    2. LeftWristConstraintAttachment0.CFrameOrientationプロパティをコピーしてLeftWristConstraintAttachment1.CFrameOrientationプロパティにペーストします。
    3. LeftWristConstraint.Attachment1プロパティをこの新しいLeftWristConstraintAttachment1に設定します。
  4. ExplorerLeftWristConstraintを選択します。
  5. Propertiesウィンドウで以下を設定します:
    1. LimitsEnabledを有効にします。
    2. UpperAngle80に設定します。これは制約の軸が回転できる角度を制御し、80度は手首が曲がることができる程度に相当します。
  6. キャラクターに応じて、円錐が指す方向を微調整することができます。これはRotateツールを使用して制約のAttachment0を回転させることで行います。

LeftWristConstraintを選択すると、手首の動作範囲を視覚化する緑の円錐が表示されます。

制約が設定されたら、キャラクターの前で手を下に指した状態でIKControlをテストすると、手首がより現実的に回転し、曲がるはずです。

©2026 Roblox Corporation。Roblox(ロブロックス)、RobloxロゴおよびPowering Imaginationは、米国並びにその他の国における登録商標および非登録商標です。