Live Link プラグイン

Live Link プラグインを有効にして使用する方法と、Unreal Engine 4 のアニメーション システム内の各種機能について説明します。

Live Link の目的は、アニメーション データを外部ソース (DDC ツールや Mocap サーバー) から Unreal Engine (UE) にストリーミングして使用するための共通インターフェースを提供することです。Unreal プラグインを通じて拡張できるよう設計されており、可能な限りエンジンの変更やそのメンテナンスを必要とせずに、サード パーティによる新機能の開発を可能にします。

Live Link により、Maya や Motionbuilder などの DDC ツールを使用して外部でアニメーションを編集しながら、その変更を Unreal Engine でリアルタイムにプレビューできるようになります。モーション キャプチャ システムでも Live Link を使用してデータをエンジンにストリーミングすることができ、これもリアルタイムでプレビューすることができます。

Live Link クライアント

Live Link のハブとなるのが Live Link クライアント であり、プロジェクト内で Live Link プラグインを有効にした際に作成されます。このクライアントには主に 2 つの役割があります。

  1. ソースの管理:これらはデータのソースであり、Live Link にデータを提供する、同一マシン上またはネットワーク上の他のアプリケーションへの接続を主に表します。

  2. サブジェクトの管理:サブジェクトはクライアント内の個々のデータ ストリームで、アニメートする 1 つのキャラクターが 1 つのサブジェクトになります。

    サブジェクトは次のデータで構成されています。

    1. 名前

    2. 不変のスタティック データ (アニメーション ロールのスケルトンなど)

    3. データの 1 つ以上の「フレーム」 (アニメーション ロールのボーン トランスフォームなど)

また、クライアントには、エンジンで使用する次フレーム用データをビルドする役割もあります。直近で受信したデータの直接コピーか、受信データのバッファリングとユーザー定義可能な遅延を含む再生で作成された補間フレームを使用します。

役割

Live Link は、受信データの使用方法を定義する 役割 の概念に基づいています。これにより、エンジン内のターゲット アクタへのデータ マッピングをより簡単に行うことができます。サポートされている役割には、カメラ、ライト、キャラクター、トランスフォーム、および基本 (全般的なデータ向け) の役割があります。

ソース

ソースは、データが Live Link クライアントに取り込まれる方法を表します。ソースはプラグイン内で定義できるため、サード パーティの開発者はエンジン コードの変更なしに独自のものをビルドすることができます。ソースには、アニメーション データの受信方法を管理する役割があります。例えば、ネットワーク プロトコルを介したり、マシン自体に接続されているデバイス用の API から読み取ったりするなどの方法があります。それぞれのソースには、クライアントにデータを渡すことを可能にする参照が渡されます。 Live Link プラグイン内で、Unreal メッセージ バス接続からデータを読み取る独自のソース (メッセージ バス ソース) を定義しました。Maya および Motionbuilder 向けの Live Link プラグインのビルドにもこのソースを使用しました。

UDP メッセージング

Live Link メッセージ バス ソースを使用する際、メッセージ バス ソースは内部で UDP メッセージングを使用し、最初に検知するネットワーク アダプタを (デフォルトで) 使用します。マシンに複数のネットワーク アダプタが存在する場合は、特定のアダプタからデータを受信しようとする際にこれが問題となる可能性があります。 特定のネットワーク アダプタの UDP データを受信する場合は、[Edit (編集)] > [Project Settings (プロジェクト設定)] > [UDP Messaging][Unicast Endpoint (ユニキャスト エンドポイント)]で設定を変更する必要があります。

UDPMessaging.png

例えば、次の 2 つのアダプタがあるとします。

  • アダプタ A:XX.X.XXX.123

  • アダプタ BXXX.XXX.X.53

ネットワーク アダプタ B の Live Link メッセージ バス ソースからデータを受信する場合、[Unicast Endpoint] を 「XXX.XXX.X.53:0」に設定します。

「:0」の部分は、すべてのポートをリストすることを指定します。

UDP メッセージングは、「-game」ではデフォルトで有効になっていません。パッケージ化されたゲームで -messaging を追加することでこれを有効にできます (シッピング ターゲットはサポートされていません)。

Live Link を有効にする

Live Link プラグインを有効にするには、[Plugins (プラグイン)] ウィンドウ ([Edit] > [Plugins]) で [Animation (アニメーション)] カテゴリを選択し、Live Link プラグインの [Enabled (有効化)] をオンにします。

