エンジニアの大場です。
2022年6月10日~12日に行われた展示会 「WORRA EXHIBITION Vol.01 “WANNA WORRA?”」でフェイストラッキングを使用したムービングライト制御を展示しました。
Face Tracking Light マスク生活によって認識解像度が下がってしまった、 顔の様々な表情パラメータを使って、複数のムービングライトを制御。 鑑賞者の表情が、空間上の光の演出を自由に変化させていきます。
と説明には大層なこと書いてますが、普段業務ではUnityを主に触っていて単にムービングライトを制御してみたかったのとWORRAで何を展示するかのアイディアを出していた時にフェイストラッキングの技術調査をしたのでそれを組み合わせただけです。
1. ARKit FaceTracking
まず初めにARKitを使用したFaceTrackingを検証してました。
- メリット
- フェイストラッキングの精度がいい
- 自由にパラメーターをもってこれる
- 暗いところでも使える
- デメリット
- iOSアプリを作る必要がある
- PCと連携するには通信が必要
2. Unity FaceCapture
Unityが提供するFaceCaptureを試してみました。
- メリット
- Unityで動作する
- フェイストラッキングの精度がいい
- CGのアバターの表情を変化させるのに特化している(VTuber)
- デメリット
- Unityのみでしか動作しない
- iPhoneから送られるのはアバターの表情を操作するパラメーターのみで、カメラの映像を送ることができない
3. FaceMeshBarracuda
keijiro氏がgithubで公開しているUnityのプロジェクトFaceMeshBarracuda。
少しスクリプトを書けばFaceMeshとWebCameraの顔を同期させることが可能です。
- メリット
- PC一台で完結している
- Unityで動作する
- カメラの映像やメッシュの動きのパラメーターを取得できる
- デメリット
- トラッキングの精度が低い
- カメラから離れすぎるとトラッキングロストする
- 画像処理なので暗いところで使えない
3. Google MediaPipe
Google MediaPipeは、ライブおよびストリーミング メディア向けのクロスプラットフォームでカスタマイズ可能な ML ソリューションです。
こちらのブログを参考にTouchDesignerで実装。※動画では人物トラッキングです。
- メリット
- PCのみで完結
- MediaPipeの様々な機能が使える
- デメリット
- 設定が大変
- トラッキング精度が低い
- 画像処理なので暗いところで使えない
4. 展示物
最終的にはトラッキング精度や会場の環境(プロジェクターを使用するため暗い)に合わせてARKitでの実装となりました。
またARKitのFaceTrakingは弊社がリリースしているZIG SIM PROを利用することでムービングライトとの連携が簡単にできました。(ZIG SIM ARKit)
ZIG SIMからはARKitのFaceAnchorBlendShapeをOSCで送ることで、顔の動きに合わせてムービングライトを動かしたり、まばたきでゴボを変えるなど顔から取れるパラメーターをムービングライトの制御に対応させました。
5. まとめ
FaceTrackingをするにも様々なライブラリが存在していて、用途や環境に合わせて選定していくことが必要です。
ARKitの精度がいいのでARKitを使ってFaceMeshをPC側で取得する方法を開拓できるとよりできることが広がりそうです。
ARKitのFaceMeshの頂点座標をテクスチャにベイクしてNDIでPCに送ろうとしましたが、NDIは単純にRGBAを送っているのではなく圧縮がかかるのでうまくいきませんでした。