コンストレイント

多様なコンストレイントを使用し、他のオブジェクトにオブジェクトの位置、向き、スケールをアタッチします。

アニメートするとき、場合により、アウトライナーのコントロール階層を変えることなく、要素をまとめてアタッチすることが必要になります。このようにアタッチすることは コンストレイント処理 (拘束) と呼ばれます。Unreal Engine でのコンストレイントは次のメソッドに分けられます。位置回転スケールLookAt です。これらのメソッドでは、これらのコンストレイントが働く方法をコントロールするオプション (アタッチメント オフセットをコントロールし、コンストレイントを通常のキーフレームにベイクし直すなど) を設定できます。

このドキュメントでは、シーケンサーでのコンストレイント処理と各コンストレイント メソッドの異なるワークフローの概要について説明します。

前提条件

  • コントロール リグ アセット が作成済みであること。この手順の詳細については、「コントロール リグ クイックスタート」ページを参照してください。

  • アニメート時のコンストレイントに [Animation Mode (アニメーション モード)] パネルからアクセスできること。そのためには [Animation Mode] を有効にしておく必要があります。

  • シーケンサーに関する 基礎知識 があること。コンストレイントの処理は主に シーケンサー 内でコントロール リグを使用するためです。

コンストレイントを作成する

コンストレイント情報、さらにコンストレイントを追加するワークフローは、Animation Mode が有効であるとき、[Animation] パネルに配置されます。

constraint section in animation panel

コンストレイントは、2 つまたはそれ以上のオブジェクト間で 親 - 子 関係を作成することで設定されます。新しいコンストレイントを作成するには、制約を受けるコントロール (子) をまず選択してから、[+ (コンストレイントを追加)] をクリックして、コンストレイント タイプを選択します。カーソルがピッカーに変わり、ビューポートで (親) に拘束されるオブジェクトを選択するために使用できます。

create constraint

コンストレイント処理はコントロール リグ要素に限られません。どのオブジェクト、アクタにもコンストレイントを適用できます。さらに、シーケンサーを開くことなく、コンストレイントをアクタに適用できます。

コンストレイントを作成した後、拘束されたコントロールに対して、シーケンサーでそのキーフレーム情報を表示できます。多くのコンストレイントは補正キーフレームも生み出し、コンストレイントがアクティブになるとき、子の現在のビジュアル位置は維持されます。これらの補正キーフレームは、コンストレイント キーフレームにリンクされ、タイミングを変更した場合に、それに従います。

constraint keyframe

コンストレイントの使用方法

[Animation (アニメーション)] パネルの [Constraints (コンストレイント)] セクションに、コンストレイントがあるコントロールを選択したときに、コンストレイントは表示されます。ここで新しいコンストレイント キーフレームを作成し、コンストレイントの各プロパティを編集し、元の通常のキーフレームにコンストレイントをベイクできます。

constraint select

オブジェクトに複数のコンストレイントを適用している場合、ここにすべて表示されます。シーケンスをプレイまたはスクラブ再生するとき、各コンストレイントは、アクティブ/非アクティブになったとき、強調表示でそのステータスが示されます。

constraint switching

コンストレイント エントリのボタンでは次の機能を実行できます。

ボタン

説明

Button1.png

シーケンサーの現在の時刻でコンストレイントのアクティブ キーフレームを作成します。コンストレイントがすでにアクティブである場合、無効化キーフレームが代わりに作成されます。コンストレイントがあるオブジェクトで同じワールド位置が維持されるように、補正キーフレームも作成されます。

Manage4.gif

Button2.png

同じオブジェクトに複数のコンストレイントがある場合、これらのボタンでリストの中でコンストレイントを上や下に移動します。Unreal Engine のコンストレイントは階層になっていて、リストで上位にある他のコンストレイントをオーバーライドします (コンストレイントが同じチャンネルをアニメートする場合のみ)。新しいコンストレイントは常に、古いものより優先され、リストで下に配置されます。

Manage6.gif

コンストレイントはオーバーライドできるため、必ずしも他のコンストレイントを無効にする必要はありません。たとえば、親コンストレイント はコントロールのすべてのトランスフォーム チャンネルをアニメートするため、アクティブにするだけで他のすべてを事実上無効にできます。ただし、アクティブされるものが高い優先度であることは必要です。この例では、両方のコンストレイントがアクティブですが、ルート コンストレイントのみがコンストレイント エフェクトを生み出しています。これはリストの下位にあり、高い優先度であるためです。

Manage5.png

Button3.png

このコンストレイントを削除します。

コンストレイント エントリを右クリックすると、コンテキスト メニューが表示され、そこでそのコンストレイント タイプに固有のプロパティを編集し、コンストレイントを ベイク して、補正キーフレーム を設定できます。

constraint properties

コンストレイントをベイク

コンストレイントのアニメートが完了したら、最終結果をキーフレームにベイクできます。通常のキーフレーム アニメーションに戻して、コンストレイントを考慮せずにさらに編集する場合に便利です。

選択コントロールをベイクするには、コンストレイント エントリを右クリックして、[Bake (ベイク)] を選択します。

