今年はコロナ禍の影響からオンライン開催となったCEDEC2020。本稿では各セッションから「『FINAL FANTASY VII REMAKE』におけるキャラクターアニメーション技術」の模様を記す。
(参考:『FF7リメイク』は本当に“駄作”なのか? 2つの視点から考えてみた)
登壇者はスクウェア・エニックス第1開発事業本部ディビジョン1の原龍(リードアニメーションプログラマー)と岩澤晃(フェイシャルディレクター)の2名(本稿は主に岩澤がフェイシャルアニメーションについて語った後半で構成している)。
・眼球の移動、まばたきなどを自動生成する方法
フェイシャルアニメーションのうち、まず眼の動きから解説。視線を移動させる時、眼球が短い時間で移動と停止を繰り返している状態をSaccade(サッカード:眼球移動)と呼んでいる。一度に移動する角度には制限をかける一方、視線を向けた状態で対象物がゆっくりと移動する場合のみ、リニアに動くようにしている。
また視線を固定している時でも、眼球が止まることなく細かく動いている状態をMicro Saccadeと呼んでいる。Micro SaccadeはSaccadeよりも移動と停止の周期が速いため、動きの幅を小さくしている(今作では行っていないが、感情の変化などでMicro Saccadeの周期や幅を変えることは効果的だと考えている)。
まばたきにもパターンがあり、時間経過によって発生する周期性まばたき、急な眼球運動によって発生する反射性まばたきがある。前者は2秒から10秒でランダム発生、後者は対象位置が大きく移動すると発生する(完全に閉じたまばたきが発生した場合は、Saccadeの移動角度制限を無視)。
まばたきのアニメーションは、目を閉じたポーズモーションをブレンド、時間とブレンド率のカーブはアセットで設定している。まばたきは常に完全に閉じるわけでもなく、0.5~1のランダムバイアスをブレンド率にかけている(今後は、まばたきの速さや周期を感情によって変えることも考えていきたいと思っている)。
そしてキャラクターの体の動きからも、Saccadeの自動生成を試みた。体が激しく動いているようなボディモーションでは、体幹と顔の向きからSaccadeを自動生成している。もともとカットシーンなど手付けでアニメーションの作業をする際、Maya上で使用しているツールが、フィールドギミックやバトルアクションでも有効だったためUnreal Engine 4でも実装した(生成されたSaccadeはUE4でも調整が可能)。
・ボイスの音量、感情の解析から自動生成する方法
次は口の動きについて解説。スクエニのテクノロジー推進部が開発している自動リップシンクシステムのHappySadFaceは、音声とテキストから専用フォーマットに出力し、MayaとUE4でリップアニメーションを再生するというものだ(今回は英語、日本語、フランス語、ドイツ語の4言語に対応)。
タイムラインデータがシンプルなテキストデータとなっており、全体的に滑らかにするために、一括フィルタリングのようなことも可能。ボイスから音素を抽出して、形状データのインデックスをタイムライン化している。形状データは各キャラクターごとに持たせているため、どのキャラクターで再生しても、壊れることがない。
音素に対する形状の対応表は、言語ごとに作成している。感情によって表情が変化するのに合わせ、形状データのプリセットも差し替えるようにした(本作では通常時と怒りと笑いの3つの形状を用意し、感情によって使い分けている)。
ただ、ボイス内にあると想定する音素のリストがテキストの内容に依存しているため、テキストが間違っていたり、アドリブボイスが頭に入っていたりすると、制度が落ちてしまう問題がある(今後はテキストに依存しないフローや、解析精度を上げていく取り組みを行っていきたい)。
合わせてボイスの音量からアニメーションを生成する方法も解説。眉のアニメーションは、眉を上げた状態のポーズモーションを用意してブレンド率に応じて加算、上体を前後させたり頭や首を捻ったりするアニメーションは、IKコントロールリグでプリセットとして定義して加算している(後者の再生は、再生時にランダムで決定)。
ボイスから表情のアニメーション生成をする場合には、リアルタイム動作が可能な感情解析モジュールのST Emotionを利用した。ボイスから喜び・怒り・悲しみ・平常・興奮といった5つの感情を10段階で検出でき、感情パラメーターの変化に合わせて各種の表情ポーズをブレンドする。
その感情パラメーターは1ボイス単位ではなく、タイムラインデータになるため、1つのボイスの中でも表情を変化させることができる。精度はキャラクターによって多少異なっているものの、キャラクター単位でカスタムすれば、より精度が上がるのではないか。今回は解析するための音声ファイルの数もそこまでなかったので、特にカスタムせずにそのまま解析をかけた。感情パラメーターはUE4で簡単に調整を可能にして、自動生成後に気になる箇所は手動で調整している。
(真狩祐志)
外部リンク