ボーンデジタルは平成 29 年 10 月 12 日、株式会社スクウェア・エニックス 第二ビジネス・ディビジョン(以下、BD2)Lead Character TD の岸 明彦氏、 Lead Character Setup Artist の岩澤 晃氏をゲストスピーカに迎え、『FINAL FANTASY XV のキ ャラクターセットアップワークフロー セミナー ~Body から Facial、そして Procedural Animation へ』を実施した。
上記セミナーレポートの第2回記事をお送りする。第1回記事に関しては、こちらから読むことができる。
Deform Rig / Secondary Joint
デフォームリグとは補助骨をリギングして基本骨の曲げやひねり時のメッシュの変形を滑らかにするためのものだ。本作のデフォームリグの構築には、Mayaと『Luminous Studio』内で共通の動きを実現するために他のプラグイン同様(※連載第1回参照/『CRAFT』等プラグイン)、同社テクノロジー推進部(以下テク推)によって開発された『KineDriver』が使われた。KineDriverに関しては「リアルタイムリグ − DCCツールと実機で動作する補助関節のセットアップ」より資料をダウンロードすることが可能だ。
アニメーションで動作する基本骨の動きを入力し、動きのない補助骨の動きをランタイム内で計算によって導き出すことが出来る。この『KineDriver』の大きな特徴が、回転をEuler(オイラー)角で扱わないことだ。オイラーとは三次元ユークリッド空間の中の二つの直交座標系の関係をXYZの軸の回転で表すが、回転の順番(Rotate Order)やGimbal Lockなどの問題があるため意図した回転値を得ることが難しい。しかしこの『KineDriver』では曲げとひねりを分けた回転とそれぞれの変化量を個別に制御が出来るためこうした問題を回避しながら補助骨の動きを制御することが出来る。会場では、オイラー角を元にMayaのExpressionでドリブンされたオブジェクトの回転と『KineDriver』を用いてドリブンされたオブジェクトの回転を比較してXYZ全ての軸で順不同に回転を行っていくと次第にオイラー角をベースにした方が元のオブジェクトの回転から異なっていくのに対して、『KineDriver』では、常に安定した挙動を示している様子が紹介された。ちなみに今年のCEDECのテクニカルアーティストブートキャンプにて紹介された「ちょっと数学っぽくリギングしてみよう」を一読するとより理解が深まるだろう。
本作では、非常に多くの補助骨が使われておりCG特有の硬い変形を抑えるためにありとあらゆる部位に配置されていることに非常に驚いた。また、『KineDriver』にはSkinConstraintと呼ばれるスキンメッシュによって動きを拘束させることが出来る機能もある。例えばジャケットのボタンの様にある一点の場所に吸着しつつもその物自体は変形させたくないケースでは、このSkinConstraintが非常に重宝された。
セカンダリジョイントは衣服や頭髪など物理法則で自然に揺れるべき所に均等の間隔で配置されていたが、揺れ物を制御する骨は全てローカル軸が統一の向きになっており、ローカルZ方向に回転するとスキンメッシュが法線方向に拡縮するように工夫されている。
キャラクターデザインによっても差があるが2日~6日程度の制作期間を経てデフォームリグとセカンダリジョイントの作成が完了したら『Luminous Studio』に出力し物理シミュレーションの設定を施していくことになる。物理シミュレーションには、BD2とテク推によって開発された『Bonamik』が使われている。
Bonamik / Cloth Simulation
『Bonamik』とはPosition Based Dynamicsでジョイントをシミュレーションさせるソリューションで、2015年のSIGGRAPH ASIAにて発表された『Bonamik』の資料が公開されているので合わせて参照して頂きたい(www.jp.square-enix.com/tech/library/pdf/SA2015_slides.pdf)。クロスシミュレーションでは、ハードウェアの制約があるためCG特有の硬さを抑えて動きに合わせた自然な挙動を表現することに注力して制作された。ムービーで作られたアセットがある場合は動きや品質のリファレンスとして活用されている。
『Bonamik』のオーサリングは、Maya上にて作業を進めることになる。シミュレーションさせたいセカンダリジョイントを選択して専用のGUIからボタンを押すだけで、ソルバーチェーンを作成されPlaybackを再生するとボーンが物理シミュレーションによって自然に落下する。衝突判定も、任意の位置にカプセル状のコリジョンオブジェクトを作成するだけで容易に設定が可能だ。動作やパラメータの確認は、Mayaの中でも確認出来るが最終出力の『Luminous Studio』に持って行った方がより確実な結果が確認できる。
この『Bonamik』の大きな特徴の一つが、並列に配置されたジョイントチェーンの間を横方向に結び、格子状につなぎ合わせる『ラテラルリンク』と呼ばれる機能だ。このラテラルリンクがあることで、風にはためいて布地に表れる波打ちのような動きの表現も可能になっている。会場では、ラテラルリンクがある時とない時での動き方の違いが比較されたがこれがあるだけでこんなにも表現に違いが出るのかと驚かされた。このラテラルリンクに対しても衝突判定をさせることで、ラテラルリンク間に物が突き抜けてしまうことを防ぐことが出来る。
しかしいくら衝突設定を施してもゲームのFPSを保つためには1フレーム内で衝突判定が1度のみという制限があったため、素早い移動ではメッシュが突き抜けてしまうこともあった。この問題に対しては、前述した『KineDriver』を併用することで解決できた。つまり、アニメーションされた骨の角度をソースに『KineDriver』によってドリブンされたシミュレーション骨がまず衝突判定させやすい状態まで形状を変化させる。この動作は物理シミュレーションではないためどんなに高速に移動しても遅れることなく求めている形へと変化してくれる。変形後は『Bonamik』によって物理シミュレーションの影響を受けて衝突判定を受けるというわけだ。
また、髪の毛のシミュレーションでは、パラメータや質感の変更によって雨に濡れた髪の表現も対応。まず髪形をボーンによって変形させたのちMass(質量)を重くし同時にカラーやスペキュラーも動的に変化させることによって、雨に濡れて次第に髪が濡れていくような表現となっていた。動きだけでなく質感までもシミュレーションと連動させていたことに非常に驚かされた。
Bonamik / Muscle Simulation
また本作では、筋肉シミュレーションについても時間の許す範囲ではあるが出来る限り挑戦したという。
まずは筋肉や脂肪のある部位にセカンダリジョイントを作成し『Bonamik』でシミュレーションさせてみたところ確かに『Bonamik』を設定する前よりも二次的な動作が付いて柔らかくはなったもののまだ筋肉の表現には遠かったという。なぜなら、体が地面や障害物に衝突したときの反動エネルギーによって筋肉や脂肪が高速に揺れる表現がないため、ただ動きに追従して揺れるだけに留まってしまっていたからだ。
そこで体の動きの移動エネルギーも『Bonamik』に影響させられるような機能が追加実装された。この効果を設定する前と後で結果を比較してみると一目瞭然の結果であった。この機能によって、高速に移動するゼリー状の物体を揺らす表現などにも幅広く活用されたという。プレゼンテーションの最後には本作に登場する全モンスターキャラクターの合間を主人公が駆け巡りながら『Bonamik』の影響を示すグリーンのオブジェクトの使用具合が紹介されたが非常に多くのキャラクターの様々な部位で活用されていることに驚かされた。
Procedural Animation
プロシージャルアニメーションとは、事前に用意したアニメーションデータをソースにさらに動的な変化をランタイム上で計算によって作り出すことで、これも同じくテク推によって開発された。本作では、キャラクターの状態や環境の変化に合わせたアニメーションのバリエーション変化を、いかにアニメーション制作コストを削減しながら作れるかという点に注力された。最初に紹介されたのが『HitReaction』でラグドールに対して攻撃を与えると攻撃が当った部位にインパルスを発生させ体の一部の動きがそれに応じて変化する様子だ。もしヒットリアクションを全て手付けモーションで付けた場合、動きがパターン化してしまい単調にならないように多数のモーションを用意する必要があるが、この方法では攻撃を当てる場所によって自動的に変化していた。
次に紹介されたのは地形変化に応じて重心の変化を行えるIKだ。自然界では斜面に対して垂直に立った時には勾配に逆らうように体が自然と起き上がるが、これもゲームで表現するには状態の変化に応じてモーションのバリエーションを作成する必要がある。会場では斜面にどれだけ沿うかどうかパラメータを変化させるだけで表現できる機能が紹介された。4足歩行のキャラクターが下り坂に向かって立っている時にスライダーを変化させると後ろ脚を曲げてしゃがませるようなポーズへと変化していく様に会場からは驚きの声が上がった。同社の本作におけるアニメーションへのこだわりが相当のものであることがうかがい知れる事例であった。
Trigger Authoring
Trigger Autoringとは、プロシージャルアニメーションやBonamikが再生されるタイミングを調整する機能。Bonamikやプロシージャルアニメーションを常に動作しつづけると、問題が発生することがある。例えば、攻撃モーション実行中にヒットアニメーションが再生されるとポーズが崩れてしまい、何をしているのかわからなくなってしまったりする。これを回避するためにヒットリアクションをオフにするというトリガーを設定し、ポーズが崩れないようにしている。ボナミックに関しても同様のトリガーを設定できる。攻撃モーションの場合、攻撃ヒットのタイミングを考慮してモーション付けているのでコリジョンがついてる髭や尻尾のポーズがアニメーションの意図とずれる場合がある。Bonamikの影響を受けてポーズが変わらないようにTrigger Autoringを設定する。
シミュレーションの今後の課題
岸氏のセッションの最後には、シミュレーションにおいて今後の課題としている点を紹介していた。まずは頂点ベースのシミュレーションに取り組むことで、これは更なるクオリティ向上の実現を可能とする。特に同社の作品では揺れ表現を必要とするデザインが多く、ジョイントベースで動かすのには限界を感じているという。そして皮膚や筋肉のシミュレーションにも今後さらに取り組んでいく。骨や筋肉の上に皮膚が覆いかぶさり滑りながら移動する様な物理的に正しい表現への実現を目標としていく。また首回りの筋肉の表現にも課題が残っている。現状では、フェイシャルリギングとボディリギングで担当者が分かれているが、今後は両方のスキルを持った技術者が必要になってきてるのではないかと話した。
Credits:
©2017 SQUARE ENIX CO., LTD. All Rights Reserved. MAIN CHARACTER DESIGN:TETSUYA NOMURA ©2017 Born Digital,Inc All rights reserved.