Control Rig

コントロールリグは、キャラクターにリギングして、リアルタイムでのアニメーション化を実現します。

Windows
MacOS
Linux

コントロールリグを使用すると、インポートしたスケルタル メッシュにカスタム コントロールを作成できます。このコントロールを通じて、Unreal Editor で新しいアニメーションを作成したり、既存のアニメーションを変更したりできます。このドキュメントでは、コントロールリグ エディタの概要と、リグを使用したアニメーションの作成方法を説明します。

前提条件

Control Rig プラグインを有効にする必要があります。それには、Unreal Editor メニュー バーで [Edit (編集)] > [Plugins (プラグイン)] の順に移動し、Control Rig を検索します。プラグインを有効にしたのを確認して、エディタを再起動します。

control rig plugin

  • スケルタル メッシュ アセットをプロジェクトにインポートしておきます。

  • Unreal シーケンサ ツールの使用経験が必要です。

コントロールリグ アセットの作成

スケルタル メッシュのコントロールリグを作成する方法は、いくつかあります。

1 つ目は、スケルタル メッシュ アセットを右クリックして、[Create Control Rig (コントロールリグを作成)] を選択する方法です。これで、新しい コントロールリグ アセットが、スケルタル メッシュに割り当てられた状態で作成されます。アセットには、スケルタル メッシュ名に _CtrlRig というサフィックスを付けた名前が自動的に付けられます。

create control rig

2 つ目は、コントロール リグ を手動で作成する方法です。それには、コンテンツ ブラウザで右クリックし、[Animation (アニメーション)] > [Control Rig (コントロールリグ)] を選択します。コンテキスト メニューで [ControlRig] を選択して [Create (作成)] をクリックします。

create control rig 2

アセットの作成後、コンテンツ ブラウザでアセットをダブルクリックして開きます。

この方法でコントロールリグを作成した場合、コントロールリグ アセットを開いた後に手動でスケルトンをコントロールリグ アセットに追加する必要があります。

コントロールリグ エディタ

コントロールリグ アセットを開くと、コントロールリグ エディタが表示されます。以下に、主な領域の概要を示します。

image alt text

  1. ツール バー

  2. ビューポート

  3. リグ階層

  4. 実行スタック

  5. リグ グラフ

  6. 詳細/プレビューシーン

  7. マイ ブループリント

ツールバー

image alt text

コントロールリグ ツールバーには、プレビュー動作とコントロールリグ構築の制御に使用するボタンと設定があります。各ボタンと具体的なコントロールリグ機能は以下のとおりです。

コンパイル

image alt text

リグ階層に変更を加えた場合は必ずコンパイルが必要になります。その変更には、コントロール、ボーン、スペースの追加、削除、再ペアレント化、名前の変更が含まれます。また、変数を作成したときにも再コンパイルが必要です。

[Compile (コンパイル)] ボタンはコントロールをリセットする手段としても使用できます。

compile reset

イベント モード

イベント モード ツールは、異なるグラフ イベント チェーンを切り替えるために使用します。各オプションは、リグ グラフのイベント ノードに関連付けられています。

image alt text

Setup Event は Setup Event ノード チェーンの実行と、セットアップ モードの有効化を行います。セットアップ モードでは、ボーン、コントロール、スペースの初期位置を操作できます。

Forwards Solve は、Forwards Solve ノード チェーンをトリガーします。このモードでコントロールを移動すると、現在の位置のみに影響します。この影響は一時的なものです。

Backwards Solve は、Backwards Solve ノード チェーンを実行します。このモードは、シーケンサの Bake to Control Rig (コントロールリグにベイク) 機能を利用するためのもので、通常とは逆に、ボーンでコントロールを駆動できます。

Backwards and Forwards は、Backwards Solve チェーンを実行した後、Forwards Solve チェーンを実行します。このモードは一般的に、両方のチェーンがうまく順番に連携することを検証したい場合に使用します。

自動コンパイル

image alt text

これを有効にすると、リグ グラフで変更を行った際に、コンパイルを自動的に行います。上記で挙げた変更以外は、やはり手動でコンパイルが必要です。

デバッグ オブジェクト

image alt text

このドロップダウン メニューで、コントロールリグ ビューポートをアクティブなゲーム セッションのキャラクターにリンクできます。これにより、コントロールリグ ビューポートでそのセッションの現在のアニメーションをプレビューできます。

control rig debug object link

クラス設定

image alt text

ここに表示されるアイテムの大半は、普通のブループリント プロパティです。コントロールリグ ブループリント内のクラス設定には、Gizmo Library (ギズモ ライブラリ) が含まれています。この設定を使用して、コントロールで形状を定義するために使用するさまざまなギズモを編集できます。

image alt text

ビューポート

ビューポートでは、コントロールリグ ノードの操作と、さまざまなプレビュー モードと表示設定の指定ができます。

control rig viewport

