iPhone X からフェイシャル アニメーションを記録する

Live Link Face アプリ、ARKit、Live Link を使用してキャプチャしたフェイシャル アニメーションを Unreal Engine のキャラクターに適用する方法を説明します。

Windows
MacOS
Linux

Apple iPhone の最新モデルは、ユーザーの顔の 50 の特定の筋肉の位置、トポロジー、移動を認識する最新の顔認識機能とモーション トラック機能を提供します。IPhone に深度カメラと ARKit 機能が備わっている場合、Epic Games から無料で提供されている Live Link Face アプリを使って、Unreal Engine 内の 3D キャラクター上で複雑なフェイシャル アニメーションを操作して、それらを iPhone 上でライブでエンジンに記録することができます。

このページでは、Live Link Face アプリを使ってライブ パフォーマンスを適用し、適用したフェイシャル キャプチャ システムをフルスケールの制作撮影に活用する方法を説明します。

Live Link Face アプリは Epic Games Launcher の [Learn (ラーニング)] タブから使用できる Face AR Sample が使用している ARKit 機能と同じものです。ただし、Face AR Sample は iOS 用にコンパイルする必要があり、この作業には Mac と Apple developer account が必要になります。Live Link Face アプリを使うと、フェイシャル アニメーションをすぐに適用して、Unreal Engine プロジェクトのキャラクターを適切に設定することができます。

前提条件:

  • このページで記載するマテリアルは Unreal Engine の別のツールおよび機能について触れています。以下のマテリアルについてすでに知識があると、作業がスムーズに行うことができます。

  • 深度カメラと ARKit の両方を備えた iPhone モデルが必要になります。これらの機能は通常 iPhone X 以降に含まれています。

操作を開始する

このセクションの手順に従って、Unreal Engine プロジェクトの設定、Live Link Face アプリの接続、アプリで記録されたデータの 3D キャラクターへの適用を行います。

  1. プロジェクトで次のプラグインを有効にします。

    • Live Link

    • ARKit

    • ARKit Face Support

  2. ARKit の顔認識で生成された顔のブレンド シェイプと一致するブレンド シェイを使ってキャラクターを設定する必要があります。通常この作業は Autodesk Maya などサードパーティのリグ構築およびアニメーション ツールで行い、その後でキャラクターを Unreal Engine にインポートする必要があります。

    使用するキャラクターがサポートする必要のあるブレンド シェイプの一覧は「Apple ARKit ドキュメント 」を参照してください。

    使用するキャラクターを準備していない場合は、Epic Games Launcher の [Learn (ラーニング)] タブから「Face AR Sample」を使用することができます。

    使用するキャラクターのブレンド シェイプの名前は ARKit ブレンド シェイプとまったく同じである必要はありません。LiveLinkRemap アセット内にカスタムのブループリント関数を作成して、ARKit ブレンド シェイプ名を自分のキャラクターで使用する名前に変換することができます。手順については「Face AR サンプル ドキュメント ]」を参照してください。ただし、最良の結果を得るために、使用するキャラクターのフェイシャル ブレンド シェイプが覆う顔領域は ARKit ブレンド シェイプと同じになるようにしてください。

  3. Live Link Pose ノードが含まれるアニメーション ブループリントを使って Unreal Engine にキャラクターを設定します。たとえば、Face AR Sample の男の子をアニメーション ブループリントに取り込みます。

    Live Link Pose node in an Animation Blueprint

    後でこのノードを使って写真からキャラクターに送信されたアニメーションを適用します。

  4. 使用するコンピュータの IP アドレスを取得します。これを Live Link Face アプリを接続する必要があります。

    IP アドレスは、通常はコンピュータのコントロール パネルまたは設定で確認できます。または、ほどんとの Windows では ipconfig コマンドライン ユーティリティを使用することができます。

    • コンピュータがインターネットに接続している場合、ネットワーク内でのみ表示されるローカル IP アドレスとオープン インターネット上での特定が可能なパブリック IP アドレスの両方が表示される場合があります。その場合はローカル IP アドレスを選択してください。ローカル IP アドレスは通常 10. または 192.168. で始まります。

    • また、異なるアダプタ用に複数の IP アドレスが設定されている場合があります。たとえば、有線イーサーネット アダプタとワイヤレス アダプタのそれぞれが個別のアドレスをもつ場合があります。ご使用のコンピュータがどちらのアダプタを使用していても、IP アドレスは使用する iPhone と同じネットワークに接続する設定になっていることを確認してください。

  5. Apple App Store で Epic Games が無料で提供している Live Link Face アプリを探して iPhone にインストールします。

    Live Link Face icon

  6. iPhone をコンピュータと同じワイヤレス ネットワークに接続するか、Lightning Ethernet アダプタを使ってイーサーネット ケーブルで iPhone を直接コンピュータに接続します。

    Live Link はネットワーク データ ソースが必要なので、USB で iPhone をコンピュータに接続するには十分ではありません。

  7. iPhone で Live Link Face を実行します。ホーム画面から開始します。ここで新しい記録を開始することができます。

    開始すると、カメラの画面上に ARKit 顔認識システムによって生成された三角メッシュが置かれます。上の画像のように、[プレビューメッシュ] 設定をオフにすることでオーバーレイを無効にして顔を確認することができます。以下の「Live Link Face アプリの操作 」セクションを参照してください。

  8. 左上にあるアイコンをタップして、アプリ設定を開きます。最低でも、コンピュータに接続可能にするために LiveLink 設定を開く必要があります。

    [LiveLink] 設定ページで [ターゲットを追加] を選択してコンピュータの IP アドレスを入力します。

    アニメーションを複数の Unreal Editor インスタンスに配信する必要がある場合、ここに複数の IP アドレスを入力します。以下の「複数のユーザーと作業する 」セクションを参照してください。

    Live Link Face アプリのその他の設定の詳細については、以下のセクションを参照してください。

  9. Unreal Editor のメインメニューから [Window] > [Live Link] を選択して [Live Link] パネルを開きます。iPhone がサブジェクトとしてリストに追加されていることが確認できます。

    Live Link subject

  10. キャラクターのアニメーション グラフで、Live Link Pose ノードのサブジェクトを iPhone にします。

    Live Link Pose node with subject

  11. Animation ブループリントを コンパイル保存 します。

  12. キャラクターを選択します。[Details (詳細)] パネルで、[Skeletal Mesh (スケルタルメッシュ)] カテゴリの [Update Animation in Editor (エディタでアニメーションを更新)] が有効になっていることを確認します。

    Update Animation in Editor

  13. Live Link Face に戻って、アプリが顔を認識し、顔の動きの追跡を開始するまで自分の顔を iPhone のカメラに向けます。

    この時点で、Unreal Editor のキャラクターが自分に合わせてリアルタイムで顔を動かすことを確認できます。

  14. パフォーマンスを記録する準備が整ったら、Live Link Face アプリの赤い [Record (記録)] ボタンをタップします。これにより、iPhone へのパフォーマンスの記録が開始し、Unreal Editor のテイクレコーダーが起動し、エンジンのキャラクター上のアニメーション データを記録を開始します。

    記録を停止するには、再度 [Record] ボタンをタップします。

Live Link Face アプリの操作

Live Link Face アプリのホーム画面では以下の操作ができます。

1

設定ダイアログを開きます。

2

すべての LiveLink ターゲットにフェイシャル アニメーション データを送信するに切り替えます。緑で強調表示されている場合、アプリはアニメーション データを送信しています。

ライブの場合は、アプリ設定で設定されたタイムコード ソースから読み込まれた現在のタイムコード値もリスト表示します。

3

ビデオ表示とフェイシャル トラックのオンオフを切り替えます。

4

新規テイクの記録を開始および停止します。

5

アプリがこれまで記録したテイクのリストを開きます。

6

現在のスレートとテイク、LiveLink サブジェクト名を表示します。タップをして現在のスレート名またはテイク番号を変更します。

7

緑で強調表示されている場合、ARKit フェイシャル キャプチャ システムが現在のカメラ ビューの顔を正常に検知できていることを示します。

Live Link Face アプリの設定

ホーム画面左上のアイコンをタップして設定ページを開きます。ここでアプリのビヘイビアを設定することができます。

設定

説明

LiveLink

Live Link を介してアニメーション データが送信され記録を制御するように、アプリを Unreal Engine を実行するコンピュータに接続するように設定します。

タイムコード

Live Link Face アプリのタイムコード ソースを設定します。詳細は TODO:link を参照してください。

OSC

Live Link Face アプリと外部 OSC コントローラとデバイス間の接続を設定します。詳細は、以下の「OCS で Live Link Face アプリを操作する 」を参照してください。

Stream Head Rotation

アプリが Live Link 接続を介して ARKit から頭の回転 (ヨー / ピッチ / ロール) データを送信するか指定します。

動かない三脚の上に iPhone を設置して、iPhone に対して自分の頭を上下左右に動かす時に Live Link Face アプリを使って仮想の頭の動きを操作する場合に便利なオプションです。

ボディ モーション キャプチャ設定と一緒に Live Link Face アプリを使用する場合はこの設定はおそらく不要です。その場合は通常、カスタム ヘルメットを使って常に自分の顔の正面にくるように頭上に iPhone を搭載し、ボディ モーション キャプチャに頭の上下左右の動きを記録させます。

プレビュー メッシュ

ARKit 顔認証システムで生成された三角メッシュでホーム画面のカメラ ピクチャをオーバーレイするかどうかを指定します。

記録ボタン

赤い記録ボタンをホーム画面上で視覚化するかどうかを指定します。

外部 OSC デバイスからの記録を切り替えている場合は、アクタが間違えて iPhone のボタンに当たってしまう可能性を避けるために、このオプションを無効にした方が良いかもしれません。

ブレンドシェイプ データ

すべてのフェイシャル ブレンド シェイプに対して ARKit 顔認証システムで生成されるデータ値をホーム画面に表示するかどうかを指定します。この情報は通常はデバッグ目的のみに有用です。

Take Recorder

ホーム画面が現在のスレート名とテイク番号、または現在の記録に対して使用されるファイル名を表示するかどうかを指定します。

オーバーレイ表示

Live Link Face アプリのメイン画面を常時表示するか、それともタッチスクリーンの操作時までフェードアウトさせるか指定します。

オーバーレイをフェードアウトすると、パフォーマンス中にキャプチャ ビデオを確認することでアクタの気が散ることを防げる場合があります。

ビデオ品質

参照ビデオのエンコードに使用する JPEG 圧縮の品質を指定します。品質を高めると画像はシャープになりますが、iPhone の保存容量がその分必要になります。

ストレージ

使用するデバイスの空き容量、および Live Link Face の使用量を表示します。この画面から、以前記録したテイクを消去することもできます。

最初から開始

アプリケーションのインストール後に変更した設定をすべて元に戻して、Live Link Face アプリを出荷時の設定にリセットすることができます。

About

アプリケーションのリーガル情報を表示します。

Raw データでのフェイシャル キャプチャを記録する

Live Link Face アプリから新しい記録を開始すると、キャプチャは常に 2 つのファイルで iPhone に記録されます。

  • .mov ファイルにはカメラによって記録された参照ビデオが含まれます。

    ビデオ フレームは JPEG コーデックを使用して圧縮されますが、時間的圧縮を使用せずフレーム精度が高くなります。このファイルにはオーディオとタイムコードが含まれます。記録後にアニメーション パフォーマンスを操作する必要のあるアニメーター用の参照となるように作成されます。

  • .csv ファイルには記録中に ARKit によってキャプチャされた raw アニメーションデータが含まれます。

    このデータ ファイルは現在 Unreal Engine または Live Link Face アプリでは使用されていません。しかしながら、フェイシャル キャプチャに関する追加ツールをビルドを検討しているデベロッパーにとってこのファイルの raw データは有用です。

モードと結果を記録する

前述したとおり、iPhone で Live Link Face アプリから、あるいは Live Link Face アプリの OSC インターフェイスから記録を開始する場合、パフォーマンスは iPhone に記録されます。この方法で記録するために Unreal Engine のインスタンスに接続する必要はありません。

Live Link Face アプリまたは OSC インターフェイスからの記録開始時に Live Link を使って Unreal Engine のインスタンスに接続している場合、接続されているすべての Unreal Engine のインスタンスの Take Recorder 起動します。アニメーション パフォーマンスは iPhone とコンピュータの Take Recorder の両方に記録されます。

Live Link で Unreal Engine の 1 つ以上のインスタンスに接続し、iPhone または OSC インターフェイスから記録を開始するのではなく Unreal Editor インターフェイスの Take Recorder から記録を開始する場合、パフォーマンスは iPhone に保存 されません。この場合、コンピュータの Take Recorder にのみ記録されます。

複数のユーザーを操作する

より複雑な現実世界の制作現場のおいては、同じ仮想世界でライブ環境で共同作業をするために マルチユーザー編集 を使って複数の人が Unreal Engine で同時に作業することがあります。この場合、すべての作業者が実行する すべての Unreal Engine インスタンスに Live Link Face アプリを接続する設定にすることを推奨します。アプリは、すべてのエンジン インスタンスにパフォーマンス キャプチャをマルチキャストします。これにより、すべての作業者が最小のレイテンシーで確実に受信するアニメーションデータを確認できるようになります。

タイムコード ソース

実際の制作において、Live Link Face アプリはさらに大規模なパフォーマンス キャプチャ 設定のほんの一部にすぎません。オーディオ、ライブビデオ、その他のボディ キャプチャ データ、カメラ トラック データなど、その他のものを記録しなければならない場合が多いです。これらの別の記録を完璧な精度で同期させるためには、確実にすべての記録が整合性のあるタイムコード値をエンベッドしなければなりません。

Live Link Face には 3 つのタイムコード ソース オプションがあり、設定パネルから設定することができます。

  • システム タイマー

    デフォルトで、Live Link Face のタイムコード値は iPhone のシステム タイマーに基づいています。このタイマーはシステムが最後に起動されてからの経過時間を元にします。これにより本質的に正確な基本オプションが提供されますが、このタイムコードを他のデバイスで実行された記録とリンクすることは困難な場合があります。

  • NTP サーバー

    1 日の時間に基づいて整合したタイムコードを取得する 1 つの方法は、Network Time Protocol (NTP) サーバーを信頼することです。このオプションを選択する場合、デフォルト サーバーは time.apple.com です。これは Apple が iPhone の時間と同期するために使用するサーバーと同じものです。ただし、多くのプロダクションがステージ上のデバイスのタイムコードと同期するため行っているように、カスタムの NTP サーバーを使用する場合はサーバー名と IP アドレスを入力することができます。

  • Tentacle Sync

    Tentacle Sync は、デバイスを Bluetooth を介してステージ上のマスタークロックと同期することができるサードパーティのハードウェア デバイスです。これがもっとも専門的なタイムコード オプションと思われます。ハイエンド プロダクションは通常撮影中のタイムコード同期をマスタークロックに頼っています。詳細は Tentacle Sync を参照してください。

OCS で Live Link Face アプリを操作する

Live Link Face アプリは Open Sound Control (OSC) プロトコルによる双方向通信をサポートしています。

  • OSC デバイスを使用して Live Link Face をリモートで制御することができます。たとえば、外部デバイスを使用してリモートでのアプリケーションの記録を開始することができます。

  • さらに、アクティビティの通知を他の OSC デバイスに送信するように Live Link Face を設定することができます。たとえば、アプリケーションが新たに記録を開始すると別のデバイス上でアクションをトリガーすることができます。

OSC を設定するには、アプリケーションの設定を開きます。

  • リスナー セクションには、使用している iPhone の現在の IP アドレスと、受信する OSC メッセージ用に Live Link Face アプリがリッスンするポートが表示されます。OSC リモート コントロール デバイスがこの IP アドレスとポートにコマンドを送信するようにする必要があります。

  • 別のデバイスをコントロールする OSC コマンドを Live Link Face に送信させるには、[ターゲット] セクションにそのデバイスの IP アドレスとポートを入力します。

Live Link Face アプリは以下の OSC コマンドをサポートしています。

コマンド

説明

/OSCSetSendTarget <IP:string> <port:int32>

OSC 送信ターゲットに任意の IP アドレスとポートを設定します。アプリはコマンド /OSCSetSendTargetConfirm で新しい OSC 送信ターゲットに応答します。

/AddLiveLinkAddress <IP:string> <port:int32>

アプリがブレンド シェイプ データを配信するために Live Link ターゲットを追加します。

/ClearAllLiveLinkAddresses

すべての Live Link ターゲットを消去します。

/LiveLinkSubject <name:string>

Live Link サブジェクト名を設定します。

/LiveLinkStreamStart

すべての Live Link ターゲットにデータのストリーミングを開始します。

/LiveLinkStreamStop

Live Link ターゲットへのデータのストリーミングを停止します。

/BatteryQuery

デバイスのバッテリー レベルを要求します。アプリは /Battery <level:float32> で OSC 送信ターゲットに応答します。

/ThermalsQuery

デバイスの熱状態を要求します。アプリは /Thermals <state:int32> で OSC 送信ターゲットに応答します。

/Slate <name:string>

スレートを任意の名前に設定します。

/Take <number:int32>

テイク番号を任意の値に設定します。

/ARSessionStart

ビデオと AR トラッキングをオンにします。アプリは /ARSessionStartConfirm で OSC 送信ターゲットに応答します。

/ARSessionStop

ビデオと AR トラッキングをオフにします。アプリは /ARSessionStopConfirm で OSC 送信ターゲットに応答します。

/RecordStart <slate:string> <take:int32>

任意のスレートとテイク番号を使って記録が開始します。アプリは /RecordStartConfirm <timecode:string> で OSC 送信ターゲットに応答します。この時のタイムコードは常に 00:00:00.000 であることに留意してください。

/RecordStop

記録を停止します。アプリは /RecordStopConfirm <timecode:string> <blendshapesCSV:string> <referenceMOV:string> で OSC 送信ターゲットに応答します。以下の /Transport コマンドの2 つのストリングを使ってデバイスからデータをコピーすることができます。

/Transport <IP:port:string> <path:string>

/RecordStopConfirm コマンド (上記) で返されたパスを使って、ファイルのコンテンツを指定した IP アドレスとポートに転送するようにアプリにリクエストします。アプリはそのアドレスとポートに対して TCP 接続を開きます。最初のストリングは、ファイルの合計サイズを含む int32 をビッグエンディアン形式で送信します。その後でファイルのコンテンツを送信します。

/VideoDisplayOn

ビデオの表示をオンにします。

/VideoDisplayOff

ビデオの表示をオフにします。トラックと記録は引き続き発生します。

/AppActivated

iPhone でアクティブになると、アプリはこれを OSC 送信ターゲットに送信します。つまり、最初に開始したとき、フォアグラウンド状態になったときなどです。

/AppDeactivated

iPhone で非アクティブ状態になると、アプリはこれを OSC 送信ターゲットに送信します。つまり、キルしたとき、バックグラウンドに送信されたときなどです。

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信