Step_02-1.png

Live Link の接続ウィンドウ

Live Link プラグインを有効にすると、 [Window (ウィンドウ)] メニューから Live Link クライアントにアクセスできるようになります。

EnableLink_1-1.png

Live Link オプションを選択すると Live Link 接続 ウィンドウが開き、ソース タイプとサブジェクトを追加することができます。

SourceSettings.png

上の画像では、プラグインを実行している Maya のインスタンスへのオープン接続を含む Live Link クライアントを確認できます (左上のセクション)。 このインスタンスでは、2 つのカメラ サブジェクト (「EditorActiveCamera」と「camera1」) と、「TestCube」という名前のトランスフォーム データを含む 1 つのサブジェクトの計 3 つのサブジェクトをエディタに送信しています (左下のセクション)。

ソースを追加する

ソースを追加するには、 + Source (ソース追加) ボタンをクリックして、Live Link と接続するソースのタイプを選択します。

AddSourceType.png

接続先のソースとして外部アプリケーションを表示するには、Live Link を介して Unreal Engine 4 にデータを送信するよう当該の外部アプリケーションを設定する必要があります。詳細については、 Live Link プラグインの開発 ページを参照してください。

メッセージ バス ソースを介したデータ受信に加えて、Live Link では Magic Leap などのデバイス用の ハンド トラッキング ソースと 仮想サブジェクト (複数のサブジェクトを 1 つの「仮想サブジェクト」に統合可) を作成する機能をサポートします。 例えば、キャラクター A の下半身とキャラクター B の上半身を組み合わせて新しいサブジェクトを作成できます。また、あるソースからのカメラ追跡データを使用して、別の追跡オブジェクトのトランスレーションのみを組み合わせて、手動で操作することもできます。

ソースのパネルでは、接続されたすべてのソースを管理できます。ソースの横にある ゴミ箱 アイコンをクリックして、そのソースを削除することもできます。

また、[Presets (プリセット)] ボタンをクリックして保存したり、以前に保存したプリセットをロードしたりすることもできます。

SaveAsPreset.png

プリセットは コンテンツ ブラウザ 内でアセットとして保存され、これによって以前のコンフィギュレーションを簡単にロードできるようになります。

サブジェクト パネル

Live Link の接続ウィンドウの Subjects パネルには、接続されているソースとストリーミングされているサブジェクトが表示されます。

SourceSettings.png

このパネルにはそれぞれのサブジェクトの名前、関連付けられているロール、ステータス インジケーターが表示されます。データを受信している場合はインジケーターが緑色で表示されます。 ソースに接続していても、指定した時間内 ([Project Settings] で設定可、デフォルトは「0.5」ミリ秒) にデータを受信しなかった場合はインジケーターが黄色になります。

接続設定

有効な接続を確立したら、以下の設定を使用して接続のパラメータを定義できます。

プロパティ

説明

Evaluation Mode

フレーム スナップショットの作成方法を指定します。

評価モード

説明

Engine Time

サブジェクトの評価にソースでエンジンの時間が使用されます。このモードはアニメーションをスムーズにする際に最適です。

Latest

サブジェクトの評価にソースで利用可能な最新のフレームが使用されます。このモードでは、いかなる補間や時間の同期も試行されません。

Timecode

サブジェクトの評価にソースでエンジンのタイムコードが使用されます。このモードは、ソースを他の複数の外部入力 (ビデオや他の時間同期ソースなど) と同期する必要がある場合に最適です。

エンジンをタイムコード プロバイダ向けに設定していない場合は使用しないでください。

Valid Engine Time

フレームが ValidTIme よりも古い場合に、バッファ リストから削除されます (秒単位)。

Engine Time Offset

時間で評価する場合に、現在の時間からどれだけ戻ってバッファを読み取るかを指定します (秒単位)。

Timecode Frame Rate

タイムコードで評価する場合に、タイムコードのフレーム レートの期待値を指定します。

Valid Timecode Frame

フレームのタイムコードが ValidTimecodeFrame よりも古い場合に、バッファ リストから削除されます (TimecodeFrameRate 単位)。

Timecode Frame Offset

タイムコードで評価する場合に、現在のタイムコードからどれだけ戻ってバッファを読み取るかを指定します (TimecodeFramerRate 単位)。