コントロールリグ オプションは [View Options (表示オプション)] パネル内にあります。[Display Spaces (表示スペース)] は、シーン内のすべてのスペース オブジェクトのローカル軸の描画を有効または無効にします。[Display Axes on Selection (選択時に軸を表示)] は、スペースを選択した際にローカル軸の描画のみを行います。[Axes Scale (軸のスケーリング)] は、描画された軸をスケーリングします。

control rig view options

リグ階層

[Rig Hierarchy (リグ階層)] パネルは、現在のスケルトンとコントロールの階層をアウトライナ形式のビューで表示するために使用します。ここは、新しい ボーンコントロールスペース を作成するための主な領域でもあります。

これらの要素を作成するには、パネルで右クリックをして、[New (新規)] > [Bone (ボーン)]、[Control (コントロール)] または [Space (スペース)] を選択します。これで、新しいコントロールが 0,0,0 の位置に作成されます。

create control space bone

その他のコンテキスト メニュー コマンドには以下があります。

Reset Transform / All Transforms

現在選択しているノードまたはすべてのノードを初期トランスフォームにリセットします。

control rig reset transform

Set Initial Transform from Current

初期トランスフォームを現在のノードの位置に設定します。トランスフォームをリセットすると、この新しい位置にリセットされるようになります。

control rig initial transform

Set Initial Transform from Closest Bone

このコマンドを使用すると、選択したコントロールが最も近いボーンにスナップされ、その位置が初期トランスフォームとして設定されます。コントロールをボーンに揃える際に便利です。

control rig closest bone

Set Gizmo Transform from Current

ギズモのトランスフォームを設定する際にこのコマンドを実行すると、ギズモのピボット ポイントが初期トランスフォームにリセットされます。ただし、ギズモの現在のビジュアル位置は維持されます。ピボット ポイントを維持しながらギズモのビジュアル位置をカスタマイズする際にも便利です。

control rig gizmo transform offset

Unparent

Unparent は現在選択しているノードを親から解除して、階層の最上部に配置します。

control rig unparent

実行スタック

Execution Stack (実行スタック) パネルでは、グラフ内の操作の順番をプレビューできます。これを使用して、ノードのデバッグとイベントのシーケンスの評価ができます。

実行ノードを右クリックして、[Focus on Selection (選択項目にフォーカス)] を選択すると、リグ グラフでその現在のノードにフォーカスが移動します。

control rig execution stack

リグ グラフ

リグ グラフは、コントロールリグのビヘイビアをスクリプティングする際に中心となる場所です。

階層ノードは、[Hierarchy (階層)] パネルからグラフにノードをドラッグ アンド ドロップして必要な参照タイプを選択することで、グラフで参照できます。

control rig graph

ノードは右クリックで作成することもできます。コンテキスト メニューで目的のノードを検索するか、コンテキスト メニュー内を移動して目的のノードを見付けます。実行イベントを持つノードは、利便性のために自動的に前のノードの実行イベントにフックされます。

control rig graph

詳細/プレビュー シーン

詳細 パネルには、コントロールリグ エディタ内で選択した要素の情報が表示されます。選択できる要素は、コントロール、ボーン、グラフ ノードなどです。

control rig details

プレビュー シーン パネルには、ビューポートのシーンのビジュアル情報が表示されます。ここで、スケルタル メッシュのプレビューの変更や、ライティングやその他のビジュアル設定の調節ができます。

My Blueprint

マイ ブループリント パネルは、法線ブループリントのように、さまざまな 関数変数 を保管しています。

image alt text

関数と変数は、パネル上部またはそれぞれのヘッダーにある [Add (追加)] ボタンをクリックすることで追加できます。

image alt text

コントロールリグの変数は、レベル内のインスタンスに直接公開するというよりも、リグ グラフ内でロジックを制御する手段として使用されます。

基本的な FK コントロールリグの作成

このセクションでは、単純な FK (フォワード キネマティック) コントロールリグを作成する方法を説明します。この例では、5 つのメイン ボーンを持つ比較的シンプルなロボットの腕を使用します。

まず、目的のスケルタル メッシュに対してコントロールリグ アセットを作成します。コンテンツ ブラウザでアセットを右クリックして、[Create Control Rig (コントロールリグを作成)] を選択します。この作業が終わったら、アセットを開きます。

create control rig

コントロールの作成

次に最初のコントロールを作成します。これがルートとなります。リグ階層を右クリックして、[New (新規)] > [New Control (新しいコントロール)] を選択します。この方法で作成したコントロールは、シーンの座標 0,0,0 に作成されます。作成後、このコントロールの名前を変更できます。

create control rig root

この例のように、ビューポート内にコントロールが表示されない可能性があります。ギズモの形状と色を変更するには、コントロールを選択して、[Details] パネルで [Gizmo (ギズモ)] カテゴリに移動します。ここのプロパティを使用して、コントロールの形状、サイズ、色をカスタマイズできます。

control rig gizmo shape color size

次は、残りのボーンのコントロールを作成します。これを効率的に行う方法の 1 つは、目的のボーンを右クリックして、[New] > [New Control] を選択することです。このようにすると、選択したボーンと同じトランスフォームでコントロールが作成されるため、アライメントが容易になります。

create fk controls control rig

ペアレンティングと階層

コントロールの形状と名前を調整したら、コントロールをスケルタル階層の親から解除し、ボーンとは別にコントロールの階層を作成する必要もあります。それには、ノードを右クリックして [Unparent (親から解除)] を選択します。すべてのコントロールを親から解除したら、Space ノードは不要なので削除します。

control rig unparent

これで、コントロールの階層を再作成できるようになりました。それには、リグ階層ビューでコントロールをドラッグ アンド ドロップして、目的のコントロールと親子関係を作ります。これをすべてのコントロールで行います。

リグ ロジック

リグ階層が準備できたら、次はボーンに影響するコントロールのバインディングを開始します。

まず、ルート ボーンを [Hierarchy] パネルから [Rig Graph] にドラッグし、[Set Transform (トランスフォームを設定)] を選択します。これで、そのボーンをターゲットとする Set Transform ノードが作成されます。次に、対応するコントロールをグラフにドラッグ アンド ドロップし、[Get Control (コントロールを取得)] を選択します。最後に、Get Transform - Control ノードの Transform ピンを Set Transform - Bone ノードに接続します。

control rig set transform

コントロールを自由に移動して、移動によってボーンにどのような影響があるかをプレビューします。Set Transform ノードの Propagate to Children を有効にすると、階層におけるそのボーンの子すべてに変更が反映されます。

control rig move control

次は、残りのボーンとコントロールに類似のロジック チェーンを作成します。各コントロールの Get Transform ノードを、ボーンの対応する Set Transform ノードに接続します。

image alt text

完了したら、すべてのコントロールで対応するボーンを操作できます。なお、[Compile] ボタンを使用すると、コントロールを初期トランスフォームにすばやくリセットできます。

control rig fk controls

基本的な IK コントロールリグの作成

このセクションでは、単純な IK (インバース キネマティック) コントロールリグを作成する方法を説明します。この例では、5 つのメイン ボーンを持つ比較的シンプルなロボットの腕を使用します。また、このドキュメントで既に説明したように、ルート コントロールを持つコントロールリグ アセットを作成済みであることを前提にしています。

コントロールの作成

最初に、最終エフェクタ コントロール を作成します。これは比較的単純な例なので、IK エフェクタ コントロールを 1 つ作成する必要があるだけです。

目的のボーン (手) を右クリックして Ctrl + N キーを押すと、選択したボーンに対する新しいコントロールをすばやく作成できます。次に、そのコントロールを右クリックして [Unparent] を選択し、コントロールの親子関係を解除します。対応する不要な Space 要素を削除します。

create control hotkey

また、[Details] パネルでコントロールに自由に名前を付け、目的の色、サイズ、形状を設定できます。

リグ ロジック

[Rig Graph] で右クリックして、[Hierarchy] > [CCDIK] の順に移動し、選択してこのノードを作成します。CCDIK ノードは IK ノードの一種で、さまざまなボーンとエフェクタに接続できます。

control rig ccdik

次に、Item Chain ノードを作成します。それには、グラフで右クリックして、[Collections] > [Item Chain] の順に選択します。Item Chain ノードは、IK チェーンの開始ボーンと最終ボーンを定義するために使用します。定義したら、それらの間にある他のボーンすべてを含むチェーン コレクション全体が形成されます。

First Item カテゴリで、Name に目的の開始ボーンを設定します。Last Item の Name も同じようにします。

image alt text

最後に、エフェクタ コントロールリグ階層 から グラフ にドラッグ アンド ドロップして、[Get Control] を選択します。Get Transform - Control ノードの Transform ピンを CCDIK ノードの Effector Transform ピンに接続します。次に、Item Chain ノードの Collection ピンを CCDIK ノードの Items ピンに接続します。

control rig ik ccdik item chain

これで、IK チェーンが機能します。ビューポートでコントロールを移動して、結果を確認します。また、CCDIK ノードの Propagate to Children をオンにして、子ボーンが親ボーンの設定に従うようにできます。

control rig ik propagate

シーケンサでのアニメート

コントロールリグが完成したら、シーケンサでアニメートできます。

簡単な方法は、コントロールリグ アセットを コンテンツ ブラウザ からレベルにドラッグすることです。このようにすると、新しいシーケンサ アセットが自動で作成されて開き、アニメートを開始できます。

control rig level

コントロールにキーフレームを設定するには、Enter キーを押す (すべてにキーを設定する) か、コントロールを選択して S キーを押します (トランスフォームのみにキーを設定する)。

control rig sequencer keyframe

コントロールは、プライマリ コントロールリグ トラックの下の子トラックとして配置されます。すべてのコントロールに設定されたすべてのキーを表示することも、さらに展開して個別のコントロールとそれに関連付けられたキーフレームを表示することもできます。

control rig sequencer tracks

目的のアニメーションが実現するまで、コントロールのアニメートを継続します。

control rig animate sequencer