Live Link を使用すると、幅広いソースからさまざまな種類のデータをストリーミング することができ、そのデータをレベル内でアクタに直接適用することができます。 Unreal Engine は、ユーザーのレベルのアクタに Live Link データを適用するプロセスを合理化するために次のような機能を提供し、これらのワークフローを改善しています。
Live Link プリセット は、後で使用できるソース設定を保存します。
LiveLink コントローラー コンポーネント は、LiveLink コントローラーの使用を有効にします。 LiveLink コントローラーを使用することで、Live Link 情報をアクタに適用するプロセスが簡略化されます。さらに、このデータを収集するためのブループリント ノードもいくつか追加されました。
LiveLink スケルタル アニメーション コンポーネント は、LiveLink が更新されるたびにサブジェクトとソースの情報を取得する OnLiveLinkUpdated イベント ノードを公開します。また、このノードでは、ブループリントを使用して他の多くの関数を実行することもできます。
Live Link の有効化および接続の設定に関する詳細については、「Live Link プラグイン」 のドキュメントを参照してください。
Unreal Engine 4.23 より以前のバージョンでは、LiveLink スケルタル アニメーション コンポーネント は Live Link コンポーネント と呼ばれていました。
Live Link プリセット
Unreal Engine は、[Live Link Connection (Live Link 接続)] ウィンドウで作成したさまざまなソースから Live Link データを取得します。 作成されたソースは プリセット として保存することができ、 Apply to Client ノードを使用してブループリントからアクセスできます。
このノードを使用すると、アプリケーションの起動時に Live Link プリセットをロードできます。
Live Link プリセットは、Live Link パネルの [Presets (プリセット)] ボタン、または [Prouect Settings (プロジェクト設定)] で有効にできます。有効にするには、メニューの [Prouect Settings (プロジェクト設定)] の [Plugins - Live Link (プラグイン - Live Link)] セクションで [Default Live Link Preset (デフォルトの Live Link プリセット)] を設定します。 プリセットは、'LiveLink.Preset.Apply Preset=/Game/Folder/MyLiveLinkPreset.MyLiveLinkPreset' を使用して、コマンド ラインで適用することもできます。
Live Link コンポーネント
LiveLink Skeletal Animation コンポーネント
[コンポーネント] パネルからアクタのブループリントに LiveLink スケルタル アニメーション コンポーネントを追加しても、他のコンポーネントの親にはなりません。 このコンポーネントはブループリント内に配置され、On Live Link Updated Event (Live Link 更新時のイベント) へのアクセスを提供します。
On Live Link Updated イベントは、コンポーネントが更新されるたびにトリガーされます (エディタ内を含む)。
On Live Link Updated ノードは、事実上 Tick Event と同じように機能しますが、エディタ内でも実行されます。 例えば、エディタ内でライブ データを使用したい場合に On Live Link Updated ノードを使用できます。
LiveLink Controller コンポーネント
Live Link Controller コンポーネントは、Live Link コントローラーを使用する機能を提供する、キャラクターのブループリント内に配置されているコンポーネントです。 これらのコントローラーは、Live Link サブジェクトからデータを自動的に取得して、Live Link コントローラーを介してアクタの対応するコンポーネントに取得したデータを適用します。
Live Link コントローラーを使用する
Live Link コントローラーは、迅速に Live Link データを取り込み、シーンのアクタに取り込んだデータを適用する手段を提供します。 各コントローラーは Live Link サブジェクトのデータを使用して、選択したアクタに自動的に適用します。 コントローラーには次の 3 種類があり、役割別に定義されています。
トランスフォーム
カメラ
Light (ライト)
各 Live Link コントローラーの詳細は次のとおりです。
トランスフォーム
トランスフォーム コントローラーは、Live Link サブジェクトからトランスフォーム データを素早く取得して、レベルのアクタに適用します。
このコントローラーには次のオプションがあります。
| 設定 | 説明 |
|---|---|
World Transform (ワールド トランスフォーム) | コンポーネントのトランスフォームをワールド空間に設定します。 ローカル空間の場合はオフにします。 |
Use Scale (スケールを使用) | Live Link のスケール データを使用します。 |
Sweep (スイープ) | ルート コンポーネントをスイープして行く手を阻むコリジョンがないか確認し、目標位置までの移動中にオーバーラップをトリガーし、行く手を阻まれた場合は目標位置に到達する前に停止します。 |
Teleport (テレポート) | 物理ステートをテレポートします (物理コリジョンが有効な場合)。
|
カメラ
カメラ コントローラーは、[Camera Role (カメラの役割)] が設定された Live Link サブジェクトからレベルのカメラ アクタにカメラの設定と動きのデータを直接適用します。
アニメートできるカメラ設定には次のものがあります。
視野角 (度単位)
アスペクト比 (幅/高さ)
焦点距離
F 値によるカメラの開口径
カメラのフォーカス距離(cm 単位。マニュアルのフォーカスでのみ機能する)
カメラの投影モード (パースペクティブ、正投影など)
ライト
ライト コントローラーは、[Lignt Role (ライトの役割)] が設定された Live Link サブジェクトからレベル内のライト アクタにライト設定を直接適用します。
アニメートできるライト設定には次のものがあります。
色温度 (ケルビン単位)
全エネルギー (ルクス単位)
フィルタカラー
内側のコーン角 (スポット ライト用、度単位)
外側のコーン角 (スポットライト用、度単位)
ライトの目に見える影響 (ポイント ライトおよびスポット ライトの場合)。
光源形状のソフト半径 (ポイント ライトとスポット ライトの場合)。
光源形状の長さ (ポイント ライトおよびスポット ライトの場合)。
外部プラグインを使って追加のコントローラーを追加したり、作成したりすることもできます。 外部プラグインの詳細については、「プラグイン」ドキュメントを参照してください。
アクタにコントローラーを適用する
Live Link コントローラーを適用するには、まずアクタに Live Link コントローラー コンポーネントを追加します。
このセクションの手順に従うには、事前に Live Link ソースに接続しておく必要があります。 ソースへの接続の詳細については、Live Link プラグインドキュメントを参照してください。
次の手順で、[Details (詳細)] パネルからコンポーネントを追加します。
レベルでアクタを選択します。
[Details (詳細)] パネルで、[+ Add Component (+ コンポーネントを追加)] ボタンをクリックして、[Live Link ControllerLive Link コントローラー)] コンポーネントを検索します。
追加したら、そのコンポーネントをコンポーネント リストから選択し、[Subject Representation (サブジェクト表現)] ドロップダウン メニューを開きます。 このアクタのデータ ソースとして使用するサブジェクトをリストから選択します。 選択内容に基づいて [Component to Control (制御対象のコンポーネント)] の設定が自動的に選択されます。 必要に応じて調整することも可能です。
コントローラーの設定が完了すると、選択した Live Link サブジェクトからのデータ受信をアクタが自動的に開始します。
一般的なブループリント ノード
Live Link データには、各種ブループリント ノードを介してアクセスできます。
Get Live Link Subjects
Evaluate Live Link Frame ノードで使用するサブジェクトのリストを取得しなければならない場合があります。 そのような場合には、次を使用できます。Get Live Link Subjects :
Evaluate Live Link Frame 関数によって有効であると判断されたサブジェクトの配列を返します。
Evaluate Live Link Frame
Evaluate Live Link Frame 関数を呼び出すことで、指定されたサブジェクト名に関連付けられた Live Link データを取得できます。 この関数は、現在のフレームが有効かどうかを示す実行ピンと、Data Result 出力からアクセス可能なスタティック データとフレーム データを提供します。 このデータは、サブジェクトを評価するために選択された Role のタイプによって決まります。
次の例では、データ構造体ピンから直接アクセスされるデータを示しています。
Evaluate Live Link Frame のデータを使用する
Evaluate Live Link Frame により、Evaluate Live Link Frame で提供されるデータの評価に使用可能ないくつかのブループリント関数にアクセスできるようになります。 結果として得られるデータは評価対象の Role に応じて異なります。 評価対象が [Animation Role] の場合は以下を使用できます。
Get Basic Data
Get Curves
メタデータを取得
Get Root Transform
Get Transform by Index
Get Transform by Name
Number of Transforms
トランスフォーム名
Get Basic Data
Get Basic Data ノードは、現在のサブジェクト フレームに格納されているサブジェクトの基本構造を返します。
Get Curves
Get Curves 関数を使用すると、すべてのブレンド形状またはアニメートされたカーブを取得できます。また、この関数は各エントリの Name to Value のマップを返します。
Find を使用して名前を入力すると、カーブの値を取得できます (または、ブーリアン値を使用して、見つかったかどうかを判断することもできます)。
メタデータを取得
Get Metadata 関数は、サブジェクト フレームに格納されているサブジェクト メタデータ構造体を返します。これを分解して情報を取得することができます。
String Metadata は、サブジェクトの名前付き文字列に対する Map です。例えば、ストリーミングされているオブジェクトのタイプを名前付き文字列として渡すことができます。 また、メタデータには、Scene Timecode と Scene Framerate も含まれており、これらの構造体を分解して必要な情報を得ることができます。
| 出力 | 説明 |
|---|---|
String Metadata | フレームまたはサブジェクトに関する追加情報を提供するために使用される名前付き文字列のマップ (例: "Type": "Camera")。 |
Scene Timecode | 現在のフレームに関連付けられたタイムコード値 これは、一意であることは保証されません。例えば、MotionBuilder で単一のフレームを編集すると、そのフレームのタイムコードが複数のフレームに送信されます。 |
Scene Framerate | Scene Timecode に対応するフレームレート |
Get Root Transform
Get Root Transform 関数は、サブジェクト フレームのルート トランスフォームを Live Link トランスフォーム (トランスフォームがない場合はIdentity として返します。
このノードは、標準のトランスフォームではなく Live Link トランスフォームを返します。Live Link トランスフォームでは追加の関数を呼び出すことができます (概要は次の表を参照)。
| 機能 | 説明 |
|---|---|
Child Count | 指定された Live Link トランスフォームの子の数を返します。 |
コンポーネント空間トランスフォーム | 指定された Live Link トランスフォームルート空間のトランスフォーム値 (モデルのルートに相対的なもの) を返します。 |
Get Children | 指定された Live Link トランスフォームの子 Live Link トランスフォーム の配列を返します。 |
Get Parent | 存在する場合は親 Live Link トランスフォームを、親が存在しない場合は ID トランスフォームを返します。 |
Has Parent | 指定された Live Link トランスフォームに親トランスフォームがあるかどうかを返します。 |
Parent Bone Space Transform | 指定された Live Link トランスフォームの親空間のトランスフォーム値を返します (親空間内でどのように格納されているか、親ボーンにとどのように関連するか)。 |
Transform Name | 指定された Live Link トランスフォームの名前を返します。 |
Get Transform By Index
Get Transform By Index 関数は、指定されたインデックスでサブジェクト フレームに格納されている Live Link トランスフォームを返します (トランスフォーム インデックスが無効な場合は Identity トランスフォームを返します)。
Get Transform by Name
Get Transform by Name 関数は Get Transform by Index とよく似ていますが、トランスフォーム名のデータを取り込みます。
Number of Transforms
Number of Transforms 関数は、サブジェクト フレーム内のトランスフォームの数を返します。
このユース ケースとしては、Get Transform By Index と併用し、各 Live Link トランスフォームをループして取得することが挙げられます (以下の例と同様)。
Get Transform Names
Get Transform Names 関数は、フレーム内のすべてのトランスフォームの名前の配列を返します。
ブループリントで Live Link プリセットを適用する
ブループリントで Live Link を使用する一般的な例として、ランタイム時に Apply to Client ノードを使用して、 Live Link プリセットをスケルタル メッシュに割り当てることが挙げられます。
まず、[Live Link] パネルで Live Link プリセットを作成します。 プリセットの詳細については、「Live Link プラグイン」ドキュメントを参照してください。
キャラクターのブループリント内で新しい変数を作成し、[Details (詳細)] パネルで[Variable Type (変数の型)]を[Live Link Preset (Live Link プリセット)] に設定することで、プリセットへの参照を作成します。
ブループリントをコンパイルして、新しい変数のデフォルト値を、保存した Live Link プリセットに設定します。
変数をブループリントにドラッグして、メニューから [Get (取得)] を選択します。
変数からドラッグして、Apply to Client ノードを検索します。
Event Begin Play ノードを Apply to Client に接続します。