Max Number of Frame to Buffered

メモリ内で維持する最大フレーム数を定義します。

Source Debug Infos

ソースから渡されるデバッグ情報のコレクションです。

補間設定

サブジェクトを追加したら、選択したサブジェクトに [Pre Processors][Interpolation]、または [Translators] を割り当てることができます。

LiveLinkConnected-1.png

プロパティ

説明

Pre Processors

任意のフレームに対して受信データをサブジェクトに渡す前の処理に影響を及ぼします。例えば、[Axis Switch (軸スイッチ)] を選択すると、受信したトランフォームの軸を別の軸に切り替えます。

Interpolation

フレームのブレンドに使用する補間方法を定義します。

Translators

データのロールを別のロールに変換します。例えば、データをスケルトンからトランスフォームに変換したりします。キャラクターの臀部の場所のみを取得する場合などに便利です。データを適切なロールに変換します。

エディタの統合

現バージョンのアニメーション エディタは Live Link とビルトインで統合されており、[Preview Controller)] プロパティの [Preview Scene Settings] タブからアクセスできます。

PreviewSceneSettings-3.png

Live Link プラグインを有効にすると、[Preview Controller] オプションを [Live Link Preview Controller (Live Link プレビュー コントローラー)] に変更できるようになります。これを選択すると、次のオプションを設定できるようになります。

  • Subject Name:プレビュー メッシュに適用する Live Link のサブジェクトの名前です。

  • Enable Camera Sync:Unreal Editor のカメラと外部のエディタの同期を有効にします。内部的には EditorActiveCamera と呼ばれるサブジェクトの Live Link が参照されます。内部で開発された Maya と Motionbuilder プラグインの両方でこれがサポートされています。

  • Retarget Asset:プレビュー メッシュに適用される Live Link データに適用するリターゲット アセットを指定します。

下のビデオでは、Maya Live Link プラグインを使用して Unreal Engine と Maya との接続を確立しています。

Live Link コンポーネント

[Live Link Controller (Live Link コントローラー)] および [Live Link Skeletal Animation (Live Link スケルタル アニメーション)] コンポーネントをアクタに追加して、接続されている外部ソースの Live Link でアクタのパラメータを操作することができます。

これらのコンポーネントを使用するには、 [Add Component (コンポーネントを追加)] ボタンをクリックして、Live Link Controller コンポーネント (または Live Link Skeletal Animation コンポーネント) を選択します。

AddLiveLinkComponent.png

Live Link コントローラーは、[Details (詳細)] パネルの [Subject Representation] プロパティで、接続されたサブジェクトから選択することができます。サブジェクトに応じてロールが自動的に割り当てられますが、これを変更することも可能です。[Component to Control)] は実際に Live Link を介して操作されるコンポーネントを示します。 下のビデオでは、Maya からカメラを動かして焦点距離を変更できるようにする Live Link コントローラー コンポーネントを含む Cine Camera アクタが示されています。さらに、スケルタル メッシュで Live Link スケルタル アニメーション コンポーネントを使用して、アニメーション データをストリーミングする様子も示されています。このために Live Link Pose ノードが Animation ブループリントに追加されて、サブジェクトが選択されています。

Live Link コントローラーでもアニメーションを制御することはできますが、最良の結果を得るためには、アニメーションに Live Link スケルタル アニメーション コンポーネントを使用することを推奨します。

ブループリント関数の呼び出しを使用して Live Link データにアクセスすることもできます。下の画像では、 Evaluate Live Link Frame (Live Link フレームの評価) 関数が任意のロールを使用して、指定されたサブジェクトから Live Link フレームを取得しようとします (下の例では、サブジェクトが「camera1」で、[Camera Role] がアクセスされます)。

LiveLinkInBlueprints.png

次に、フレーム データをデータの結果から取得します。この場合はサブジェクトからのトランスフォーム情報です。この情報は、ブループリント内で Cine Camera の相対トランスフォームの更新にの場合はサブジェクトからのトランスフォーム情報です。こ使用されます。

Unreal Engine バージョン 4.23 より前の Maya Live Link プラグインを使用している場合、ブループリントを介してカメラを操作する際に、トランスフォームが適切に行われないことがあります。これを修正するには、下の画像にあるように Add Relative Rotation (相対回転の追加) ノードを追加して、その値をそれぞれ 「0」、「180」、「90」 に設定します。

