『Ghostwire: Tokyo』のリアルなアニメーション表現を生み出す4つのプロシージャルアニメーション手法【CEDEC2022】

2022.09.06
注目記事しくみをつくる見た目を良くするゲームの舞台裏講演レポート公開資料まとめCEDEC2022
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

国内最大規模のゲーム業界カンファレンス「CEDEC2022」が、2022年8月23日(火)から8月25日(木)までの日程で開催されました。最終日となる8月25日には、ゼニマックス・アジア株式会社(Tango Gameworks)プログラマー 駒田 喬氏が登壇し、「Ghostwire: Tokyoの表現を支えるプロシージャルアニメーション」と題した講演が行いました。Ghostwire: Tokyoのために開発した、4つのプロシージャルアニメーション手法について解説された本講演をレポートします。

TEXT / 神谷 優斗
EDIT /  神山 大輝

目次

本作のために開発された技術

『Ghostwire: Tokyo(以下、本作)は、2022年3月に発売された箱庭型の超常アクション・アドベンチャーで、フォトリアルなグラフィックスが特徴な作品です。

本講演では「補助骨システム」「チェイン状の揺れ物」「2足歩行IK」「4足歩行IK」の4種類の技術トピックが取り上げられており、既存技術を作品の表現に活かした手法が解説されています。

開発に使用されたDCCツールはMaya 2018とUnreal Engine 4(以下、UE4)ですが、講演の内容は特定のツールによらず転用が可能な知見となっています。

今回紹介する技術自体はDCCツール、ゲームエンジンに依らず実装可能。本作ではDCCツールにはMaya、ゲームエンジンにはカスタマイズしたUE4を使用

手の表現をリッチにするための補助骨(HelperJoint)システム

最初に紹介されたのが、HelperJointと呼ばれる補助骨システムです。補助骨システムはメッシュの細かい変形を制御するための副次的な骨を制御する仕組みで、手首骨の回転による腕のねじれ補正や、膝のつぶれ防止などによく使用されています。

HelperJointと呼ばれる制御機能は、「特定の骨のポーズを入力とし、別の対象を制御する機能」として設計されました。

対象の骨の状態に連動して、「補助骨」「ブレンドシェイプ」「マテリアルパラメータ」が制御される。補助骨システムは一般的にプロシージャルアニメーションに括られることは少ないが、特定のルールからリアルタイムでアニメーションを出力しているという点では類例とも言える

一般的に、一人称視点でのゲームにおいて手の表現は重要視されるケースが多いですが、本作には印を結ぶアクションが存在することから極めてリアルな手の表現が求められていました。

本作では、HelperJointを用いてブレンドシェイプなどを骨の動きと連動させることで、ボーンアニメーションだけでは作りづらい細部のリッチな表現を実現しています。

プレイヤーの掌底攻撃にHelperJointを適用した例。手首部分の折れ曲がりが滑らかになったほか、指の健が大きく浮き出ている。ブレンドシェイプやマテリアル法線マップ制御を、手の骨の動きに連動させることで実現している

HelperJointはDCCツールとゲームエンジンで同じ挙動になるように実装されており、アーティストのみでワークフローが完結するような工夫が施されています。DCCツール内にHelperJoint専用ツールを作成し、アーティストが事前に用意した補助骨やブレンドシェイプ、マテリアルをもとに、HeplerJointで入力となる骨の設定や出力先の設定を行います。

挙動を共通化させることで、DCCツール上で作りこんだ設定をゲームエンジン側で調整する手間が省ける

HelperJointツールでは、入力となる骨の設定や出力先の設定を行う。出力先となる補助骨などは事前に作成しておく必要がある

HelperJointツールでは、入力に使用するパラメーターに3つの選択肢があります。その中で最も多用されるオイラー角による制御には、ジンバルロックによるフリップが発生する問題が存在しますが、回転軸を分解する順番を指定可能にすることでこれを解決しました。
※ジンバルロック:回転軸が重なってしまうことで、回転の自由度が下がってしまうこと

入力と出力の関係として、カーブが設定できる。オイラー角、2つの骨の距離を入力にした場合、複数のキーで細かくカーブを作ることも可能となる

HelperJointの挙動はMaya内でカスタムノードとして実装されます。HelperJointの数の分だけHelperJointノードが作成され、ツール上の設定が反映される形となっています。

パフォーマンスを下げないため、変列評価するように実装されている。カーブを設定した場合、HelperJointノードと出力先ノードの間にAnimCurveノードを挿入することで、カーブを反映させている

UE4側では、AnimBlueprintのカスタムノードとしてHelperJointが実装されており、Mayaからインポートした設定データが反映されます。また、補助骨システムの参考にした他社事例として、スクウェア・エニックスの「KineDriver」が挙げられていました。

次世代を見据えた新しい補助骨システムの開発 - CEDEC2019

数多くのキャラクターに利用されるチェイン状の揺れもの

2つ目は揺れものの実装です。骨物理などと呼ばれる鎖状に繋がった複数の骨を揺らすための仕組みは業界でも広く普及しています。

本作では、一般的な揺れものに対応する「JointChainPhysics」と、特殊ケースに使用する「JointChainDelayed」の2種類のシステムを開発しました。

プレイヤーキャラクターにJointChainPhysicsを適用した例。衣装のパーツの揺れものに対して、大量のJointChainPhysicsが設定されている

適用前(右)、適用後の比較(左)

JointChainPhysicsは、主人公の衣装や猫のしっぽ、浮遊する敵の脚など、本作に登場するほとんどのキャラクターに適用されています。自然な揺れによってキャラクターに硬さや安っぽさを感じさせず、アニメーション全体のクオリティを底上げさせています。

JointChainPhysicsは、Stiffness(剛性)とDamping(減衰)を考慮したばね物理をベルレ積分(位置ベース)で実装しています。実装自体は「Kawaii Physics」と類似している部分も多いとのこと。

コンストレイントは骨の長さとコリジョン2二つ。UE4上でも同一の挙動をさせるために、これらをAnimBlueprintのカスタムノードとして実装している

揺れものの設定に関しては、基本的にキャラクターアーティストだけが担当します。スケルトンに揺れもの用の骨を追加し、UE4上でもAnimBlueprintに専用ノードを追加すれば準備完了。挙動はエディタで確認しながら調整可能になりますので、エンジン上でプレビューしながら作り込みが行える仕組みとなっています。

一方、ばね物理のようなオーバーシュート(通り過ぎ)が不要で、チェインの先端が根元に対して遅れる動きのみを表現したいケースでは、JointChainPhysicsではなく、Delayパラメータによる遅延揺れ機能「JointChainDelayed」を使用します。

JointChainDelayedはワンパラメータのため調整が簡単で、高速・高周波な移動といった調整の難しいケースでも扱いやすいのが特長です。

ゲーム内では、高速で移動する「鎌鼬」というキャラクターに適用している。頭を動かすと、胴体としっぽが遅れてついてくる

人型の対象に適用する2足歩行IK

続いては2足歩行IKについて紹介されました。2足歩行IKに関しては数多くの事例が公開されており、その中でもカプコンが過去に行った講演を特に参考にしたとのこと。

キャラクターのポーズやアニメーションは傾きのない足場を前提に作成されているため、段差や傾きのある足場では足が宙に浮いたりめり込んだりして不自然になってしまいます。2足歩行IKは、2足歩行キャラクターの足の挙動を、地面に対して自然になるよう補正する機能です。

2足歩行IKがオフの場合、足が階段から浮いてしまっておりフォトモードのクオリティが下がってしまう

階段でも両足が接地している。傾きのない状態を前提としたモーションに補正をかける形で実装

揺れものと同様、2足歩行IKはAnimBlueprintのカスタムノードとして実装しています。キャラクターへの組み込みと使用場面の限定は各キャラクターの担当プログラマーと協力して行い、パラメータ調整に関してはIKアルゴリズムに対する深い理解を伴うために原則として駒田氏が担当し、仕上げにモーションアーティストが携わるという形になったそうです。

IKのアルゴリズムには「TwoBoneIK」を採用。

箱庭マップで多数のキャラクターをスポーンさせる都合上、軽量でなければならない点、アルゴリズムがシンプルで問題が発生した際に調査が容易であることが採用の理由として挙げられました。

両足の真下の地面の情報から、足首や腰の高さなどを補正する。急激な高さの変化に対応するため、臨界減衰と速度上限を適用してスムージングさせている
※臨界減衰:ばね物理において、オーバーシュートの起きない最短時間で元の位置に減衰するときの減衰曲線

2足歩行IKパラメータの多くはカーブを適用可能にすることで、モーション中に細かく値を変化させられるようにしている

犬や猫のための4足歩行IK

最後に4足歩行IKが紹介されました。本作において4足歩行IKは犬と猫に対して適用されています。

4足歩行IKも2足歩行IKと同じく、4足歩行キャラクターの足が地面に対して自然な位置になるよう補正する機能です。こちらは、犬や猫のお尻やしっぽが地面に沿うように補正する役割も担っています。

2足歩行IKと同様に、傾き0を想定したモーションに対して補正している。段差に対して脚が浮かなくなっており、不自然さが軽減している

座った姿勢にも対応。しっぽが地面の傾きに添うように落ちている

基本的な実装は2足歩行IKと同じですが、地面の傾きと高さをもとに骨盤骨を補正し、全身を地面に沿って傾けることで、自然な4足歩行を実現しています。

また、4足歩行IKは2足歩行IKと同じワークフローで適用されています。

4足歩行IKも2足歩行IKと同じように、足直下の地面情報をもとに補正する。地面の高さから骨盤骨(今回はルート骨と同一)の傾きと高さを決定し、全身を地面に沿って傾ける。その後、4本の足それぞれにIKを適用する

4足歩行IKのアルゴリズムには、3本の骨の制御をする都合上TwoBoneIK以外の選択肢が必要でした。そこで、2足歩行IKと同様の理由から、シンプルで軽量な「FABRIK」を採用しました。

犬や猫は足運びのピッチが早く、ジッタリングの粗がみえにくいという特性から、簡易な実装ではあるものの非常によい結果が得られたとしています。一方で、大きくてゆったりとした(かつ、スクリーン占める面積の多い)モーションのキャラクターに適用する場合、要求されるクオリティは高くなるのではとも分析されていました。

既存の技術を自らの開発環境にうまくチューニングさせたTango Gameworks。駒田氏は最後に、各機能にフィードバックを行った関係者やセッション準備の協力者、そして4足歩行IKの実験台になった「うちの猫」に謝辞を述べ、講演を締めくくりました。

Ghostwire: Tokyo 公式サイトGhostwire: Tokyoの表現を支えるプロシージャルアニメーション - CEDEC2022
神谷 優斗

コーヒーがゲームデザインと同じくらい好きです

関連記事

シリーズ初の3Dアクション『星のカービィ ディスカバリー』におけるカービィらしさと遊びやすさ、そして現実世界との融合を目指したアートディレクション【CEDEC2022】
2022.12.28
モデラーとしてコンセプトアートと徹底的に向き合う『ELDEN RING』におけるキャラクターモデルへのアプローチ【CEDEC2022】
2022.11.30
『星のカービィ ディスカバリー』プロシージャル地形生成への取り組みから見るアーティストとエンジニア、レベルデザイナーの協力体制【CEDEC2022】
2022.11.10
『ヘブンバーンズレッド』のゲームデザイン――ADV、フィールド、バトルパートの全てにおいて「切なさ」を演出【CEDEC2022】
2022.11.09
“フル”クラウド開発の第一歩は新人研修から。バンダイナムコスタジオによるリモート環境でのゲーム開発インフラ整備【CEDEC2022】
2022.11.07 [PR]
AIによるアセット自動生成、ビルド時間の短縮――『FORSPOKEN』事例から見るマイクロソフト&Luminous Productionsの開発効率化【CEDEC2022】
2022.10.25 [PR]

注目記事ランキング

2024.11.27 - 2024.12.04
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

ローパスフィルター(Low-Pass Filter)
ローパスフィルター
  1. 電気信号のうち、指定した周波数(カットオフ周波数)以下の信号を通し、それより上を大きく低減させるフィルター。
  2. ゲーム開発において、基本的にはサウンド用語として用いられる。例として、特定のセリフをローパスフィルターによってくぐもった音に加工することで、隣の部屋や遮蔽物の後ろで話しているかのような表現を行うことができる。
VIEW MORE

Xで最新情報をチェック!