ボーンデジタルは平成 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のテクニカルアーティストブートキャンプにて紹介された「ちょっと数学っぽくリギングしてみよう」を一読するとより理解が深まるだろう。

ExpressionをKineDriverで再現して比較。ある程度姿勢がかわってくると、ExpressionとKineDriverの差が表れる
色のついたジョイントが補助骨。補助骨はTranslate、Rotate、Scaleをフルに使って制御されている。このモデルの場合シャツも含めて肘を曲げた時にきれいにデフォームするように設定

本作では、非常に多くの補助骨が使われておりCG特有の硬 い変形を抑えるためにありとあらゆる部位に配置されていることに非常に驚いた。また、『KineDriver』にはSkinConstraintと呼ばれ るスキンメッシュによって動きを拘束させることが出来る機能もある。例えばジャケットのボタンの様にある一点の場所に吸着しつつもその物自体は変形させた くないケースでは、このSkinConstraintが非常に重宝された。

スキンコンストレインがオフ。ボタンには歪まないようにそれぞれJointが入っており、体のひねりに追従していない
スキンコンストレインがオン。身体の捻りに追従していることがわかる。ボタンだけでなく、揺れもの骨を絶妙な位置に配置するときも良く使用されている。

セカンダリジョイントは衣服や頭髪など物理法則で自然に揺れるべき所に均等の間隔で配置されていたが、揺れ物を制御する骨は全てローカル軸が統一の向きになっており、ローカルZ方向に回転するとスキンメッシュが法線方向に拡縮するように工夫されている。

SecondaryJointはこのような密度で配置されている。できるだけCG特有の固い部分をなくすようにJointを仕込む。
揺れもの骨のウエイトはこのようになっている。揺れもの骨の軸は統 一してるのでまとめて回転させるとこのように放射状に展開する。デフォームリグとセカンダリージョイントが作成されたらデータを出力。モデルの出力時と同 様にキャラエントリにKineDriverを追加して、この工程は一旦完了。

キャラクターデザインによっても差があるが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』の大きな特徴の一つが、並列に配置 されたジョイントチェーンの間を横方向に結び、格子状につなぎ合わせる『ラテラルリンク』と呼ばれる機能だ。このラテラルリンクがあることで、風にはため いて布地に表れる波打ちのような動きの表現も可能になっている。会場では、ラテラルリンクがある時とない時での動き方の違いが比較されたがこれがあるだけ でこんなにも表現に違いが出るのかと驚かされた。このラテラルリンクに対しても衝突判定をさせることで、ラテラルリンク間に物が突き抜けてしまうことを防 ぐことが出来る。

この緑で囲った水色のラインがラテラルリンク。これがあることで横方向の布のはためきが表現可能。
右と左のキャラでBonamikの設定が違っていて、風を受けた時の揺れ方が異なる。
ラテラルリンクにより、シミュレーションノードの挙動がばらけるのではなくお互い影響しあうよう挙動になる
ラテラルリンクによるコリジョン
ラテラルリンクがあることで横方向で相互に影響うけるようになるので 風をうけたときに、波の様な表情を出すことが可能になる。ラテラルリンクコリジョンでコリジョンも取れるのでめり込むことなく頂点シミュレーションをかけたような結果を得られる。

しかしいくら衝突設定を施してもゲームのFPSを保つため には1フレーム内で衝突判定が1度のみという制限があったため、素早い移動ではメッシュが突き抜けてしまうこともあった。この問題に対しては、前述した 『KineDriver』を併用することで解決できた。つまり、アニメーションされた骨の角度をソースに『KineDriver』によってドリブンされた シミュレーション骨がまず衝突判定させやすい状態まで形状を変化させる。この動作は物理シミュレーションではないためどんなに高速に移動しても遅れること なく求めている形へと変化してくれる。変形後は『Bonamik』によって物理シミュレーションの影響を受けて衝突判定を受けるというわけだ。

Bonamikは急激なポーズ変化するとめり込みが発生。処理負荷を5%以下にする必要があった為、高度なコリジョンアルゴリズムを実装することは難しい。
KneDriverを使用して、Bonamikのシミュレーション前にある程度身体との接触を緩和。
KineDriverが有効であれば急激なポーズ変化にも問題無く対応可能になった

また、髪の毛のシミュレーションでは、パラメータや質感の 変更によって雨に濡れた髪の表現も対応。まず髪形をボーンによって変形させたのちMass(質量)を重くし同時にカラーやスペキュラーも動的に変化させる ことによって、雨に濡れて次第に髪が濡れていくような表現となっていた。動きだけでなく質感までもシミュレーションと連動させていたことに非常に驚かされ た。

髪にもジョイントを入れてシミュレーションしている。
雨に濡れた時の髪の変化にも対応。髪の骨のポーズ変更、Bonamikの質量変更、カラーとスペキュラーの変化を行っている

Bonamik / Muscle Simulation

また本作では、筋肉シミュレーションについても時間の許す範囲ではあるが出来る限り挑戦したという。

まずは筋肉や脂肪のある部位にセカンダリジョイントを作成 し『Bonamik』でシミュレーションさせてみたところ確かに『Bonamik』を設定する前よりも二次的な動作が付いて柔らかくはなったもののまだ筋 肉の表現には遠かったという。なぜなら、体が地面や障害物に衝突したときの反動エネルギーによって筋肉や脂肪が高速に揺れる表現がないため、ただ動きに追 従して揺れるだけに留まってしまっていたからだ。

デバッグ表示。手が着いた瞬間に特にエネルギーが発生してないので動いていない。