422CameraFix.png

Live Link リターゲット

現バージョンでは、Live Link リターゲットはリターゲット アセットによって実行されます (Base class ULiveLinkRetargetAsset)。Live Link のポーズ ノードには、使用するリターゲット アセットを指定するピンが含まれています。ive Link から USkeleton への変換マッピングを可能にするために、非常にシンプルなリマップ アセット (ULiveLinkRemapAsset) が提供されています。次は、リターゲット アセットを実装する方法の例です。

Live Link リターゲット アセットで次の関数をオーバーライドする必要があります。

    BuildPoseForSubject(const FLiveLinkSubjectFrame& InFrame, TSharedPtr<FLiveLinkRetargetContext> InOutContext, FCompactPose& OutPose, FBlendedCurve& OutCurve)

この関数では次の引数を受け取ります。

  • LiveLinkSubjectFrame: オプションでバッファおよび補間される、Live Link が参照するトランスフォーム/スケルトンです。

  • FLiveLinkRetargetContext: ULiveLinkRetargetAsset が毎回インスタンス化されないため (CreateRetargetContext をオーバーライドすることでカスタマイズ可)、インスタンス データのリターゲティングを可能にします。

  • FCompactPose: アニメーションの評価に使用する形式、FCompactPose のリターゲティングからの出力ポーズです。

  • FBlendedCurve: 出力カーブ データです。ULiveLinkRetargetAsset には、提供された Live Link データからこのデータを入力するヘルパ関数 BuildCurveData が含まれています。

リターゲット アセットはブループリントで操作することもでき、ユーザーはエディタ内でロジックを指定することができます (適切な場合)。この機能はリマップ アセットで使用され、エディタ内でボーン名を変換できるようになります。

Live Link リマップ アセット

新しいリターゲット アセットの作成に必要なものを示す例がエディタ内にあります。/Engine/Plugins/Animation/LiveLink/Source/LiveLink にある次のクラスを参照してください。

  • ULiveLinkRetargetAsset

  • ULiveLinkRemapAsset

リマップ アセットの作成には、エディタで LiveLinkRemapAsset クラス タイプを使用します。

RemapBlueprint-3.png

リマップ アセット内では Get Remapped Bone Name 関数をオーバーライドできます。

RemapBlueprint2.png

これによってエディタ内でボーン名を変換できます。

GetRemappedBone.png

上の例では、Maya のスケルタル メッシュからボーン名情報を取り込んでいます。このデータは修正されて、Unreal Engine のボーン名の命名規則にマップされます。

例えば Maya では、使用される命名規則はボーン名を CharacterName:BoneName と参照します。UE4 では、スケルトン アセットは 「BoneName」 の部分のみを使用します。Maya で Unreal Engine スケルトンにデータをストリーミングするために、リマップ アセットを使用して、コロンの位置で文字列を分割し、コロン後の文字列情報のみを受け取ることで Get Remapped Bone Name 関数をオーバーライドします。つまり、 「CharacterName:BoneName」 ではなく 「BoneName」 を取得します。

[Preview Scene Settings] ウィンドウで、このリターゲット アセットを使用するよう指定します。

RemapBlueprint3.png

Animation ブループリント

Live Link のデータは Animation ブループリント内で直接適用することができます。

AnimBPLiveLink.png

これを行うには、Animation ブループリントの AnimGraph 内に Live Link Pose ノードを作成します。このノードには 2 つのプロパティがあります。

  • Subject Name:データ ストリーミング元の Live Link のサブジェクト名です。

  • Retarget Asset:Live Link からのデータを Animation ブループリントが使用するスケルトンに適用する際に使用するリターゲット アセットです。

Live Link Pose ノードの出力は、Anim ブループリント内の他のポーズ ノードから得られるものと同じような通常のポーズであるため、他のポーズと同様に操作することができます (例: Modifier ノードや Blend ノードに入力する)。

エディタでは Live Link Pose ノードを使用しなくてもアニメーションを操作することはできますが、アニメーションをラインタイムで操作するには、Animation ブループリント内に Live Link Pose ノードを設定する必要があります。

モーション コントローラー

Live Link はモーション コントローラーとの併用が可能です。モーション コントローラーのモーション ソース プロパティを Live Link 内のサブジェクトに設定できます。

