Unity を検索

Facial AR Remote:AR によるアニメーション制作

2018年8月13日 カテゴリ: Engine & platform | 8 分 で読めます
シェア

Is this article helpful for you?

Thank you for your feedback!

最近公開された「ARKit」と「iPhoneX」を Unity と組み合わせれば、デベロッパーは、美しく表情豊かなキャラクターを簡単に作成できるツールを手にすることができます。近日公開のショートアニメーションフィルム『Windup』(Yibing Jiang 監督)におけるキャラクターのリアルタイム操作の魔法のような世界も、これによって可能となりました。

『Windup』の立役者であるチームと Unity Labs とが協力して、シネマティックキャラクターのフェイシャルアニメーションのリアルタイムキャプチャーにおける Unity 性能の限界に挑みました。また、Beast House FX 社の Roja Huchez 氏からブレンドシェイプのモデリングとリギング関連での協力を得たことで、キャラクターの表情に命が吹き込まれました。

このチームは「Facial AR Remote」を開発しました。これは、接続されたデバイスを使用して直接 Unity エディター内にパフォーマンスをキャプチャーするための低オーバーヘッドな方法です。Facial AR Remote のワークフローを使用すると Unity で独自の Animoji(アニ文字)や Memoji(ミー文字)タイプのインタラクションを効率的にビルドできるので、アニメーションの作成のみならず、キャラクターやブレンドシェイプのモデリングやリギングにも役立ちます。モデルのイテレーションをエディター内で行え、毎回デバイス用にビルドする必要がなくなるので、時間を節約することができます。

Facial AR Remote 開発の理由

私達は今回、映画プロジェクト用の新しいアニメーションツールをビルドすることが、Unity のリアルタイムアニメーションの未来を開拓することに繋がると考えました。また、アニメーションの作成に AR ツールを使用するという「ワクワク要素」があっただけでなく、Unity のリアルタイムレンダリングの限界を押し上げられる絶好の機会でもありました。基本的な仕組みが一旦機能し、携帯端末からエディターにデータが取り込まれ始めると、チームメンバーだけでなく周りにいた全員が、キャラクター操作の楽しさに時間を忘れて夢中になってしまいました。私達は、この種の技術が秘めた大きな可能性を体験することができました。単純な実験的な試みでしたが、楽しくて役に立つものであることがすぐに証明されたのです ― そして、このプロジェクトが急ピッチで発展し、Facial AR Remote とその機能セットが開発されました。

チームは、Unity の目標である「開発の民主化」を念頭に、プロジェクトの拡大に乗り出しました。AR ブレンドシェイプアニメーション周りのツールとワークフローを、現在入手可能な従来のモーションキャプチャー方法より更に使いやすく、より多くの方に使用していただけるものにしたかったのです。Facial Remote を使用すると、ブレンドシェイプのイテレーションをエディター内で行えるツールをビルドでき、メッシュの変更をデバイスで確認するためだけに新しいビルドを作成する必要がなくなります。つまり、役者の顔のキャプチャーを Unity 内に記録できるということです。そして、キャラクターモデルのイテレーションや更新を行ったり別のキャラクターへアニメーションをリターゲティングする際に、そのキャプチャーデータを固定ポイントとして使用できるので、役者を使ったキャプチャーセッションをやり直さなくて済みます。このワークフローは、キャラクターの表情や個々のブレンドシェイプの微調整に非常に役立ちました。

Facial AR Remote の機能する仕組み

Facial AR Remote は、スマートフォンで動くクライアントアプリと、Unity エディター内でサーバーとして機能するストリームリーダーによって構成されます。クライアントは軽量なアプリとなっており、このアプリは ARKit の最新追加機能を活用してネットワーク経由でそのデータを Stream Reader ゲームオブジェクトの Network Stream Source に送ることができます。単純な TCP/IP ソケットと固定サイズのバイトストリームを使用して、毎フレームのブレンドシェイプとカメラとヘッドポーズデータがデバイスからエディターに送られます。そしてエディターがストリームをデコードし、リグの付いたキャラクターをリアルタイムで更新します。ストリームリーダーは、エディターとスマートフォンの間に(必然的に)ラグが生じるのに備えて、重要なフレームの調整可能なバッファを保持します ― これにより、ネットワークの待ち時間によるジッターが平滑化されます。これは、実際の役者の現在のポーズと出来るだけ近い形を維持しながらプレビューキャラクターの見た目を滑らかに保つに当たって、極めて重要な機能です。ネットワーク状況が悪い場合、プレビューのフレームは(最新の状態に追い付かせるため)所々飛ばされることがありますが、データは元々のデバイスからのタイムスタンプも含めて全て記録されます。

エディター側では、ストリームデータを使用して、プレビュー用のキャラクターを動かしたりアニメーションクリップのベイキングが行われます。スマートフォン端末からの raw ストリームをディスクに保存するので、このデータをキャラクター上で再生し続けながらブレンドシェイプの微調整を行えます。また、セーブデータはスマートフォンからの 1 本の raw ストリームなので、別のキャラクターにモーションをリターゲティングすることも可能です。満足の行くストリームがキャプチャできたら、そのストリームをキャラクターのアニメーションクリップにベイクできます。作成したクリップは、Unity のその他のアニメーション同様、Mecanim や Timeline でキャラクターを動かしたり、その他様々な形で利用することができるので、非常に便利です。

『Windup』のアニメーションのデモ

以前制作された『Windup』レンダリング技術デモでは、チームは高画質アセットを使用してアニメーションの探索を開始することができました。基本的な仕組みは割と短期間で機能させることができたので、開発中のツールでブレンドシェイプのイテレーションを行う時間がたっぷり取れました。開始ほどなくして、ジッター、平滑化、シェイプ調整がこのプロジェクトの主要な焦点となりました。ジッターの解決方法は、フレームレートとフレーム処理中のラグとの関係を解明したこと、そしてプレイバックからカメラの動きを削除したことで改善されました。カメラを動かす機能を削除したことで、ユーザーがブレンドシェイプのキャプチャーにしっかり集中できるようになっただけでなく、端末をスタンドに設置できるようになりました。

ブレンドシェイプを理解して ARKit 内でブレンドシェイプアンカーを最大活用するに当たっては最も多くのイテレーションを要しました。各種シェイプの詳細をドキュメンテーションから理解するのは困難です。最終的な表情の大部分は、キャラクターの様式化と、各種シェイプの一般的な組み合わせによってもたらされました。目/頬の「すぼめ」のシェイプや口の「伸ばし」のシェイプなどは、ブレンドシェイプの変化による影響を、顔の特定の領域において制限することで改善されました。例えば、頬のすぼめは下瞼にはほとんど影響を及ぼさないようにし、すぼめ状態の下瞼は頬にほとんど影響を及ぼさないようにするなどです。また、`mouthClosed` シェイプは `jawOpen` シェイプが 100% の場合に唇を閉じるように補正するポーズですが、残念なことに最初はこれに気が付きませんでした。

Skinned Mesh Renderer の情報を使って特定のフレームの表情を作っている値を確認した上で、それらの値を上下させて確認するという方法が、ブレンドシェイプ調整に非常に役立ちました。手軽に現在のブレンドシェイプの値を上下させて確認し、修正が必要なブレンドシェイプがあるかどうか、またどの程度の修正が必要かを判断することができました。これは「適切なキャラクターをキーポーズに設定する(このデモで言えば女の子を笑顔にする)」という特に困難な作業を行う上で役立ちました。特定のポーズがどのシェイプによって構成されているか把握できることが非常に有利に働きました。この場合は、笑顔の「口の左右方向への伸ばし」を調整することで最終的なシェイプが実現されました。スマートフォンから提供されたシェイプは、(それ単独で作られる人間の顔のポーズではなく)小さな構成要素として考えると理解しやすくなります。

デモのアート制作の最終段階で私達は、キャラクターの一部のアニメーションを向上させるための実験的な試みを行いたいと考えました。ARKit から学んだブレンドシェイプに関する知識を踏まえ、キャラクターの基本のニュートラルポーズの修正を試みました。この女の子キャラクターは、そのアートスタイルゆえに、基本ポーズの目の開きが大き過ぎ、顔の基本の笑みも大き過ぎると思われました。このせいで、目の「大開き」と「基本」の間の差分が小さ過ぎ、「基本」と「閉じ」の間の差分が大き過ぎる状態でした。また、「すぼめ」のブレンドシェイプの割合も改善する必要がありました。「すぼめ」に関しては、私達の行ったテストでは、操作者が目を閉じると常に 60 ~ 70% になるという結果が出ました。このニュートラルポーズの修正と、その他様々な作業が功を奏して、結果的に表情豊かな活き活きしたキャラクターが完成しました。

今後の展望

Facial AR Remote を Unity のその他のツールと併用すれば、どんな素晴らしいアニメーションでも作り出せます!近い将来、誰もがデジタルキャラクターを操作できるようになります。今までにない新しい可能性の扉が開かれます!例えば、子供達は自分の体を使ってお気に入りのキャラクターに付けた動きを保存して友達や家族にシェアしたり、ゲームのストリーマーなら自分のアバターに一層の息吹を吹き込んだり。また、プロでもアマチュアでも、新しい形のアニメーションコンテンツの放送が可能になるでしょう。Unity 2018 をダウンロードして、Facial AR Remote の GitHub でセットアップのインストラクションをご確認ください。ユーザーの皆様が、Facial AR Remote をアーティスティックに、クリエイティブに活用していただけるのを楽しみにしています!

2018年8月13日 カテゴリ: Engine & platform | 8 分 で読めます

Is this article helpful for you?

Thank you for your feedback!