そこで体の動きの移動エネルギーも『Bonamik』に影 響させられるような機能が追加実装された。この効果を設定する前と後で結果を比較してみると一目瞭然の結果であった。この機能によって、高速に移動するゼ リー状の物体を揺らす表現などにも幅広く活用されたという。プレゼンテーションの最後には本作に登場する全モンスターキャラクターの合間を主人公が駆け巡 りながら『Bonamik』の影響を示すグリーンのオブジェクトの使用具合が紹介されたが非常に多くのキャラクターの様々な部位で活用されていることに驚 かされた。

首や胸筋も手のアニメーションの影響を受けるように設定。これによりシミュレーションノードが大きく反応するようになった。
NamedHumanとモンスターを並べたレベル。ほとんどのキャラにBonamikが設定されていてキャラクターの品質に大きく貢献しているのがわかる

Procedural Animation

プロシージャルアニメーションとは、事前に用意したアニ メーションデータをソースにさらに動的な変化をランタイム上で計算によって作り出すことで、これも同じくテク推によって開発された。本作では、キャラク ターの状態や環境の変化に合わせたアニメーションのバリエーション変化を、いかにアニメーション制作コストを削減しながら作れるかという点に注力された。 最初に紹介されたのが『HitReaction』でラグドールに対して攻撃を与えると攻撃が当った部位にインパルスを発生させ体の一部の動きがそれに応じ て変化する様子だ。もしヒットリアクションを全て手付けモーションで付けた場合、動きがパターン化してしまい単調にならないように多数のモーションを用意 する必要があるが、この方法では攻撃を当てる場所によって自動的に変化していた。

赤い表示はアニメーションしている状態
青い表示は演算している状態。ラグドールに対し、攻撃が当たった個所にインパルスを発生させて身体の一部のダメージ表現をおこなう
紫の表示はアニメーションに戻るブレンド中を意味する

次に紹介されたのは地形変化に応じて重心の変化を行える IKだ。自然界では斜面に対して垂直に立った時には勾配に逆らうように体が自然と起き上がるが、これもゲームで表現するには状態の変化に応じてモーション のバリエーションを作成する必要がある。会場では斜面にどれだけ沿うかどうかパラメータを変化させるだけで表現できる機能が紹介された。4足歩行のキャラ クターが下り坂に向かって立っている時にスライダーを変化させると後ろ脚を曲げてしゃがませるようなポーズへと変化していく様に会場からは驚きの声が上 がった。同社の本作におけるアニメーションへのこだわりが相当のものであることがうかがい知れる事例であった。

FFXVではこのように傾斜に対して自然に姿勢が変更されるIKが実装されている。
ビューワーで確認しながらパラメータを調整。傾斜に対して垂直に立っているときと水平に向いてるときで このようなパラメータを変更。
パラメーター調整なし
パラメーター調整あり
調整をビューワーで行ったら、LuminousStudioのキャラエディタでパラメータの変更を保存して完了
Bonamikにもプロシージャルアニメーションの機能が入っている。マインドフレアの触手でオフにするとうねうねせず、硬いアニメーションになる。
オンにした状態。うねうねした動きはモーションではなく、動的に作られてる動きであることがわかる。シミュレーションもしてますので、地面とのコリジョンも取りながらプロシージャルアニメーションを行っている。

Trigger Authoring

Trigger Autoringとは、プロシージャルアニメーションやBonamikが再生されるタイミングを調整する機能。Bonamikやプロシージャルアニメー ションを常に動作しつづけると、問題が発生することがある。例えば、攻撃モーション実行中にヒットアニメーションが再生されるとポーズが崩れてしまい、何 をしているのかわからなくなってしまったりする。これを回避するためにヒットリアクションをオフにするというトリガーを設定し、ポーズが崩れないようにし ている。ボナミックに関しても同様のトリガーを設定できる。攻撃モーションの場合、攻撃ヒットのタイミングを考慮してモーション付けているのでコリジョン がついてる髭や尻尾のポーズがアニメーションの意図とずれる場合がある。Bonamikの影響を受けてポーズが変わらないようにTrigger Autoringを設定する。

スローニンの切りかかる攻撃中にHitRactionは発生した状 態。 ポーズがかなり崩されていることがわかる。FFXVでは仲間がいるため、全員で攻撃すると更に崩れてしまうことがあった。そのため、 HitRaeactionをオフにするトリガーを設定して ポーズがくずれないようにしている
クアールは尻尾と髭にBonanikが設定されている。左がTriger設定前で、右がTriger設定後の攻撃モーション。髭としっぽだけBonamikをオフにするトリガーを設定され、ポーズが変わらないように調整することができる。

シミュレーションの今後の課題

岸氏のセッションの最後には、シミュレーションにおいて今 後の課題としている点を紹介していた。まずは頂点ベースのシミュレーションに取り組むことで、これは更なるクオリティ向上の実現を可能とする。特に同社の 作品では揺れ表現を必要とするデザインが多く、ジョイントベースで動かすのには限界を感じているという。そして皮膚や筋肉のシミュレーションにも今後さら に取り組んでいく。骨や筋肉の上に皮膚が覆いかぶさり滑りながら移動する様な物理的に正しい表現への実現を目標としていく。また首回りの筋肉の表現にも課 題が残っている。現状では、フェイシャルリギングとボディリギングで担当者が分かれているが、今後は両方のスキルを持った技術者が必要になってきてるので はないかと話した。

Created By
ボーンデジタル イベント事務局
Appreciate

Credits:

©2017 SQUARE ENIX CO., LTD. All Rights Reserved. MAIN CHARACTER DESIGN:TETSUYA NOMURA ©2017 Born Digital,Inc All rights reserved.

NextPrevious

Report Abuse

If you feel that the content of this page violates the Adobe Terms of Use, you may report this content by filling out this quick form.

To report a copyright violation, please follow the DMCA section in the Terms of Use.