MotionController.png

このように設定すると、モーション コントローラー コンポーネントの位置が、サブジェクトの最初のトランスフォームで管理されます。

モーション コントローラーの統合により、Live Link サブジェクトのカスタム パラメータにアクセスすることも可能です。これらのパラメータは、Live Link サブジェクトにビルトインされているカーブ サポートによって渡されます。これらの値にアクセスするには、 MotionControllerComponent から新しいブループリントを派生させて OnMotionControllerUpdated 関数をオーバーライドする必要があります。OnMotionControllerUpdated の間は、モーション コントローラー上で GetParameterValue の呼び出しが有効になります。

プライグイン開発

Live Link との統合には 2 つの方法があります。

  • Live Link に新しいソースを公開する Unreal Engine プラグインをビルドする。

すでに独自のストリーミング プロトコルがある場合はこの方法が推奨されます。

  • サードパーティ ソフトウェアでメッセージ バス エンドポイントを統合することで、ビルトイン メッセージ バス ソースのデータ トランスミッターとして機能させる。

ここで Maya と Motionbuilder ブラグインに採用している方法です。

詳細については、「Live Link プラグイン の開発」を参照してください。

Maya Live Link プラグイン

Maya Live Link プラグインのプレビルド バイナリは、Unreal Engine 4 GitHub レポジトリの Maya Live Link Plugin から入手可能です。 zip ファイルをダウンロードして解凍すると、Windows 版 Maya 2016 ~ 2019 のバイナリがそれぞれ表示されます。

Maya プラグインは Maya Module 形式で提供されます。Maya プラグインをインストールするには、zip ファイル内にある適切なバージョンのフォルダのコンテンツを Maya Module フォルダにコピーします。 Live Link プラグインを Maya にインストールして有効にすると、自動的に Unreal Editor 内で接続として表示されるようになります。Maya でウィンドウを開いて、ストリーミング設定にアクセスすることができます。MEL コマンドの MayaLiveLinkUI によってスポーンされ、ツールバーのボタンにバインドすることができます。

MayaLiveLinkUI.png

上の画像の画面右上には、Maya のこのインスタンスが Unreal クライアントに接続されているかどうかが示されています。 [Unreal Engine Live Link] の下には、現在ストリーミングされているすべてのサブジェクトが表示されます。マイナス記号 (-) ボタンをクリックしてサブジェクトを削除したり、[Add Selection] ボタンを使って、シーンで選択しているアイテム (複数可) を追加したりできます。 また、[Stream Type] オプションを使用して、ストリーミングされているデータのタイプを割り当てることもできます。

Maya Live Link プラグインの詳細な設定手順については、「Unreal Engine を Live Link で Maya に接続する」操作ガイドを参照してください。

Motionbuilder ライブリンク プラグイン

Motionbuilder プラグインは Maya プラグインと同じ機能を提供し、Maya プラグインと同様にエディタ内で接続として表示されます。また、ストリーミングを管理するためのカスタム UI も備わっています。

MotionBuilderLiveLinkPlugin.png

上の画像のように、現在のシーンからオブジェクトを選択して、ストリーミングのリストに追加できます。この画面の Subject Name (サブジェクト名) 列で名前を設定し、Stream Type (ストリーム タイプ) を設定することもできます。サブジェクト上でのストリーミングもここで有効/無効に設定できます。

Motionbuilder Live Link プラグイン のバイナリは、Unreal Engine 4 GitHub レポジトリからダウンロードできます。

Motionbuilder Live Link プラグインの詳細な設定手順については、Unreal Engine を Live Link で Motionbuilder に接続する 操作ガイドを参照してください。

ART Tracking Live Link プラグイン

ART Tracking (アドバンスト リアルタイム トラッキング) は、Live Link を通じて次の用途でサポートされています。

  • ボディ トラッカー

  • フライスティック トラッカー

  • ハンド トラッカー

  • ヒューマン モデル

Live Link を介した ART Tracking により、VR、AR、モーション キャプチャなどのアプリケーションで、さまざまなトラッキングに ART の技術を活用できるようになります。

ART は Live Link プラグインを Marketplace (マーケットプレイス) で配布し、Github 上で最新の開発をホストします。

このページは Unreal Engine の前のバージョン用です。現在リリースされている Unreal Engine 5.3 に対して更新は行われていません。
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル