逆向き kinematics (IK) は、コンピューターアニメーションでキャラクターが環境と実際に相互作用する方法を効率的に作成するための共通のテクニックです。プロセスを作成するためには、複数の関節の間の小さな調整や実際に動くキャラクターパーツをポーズする必要があります。IK では、<
このアニメーション技術は、次の例に解決できます:
IKControl
Class.IKControl を使用して、アニメーションエディタの外でキャラクターのリグに IK を手続き的に追加できます。Studio では、R15、Rthro などのすべてのキャラクターにプログラマチックに IK を適用できます。たとえ R15 や Rthro などのカスタムインポートされたスキンがあっても、リグ内の IK
Class.IKControl を追加すると、 必要なプロパティ を正しく設定して、予期せぬおよび不自然なアニメーション結果を避けます。すべてのアニメーションで、 IKControls をテストして、期待される動作を確認します。
必要なプロパティ
キャラクターの IKControl を Humanoid または AnimationController に追加するときは、次の必須プロパティを設定して IK を有効にする必要があります:
プロパティ | 説明 |
---|---|
Type | IK コントロールの動作タイプを指定します。IK コントロールのリストについては、Enum.IKControlTypeを参照してください。一般的な動作タイプは Position または Transform です。 |
EndEffector | あなたのキャラクターリグで BasePart または Bone を設定して、 Target に向かってトラックします。たとえば、 2>左側の骨 |
Target | Class.IKControl.EndEffector|EndEffector は、Target に到達またはポイントします。Class.IKControl.Target|Target は、世界の位置の任意のオブジェクトです。 |
ChainRoot | Class.IKControl.ChainRoot|ChainRoot とBones の間の関係を定義するチェーンは、Class.IKControl.ChainRoot|Chain |
IKControls のテスト
Class.IKControl プログラムを追加および編集するには、エクスプローラーを介して直接またはプログラマチックに追加できます。IKControl 中でプレイテストを実行して、さまざまなプロパティがキャラクターの動作にどのように影響するかを迅速に確認できます。
ターゲットとして IKControl を使用して、Attachment をクイックにテストするには:
In the Test tab, select プレイを開始する to start the Play test.
In the Explorer, エクスプローラーで ワークスペース へ移動します。この Model インスタンスは、現在の Roblox アカウントと名前付けされています。
クリックして、 ⊕ アイコンをキャラクターモデルの HumanoidRootPart の隣に追加し、 アタッチメント を追加します。
選択して アタッチメント 、 移動 ツールを使用して、ビューポートでキャラクターの前にオブジェクトを配置します。
In the Explorer window, select the ⊕ icon next to your character's Humanoid and add an 1>IKControl1> .
Select the IKControl and set the following property values in the Properties panel:
- タイプ : ドロップダウンから Transform を選択します。
- ターゲット : エクスプローラーで新しく作成された アタッチメント オブジェクトを選択します。
あなたのキャラクターの左腕は、ターゲットに到達する必要があります Attachment。 あなたは、Attachment を移動するか、プロパティを編集して異なる結果を達成することができます。
制限を追加する
Class.Constraint|Constraints を使用して、共同がターゲットに到達するときに移動できるように制限できます。制限は、腕の曲げと膝の曲げなどの共同を自然に捕捉できます。また、メカニカルな共同を特定の方向に回転させるために制限を使用できます。
Class.IKControl を使用して、キャラクターに制限を追加するには、IKControl と制限は次のコンディションを満たす必要があります:
- Class.Limit のアタッチメントは、 Class.Limit の Class.Limit.Attach0|Attach0 / Class.Limit.Attach1|Attach1 プロパティに、1> Class.Motor6D1> 4> Class.Motor6D.Part0|Part1
- Class.Motor6D / Attachment1 / Motor6D の相対位置は、 1>Class.Motor6D1> / 4>Class.Motor6D.C04> / 7>Class.Motor6D.C17> の相対位
- 制限とIKControlは共通の親 Model を持つ。
次の指示では、HingeConstraint を追加して、キャラクターのエルボの回転を制限し、BallSocketConstraint を腕に追加して、回転角度を制限するために腕を回転できるようにします。
エルボー
Roblox R15 のキャラクターはすでに共同にアタッチメントを含み、腕の曲げる範囲を適用するために使用できます。腕の場合、左上アームと左下アームの両方に LeftElbowRigAttachment が追加されます。制限を追加すると、それぞれのパーツ
Class.HingeConstraint と子供のアタッチメントを追加するには:
In the Explorer, モデルの 左下腕 を見つけ、 ⊕ ボタン をクリックします。
Add a HingeConstraint with the name LeftElbowConstraint。
In the Explorer, ナビゲート to the 左上アーム.左腕リグアタッチメント and add an 付属品:
クリックして ⊕ ボタン を追加して、 アタッチメント を名前付きで LeftElbowConstraintAttachment0 に追加します。
ビューポートで、アタッチメントを選択し、 Rotate tool を使用して、アタッチメントを回転して、黄色い 主要軸 がエルボーの期待される回転の軸であるようにします。
この新しいアタッチメントに LeftElbowConstraint.Attachment0 プロパティを設定します。
In the Explorer, navigate to your model's 左下アーム.左腕リグアタッチメント add an 追加の付属物:
- クリックして ⊕ ボタン を追加し、 アタッチメント を名前付きで LeftElbowConstraintAttachment1 を追加します。
- この新しいアタッチメントに LeftUpperArm.LeftElbowConstraint.Attachment1 プロパティを設定します。
- コピー the LeftElbowConstraintAttachment0.CFrameRotation プロパティ and paste it as the LeftElbowConstraint.Attachment1.CFrameRotation value.
IKControl をテストして、エルボルのみが関節の軸に回転するかどうかを確認します:
腕首
腕の制限にもかかわらず、IKControl はまだ腕に不自然なポーズを生成できます。
これを改善するために、BallSocketConstraint を追加して、腕の回転を制限できます。これは、HingeConstraint を腕に追加するプロセスと似ていますが、この制限の上に使用する LimitsEnabled プロパテ
腕に BallSocketConstraint を追加するには:
- In the Explorer, locate your model's 左側手 and click the ⊕ button.
- Add a ボールソケットコンストラクト with the name LeftWristConstraint .
- モデルの 左下腕.左腕リグアタッチメント を見つけ、追加してください:
- クリックして ⊕ ボタン を追加し、 アタッチメント を名前付きで LeftWristConstraintAttachment0 を追加します。
- ビューポートで、アタッチメントを選択し、 Rotate tool を使用して、アタッチメントを回転して、黄色の主要軸がモデルの指先に向くようにします。
- Set the LeftWristConstraint.Attachment0 property to the new LeftWristConstraintAttachment0 .
- モデルの LeftHand.LeftWristRigAttachment を見つけ、アタッチメントを追加します:
- クリックして ⊕ ボタン を追加し、 アタッチメント を名前付きで LeftWristConstraintAttachment1 を追加します。
- コピー the LeftWristConstraintAttachment0.CFrameOrientation プロパティ and paste it as the LeftWristConstraintAttachment1.CFrameOrientation プロパティ.
- Set the LeftWristConstraint.Attachment1 property to this new LeftWristConstraintAttachment1 .
- In the Explorer, select the LeftWristConstraint .
- プロパティエディタで、フォロー中の設定を設定します:
- LimitsEnabled を有効にします。
- 上角 を 80 に設定します。これは、制限の軸がどれだけ回転できるかを制御し、80度は腕の曲げることができる程度です。
- キャラクターによって、コーンが指している方向を調整したい場合があります。これは、Rotate tool を使用して、制限のアタッチメント0 を回転することで行うことができます。
LeftWristConstraint を選択すると、腕の動きの範囲を表示する緑のコーンが表示されます。
制限を設定した状態で、IKControl をキャラクターの前に手を差してテストし、IKControl が実際に回転し、柔軟性を持つようになるか、または手を差してテストして、手が実際に回転し、柔軟性を持つようになるかをよりリアルにテストします。