bake constraint

キーフレームを補正

アニメート操作で、コンストレイントを有効または無効にしたときに、コンストレイントにより動きが滑らかではなくなる (とびが発生する) ことがあります。これが起きるのは、一般にコンストレイントを作成した後に、親のポーズを調整した場合で、そうすると元の補正されたキーフレームに一致したビジュアルが壊れるためです。

constraint pop

これを解決するには、問題があるコントロールを選択し、コンストレイントを右クリックして、[Compensate Key (キーを補正)] を選択します。また、シーケンサーの 再生ヘッド が、修正するコンストレイント キーフレームと同じ時刻にあることを確認する必要があります。これにより、親オブジェクトの新しい位置に対して新しい補正キーフレームが作り直されます。

fix constraint pop

[Compensate Keys] は単一のコンストレイントにおけるエラーを解決するために使用できますが、[Compensate All Keys (すべてのキーを補正)] は、シーケンスにあるすべてのコンストレイントがあるコントロールに対して、すべての補正キーフレームを再作成するために使用できます。選択対象や再生ヘッドの位置に関係ありません。

ダイナミック オフセット

デフォルトでは、影響を及ぼすコンストレイントに加えて、コンストレイントがあるオブジェクトにキーフレームを設定できます。このオプションを無効にして、子オブジェクトがアニメートされないようにする場合は、コンストレイントを右クリックして、[Dynamic Offset (ダイナミック オフセット)] を無効にします。これによりコンストレイントのあるオブジェクトの位置が現在のトランスフォームでロックされ、親オブジェクトが動く場合にのみ動きます。

dynamic offset

コンストレイント マネージャ

レベル シーケンスで多くのオブジェクトにコンストレイントを設定するとき、コンストレイントを管理し、表示するのが難しくなることがあります。Constraints Manager Actor (コンストレイント マネージャ アクタ) を使用して、レベル内ですべてのコンストレイントを表示し、管理できます。

コンストレイントを初めて作成したとき、Constraints Manager Actor がレベル内に自動で作成され、選択すると、すべての使用されているコンストレイントが単一のリストにまとめられます。これにより、同じタイミングで複数のオブジェクトにある多数のコンストレイントを表示し、管理するのが簡単になります。

constraints manager

コンストレイント タイプ

次に [+ (Add Constraint)] をクリックしたときに作成できるコンストレイント タイプを示します。

constraint types

平行移動コンストレイント

平行移動コンストレイント は平行移動の各軸に沿った動きにのみオブジェクトを拘束します。親の位置に従いますが、回転やスケールは従いません。

translation constraint

[Maintain Offset (オフセットを維持)] をコンストレイント コンテキスト メニューから無効にすると、コンストレイントがあるオブジェクトは絶対座標系での親オブジェクトの位置に従います。コンストレイントが作成されたときの相対位置は関係ありません。

translation constraint maintain offset

回転コンストレイント

回転コンストレイント は回転の各軸に対してのみオブジェクトを拘束します。親の回転に従いますが、平行移動やスケールに従いません。

rotation constraint

[Maintain Offset] をコンストレイント コンテキスト メニューから無効にすると、コンストレイントがあるオブジェクトは絶対座標系での親オブジェクトの回転に従います。コンストレイントが作成されたときの相対位置は関係ありません。

rotation constraint maintain offset

スケール コンストレイント

スケール コンストレイント はスケールの各軸に対してのみオブジェクトを拘束します。親のスケールに従いますが、平行移動や回転に従いません。

scale constraint

[Maintain Offset] をコンストレイント コンテキスト メニューから無効にすると、コンストレイントがあるオブジェクトは絶対座標系での親オブジェクトのスケールに従います。コンストレイントが作成されたときの相対位置は関係ありません。

scale constraint maintain offset

親コンストレイント

親コンストレイント は階層的にアタッチされているように、親へのすべての軸とチャンネルに対してオブジェクトを拘束します。

parent constraint

デフォルトでは、スケールは親コンストレイントに含まれません。これを含めるには、コンストレイント エントリで右クリックして、[Scaling (スケーリング)] を有効にします。

enable scale in parent constraint

他のコンストレイント タイプと同様に、[Maintain Offset] を無効にすると、コンストレイントがあるオブジェクトは絶対座標系での親オブジェクトのトランスフォームに従います。コンストレイントが作成されたときの相対位置は関係ありません。

LookAt コンストレイント

LookAt コンストレイント は親の位置に照準を合わせることにより、回転軸のみにオブジェクトを拘束します。

aim constraint

コンストレイント エントリを右クリックして、[Axis (軸)] の各プロパティを編集することで、子オブジェクトの照準方向を設定できます。

aim axis

他の照準タイプ アタッチメントと異なり、LookAt コンストレイントは上向きベクターを使用しません。代わりに、ロール 軸をアニメートして、動きをロールさせる方法を手動でコントロールできます。他の照準タイプ アタッチメントに共通する、回転による反転問題を解消するためにも役に立ちます。

aim constraint roll no flip

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル