東映株式会社ツークン研究所が開発した国産フェイシャルキャプチャシステム。フェイシャルキャプチャ分野において第一人者としてリードしてきた彼らの知見が詰まった本システムを紹介していく。
※本記事は月刊「CGWORLD + digital video」vol. 313(2024年9月号)からの転載となります。

キャプチャ事業から得た知見から生み出された自社開発ルール
2024年7月1日(月)、株式会社HELTECよりリリースされたフェイシャルキャプチャシステム「TOEI FCS」(以下、FCS)。ツークン研究所が自社開発したシステムが販売されるかたちとなった。まず本システムが発売されるまでの経緯について少し触れたい。
販売元となるHELTECのセンシング事業部は、ゼロシーセブン株式会社センシング事業部を事業譲渡されているが、ツークン研究所と両者は古くからフェイシャルキャプチャ領域での研究を共同で行なっていた。その研究から派生してゼロシーセブンから販売されていたDynamixys社Performer 2を利用したフェイシャキャプチャサービスを、ツークン研究所が行うこととなった。

対応ソフト:Maya 2020, 2022, 2023、価格:400,000円/年(税込440,000円)
問い合わせ先:株式会社HELTEC センシング事業部
TEL:03-5875-9788
E-mail:sensing@heltec.co.jp
sensing.heltec.co.jp/product/zukun-lab/toei_fcs
必要スペック CPU:Intel Core i5-9400F、メモリ:DDR4 128GB以上
推奨スペック CPU:Intel Core i7-13700K、GPU:NVIDIA RTX 3080、メモリ:DDR4 128GB以上、その他:ffmpeg、常時インターネット接続
当時ツークン研究所は同ソフトを利用したサービスの先駆者として、ソフトのみならず国内でのフェイシャルキャプチャの普及に大きく貢献していた。残念ながら2021年のテイクツー・インタラクティブによるDynamixyz買収でPerfomer 2は販売停止となり、国内では特別措置として3年ライセンスが販売されたが、サポートも終了し、実質的に高品位なフェイシャルキャプチャツールが使用できない状況に陥っていた。
本件をきっかけとして、ツークン研究所では新たなツールの採用検討が行われたが、Performer 2に変わるソフトに該当するものはなく、自社開発する運びとなった。

そのため、FCSはPerformer 2のクオリティを最低目標に、さらなる進化をさせたものとして開発が進められた。Performer 2のアップデートにおいても国内ユーザーを代表して意見をフィードバックされた機能も多数あったが、ユーザー視点でベースから開発されたFCSはより使いやすく、より効率的にフェイシャルキャプチャを実現できるシステムとして完成された。
筆者もDynamixyzユーザーであったため、本レビューにおいてはPerformer 2との比較も交えて、フローと機能を試し、紹介していきたい。
<1>プロジェクト作成とセットアップ
コントローラを読み込み4つのRegionに登録
まずプロジェクトの作成から、セットアップの部分について解説していく。まず新規でセッションを作成となるが、セッション名を設定し保存すると、プロジェクトフォルダが生成される。各フォルダの役割は右の項目で確認していただければと思うが、[プロジェクトフォルダ→Facial→Asetts]に使用するMayaデータ、RecDataに収録したビデオを格納しておくと作業が管理しやすい。
セッション作成時には、使用するMayaのバージョンやシーンも紐付けを行い、セッション作成後、作業を進めるにあたってまずMayaと連動させる。この際、必ずFCSのメニューからMayaの起動とシーンオープンを実行する必要がある。
FCS上のMayaメニューから[Launch]をクリックすると、セッション作成時に設定したMayaが自動で起動し、シーンが開かれる([OpenScene]をクリックすると設定したMayaSceneを開き直すことができる)。なお、Mayaバージョンの誤クリックを防ぐため、セッション作成時に設定したMayaバージョン以外はクリックできないように、ブラックアウトされている。

最初の工程として行われるのが、コントローラの登録となる。Performer 2で言うところのエンティティセットの作成だ。ここに関してはUIによる多少のちがいはあるが、基本的にPerformer 2とほぼ変わらない。ひとつ変更された部分が、登録コントローラの区分が追加された点だ。upper(顔上部)、lower(顔下部)、gaze(目)に加え、eyelid(瞼周り)と4つの区分となった。
登録作業は、Maya上で選択したコントローラをFCS上に読み込み、[Conroller]ウインドウにて上記の4つの区分(Region)に分けて行なっていく。読み込んだコントローラはリストにて編集管理を行うが、フィルタ機能も充実して非常に扱いやすかった。
筆者はPerfomer 2ユーザーであったため、ここまで何の迷いもなく行えた。プロジェクトの作成からコントローラの登録まで、約5分程度で完了した。
プロジェクトの作成


Facial:動画やMayaシーンデータ等素材を保存する場所/ Assets:Mayaのプロジェクトファイル(Assets以下)を保存する場所/ RecData:ROM体操やFCSで解析したい動画を保存する場所/ Scene:アニメーション出力時のデフォルト出力先/ SetData:アニメーション出力で「audio」を選択した場合にはwavファイルが、「Frame」「Landmark Frame」を選択した場合は連番画像が作成され、保存される/ FCS:解析に使用するデータが保存されるプロジェクトフォルダ/ Actor:Actorで作成したフォルダ。Actorで入力した名前が表記される/Character:Characterで作成したフォルダ。Characterで入力した名前が表記される/ RetargetData(IMG/PARAM):作成したProfileの編集データ(画像や数値情報)が保存される/ VideoData:解析する動画のキャッシュが保存される/ .lock:競合を防ぐためのロックファイル。起動時、終了時に自動で作成、消去される/ fcs_session.yaml:session情報を保存しているファイル
インターフェイス
カスタムインターフェイスとなっており、起動時には作業の整列性がないため好みでレイアウトを組んで使用する前提となっている。筆者はDynamixyz Performer 2ユーザーであったため、Performer 2のようなレイアウトに変更し作業を進めた。なお、レイアウトは登録可能なため、工程によって見やすいレイアウトに変更することも可能だ。

FCSとMayaを接続
FCSとMayaを接続するためには、必ずFCSのメニューからMayaを起動する必要がある。[メニュ→Maya→Launch→Mayaバージョン]の選択でMayaが起動する。Mayaバージョンの誤クリックを防ぐため、セッション作成時に設定したバージョン以外はクリックできないように、ブラックアウトされている。

UpperのController登録
[メニューWindow→Controller]、もしくは直接ウインドウを選択し、コントローラの登録を行う。まずここではUpperのコントローラを選択。

eyelid、gaze、lowerのController登録
Perfomerでは区分されていなかったeyelid Region。

-
▲リスト右上にあるフィルタを[ali→null]に変更し、Region未適用のコントローラに絞り込み[select All] -
▲[eyelid]をクリックしRegionを変更し、フィルタもeyelidに変え適用されたことを確認
gaze、lowerも同様に登録しRegionを変更。全て完了したら[Save]ボタンをクリックして作業を完了させる。誤って登録した場合は、[Remove]で削除し、再度設定し直せる。リスト上でドラッグ&ドロップするだけでコントローラの登録順を変更することも可能だ。
<2>プロファイルの作成〜出力
効率化されたプロファイルとリターゲットの工程
ここからはプロファイルの作成から、出力に関わるフローと機能を確認していく。Performer 2との比較して大きなちがいは、FCSではPerformer 2で必要とされていたアノテーション作業を行わなくてよいという点だ。
アノテーションは、プロファイルに追加した画像ごとに、輪郭や目、口などにポイントとアウトラインを用いて特徴付けを行う作業であり、地味な2Dワークを大量に強いられるものであった。FCSはこの作業が必要とされない。画像解析の特徴付けはおそらく内部的に自動で行われているということであろう。そのため、FCSで選んだプロファイルに合わせてそのままMaya上で表情をつくるというダイレクトなフローとなり、大きく効率化が図られている。
表情を作成してリンクする作業は、手順は異なるがPerformer 2と同様に行える。基本的には、画像に合わせてMayaで表情を作成して保存していくというながれだが、FCSのEditorを通じてコントローラの数値による管理と調整も行えるようになっている。直感的な作業を行いつつ、数値で詳細を詰められるのは非常に扱いやすい。

プロファイルを量産していくことにおいては、Performer 2と比較して大きく進化した。それを実現するの[Predict]という機能だ。プロファイル画像を選んだのち[Predict]を実行するだけで、自動的にMayaのフェイシャルを作成してくれる。本機能は作成したプロファイルを基に行われるため、参照するプロファイルの数が増えれば増えるほど、精度が増していく。
筆者はニュートラルを含め3つのプロファイルを作成したのち、4つめから本機能を使用して試してみたが、3つのプロファイルデータだけでも大体の表情を自動生成することができた。自動生成したものを微調整して保存し、くり返して行なっていったが、精度がどんどん高くなっていった。
もちろん枚数が少ないうちはピーキーな表情などは追いきれない部分も当然あるが、そうしたものも初期に追加していけばより効果を発揮できるものであった。
プロファイル作業を完了後のデータ出力に関しては、設定も細かく行え、品質も高い。総評すると、手間のかかった作業を省き、3Dワークに注力し効率的に行える高品質なフェイシャルキャプチャを実現できるツールと言える。
ビデオの読み込み
Profileの作成にあたってまずはビデオを読み込む。



プロファイル作成に使用されるウインドウ
プロファイルの作成は、FCSの[Gallery]、[Editor]、[Player]、[Timeline]の4つのウインドウと、Mayaを行き来しながら進められる。

Editor機能
[Timeline]でプロファイルに追加したいフレームを選び、[Editor]とMayaを行き来しながらプロファイルの作成が進められる。プロファイルに追加された表情に合わせて、Mayaでコントローラを調整したフェイシャルをリンクさせる作業となるが、Mayaによるダイレクトな操作と数値による管理が行いやすい仕様になっている。

【B】デフォルトの表情として必ずひとつ登録する
【C】解析する素材として使用する/使用しないを選択
【D】プルダウンにより、[Controller](コントローラ表示が名前)、[Value](コントローラ表示が数字)を選択可
【E】[Upper]、[Eyelid]、[Gaze]、[Lower]のRegionを適用させるかの選択可
【F】FCS上で操作した値をMayaへ送る
【G】Mayaで操作した値をFCSへ送る
【H】画像から表情を解析し、Mayaの3Dモデルに反映する機能
【I】選択した項目(all、Upper、Eyelid、Gaze、Lower)などでコントローラを絞り込む
【J】入力した情報を削除する
【K】Profileとして登録する名前
【L】変更した情報を保存する
【M】[Timeline]から「+」で追加した画像が表示される
【N】[Controller Info]で登録したコントローラが表示される
Neutralの登録
ナチュラルな表情の登録を行う。

-
▲[Timeline]の「+」をクリックすると、[Editor]と[Gallery]に該当フレームが表示される -
▲[Editor]内「Save」をクリックし登録。登録が完了すると[Gallery]内のフレームがグリーンにオーバーレイされる
プロファイルの追加

プロファイルの量産
プロファイルを量産する際に強力なのが[Predict]機能だ。[Timeline]から追加したいフレームを選び「+」をクリックした後[Predict]をクリックすると、これまでのプロファイルの情報を基に、自動でMayaに表情(コントローラに数値)を適用することが可能だ。参照するプロファイルの数が多いほど精度が向上し、後半になればなるほど生産性が向上する。
アニメーション出力
プロファイルによる解析精度の確認など、単体ビデオからアニメーションを生成する際は、[Video]ウインドウから。該当ビデオにカーソルを合わせて右クリックでプルダウンを表示させ、出力したいデータにチェックをし、[Process]を実行する。

複数のビデオから出力する方法。


出力データの詳細設定を施したい場合は、Solver(Window→Solver)にて設定を行う。スムージングの設定やクランプ処理などを施すことが可能。スムージングは各Regionごとに変更可能な点は、使い勝手が良い。

【B】アニメーション出力時にスムージング処理をかける設定を変更できる。各Regionごとに個別に変更可。[Smoothing]:スムージング処理の有無(基本的にはありを推奨)、[Weight]:1回あたりのスムージング処理の強度。数値が大きいほどスムージング処理が強くかかる(アニメーションカーブが滑らかになる)、[Reps]:スムージング処理の回数。回数を多くするほどアニメーションカーブが滑らかになる
【C】クランプ処理の設定を切り替えが行える。[No Clamp]:クランプ処理なし、[Hard Clamp]:アニメーションカーブを[Controller]ウインドウで設定した最大値・最小値でクランプする(クランプされた範囲のスムージング処理なし)、[Soft Clamp]:アニメーションカーブを[Controller]ウインドウで設定した最大値・最小値でクランプする(クランプされた範囲のスムージング処理あり)

CGWORLD 2024年9月号 vol.313
特集:VRChatへ飛び込もう!
判型:A4ワイド
総ページ数:112
発売日:2024年8月9日
価格:1,540 円(税込)
TEXT_渡邊英樹 / Hideki Watanabe
EDIT_海老原朱里 / Akari Ebihara(CGWORLD)、山田桃子 / Momoko Yamada