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