昨日はCAPCOMオープンカンファレンス RE:2019 東京会場の開催日でした。
— カプコン技研 公式アカウント (@CAPCOM_RandD) September 20, 2019
クロージングトークでの告知前にも関わらず、多くの方々からフォローを頂きありがとうございます!
カプコン技研として、情報の公開にも積極的に取り組んでいきます。#REENGINE pic.twitter.com/omxMhse9Ik
CAPCOMは自社ゲームエンジンRE ENGINEの進化について『バイオハザード RE:2』『デビルメイクライ5』における実装事例などを交えながら技術解説を行う「CAPCOM オープンカンファレンス RE:2019」開催しました。本カンファレンスは東京と大阪で開催され、大勢の来場者が参加していました。4つの講演からアニメーション技術解説について見ていこうと思います。
モジュラーリギング~リギングをより効率よく、より簡単に~

アニメーション技術解説のセッションはリギングからスタートし、講師はカプコン第一開発部のザーポトツキー ペートル氏(以下ペートル氏)が担当しました。ペートル氏は『バイオハザードRE:2』までの開発体制では、モデラ―がジョイントを組み入れる体制でしたが新たにリギング専門の部門を編成し、モデルとリギング双方の品質が向上しリギングのモジュラー化が可能になったと解説しました。新しく編成されたリギング部門では私たちのエンドユーザーは誰か?を話し合い、ゲームを遊ぶプレイヤーとキャラクターを動かすアニメーターと定義し作業に当たったとのこと。その結果、開発時間の短縮やクオリティアップが実現できたとペートル氏は解説しました。

また、ペートル氏は「今作るツールを次のプロジェクトに使えるか?」と考えたことがジョイントのモジュラー化につながったと語り、モジュール化によってボタン一つでリグを作成するようになったと述べ、誰が作業しても同じ品質のリギングができるようになり、統一性やイテレーションの高速化などの成果に結びついたと語りました。


最後にペートル氏はジョイントの位置について言及し解剖学的な見地を踏まえて実際の人間の身体内と同様に骨の位置を決めることの重要性を説明しセッションを終えました。
『バイオハザードRE:2』における組技リターゲット技術
ここから次のセッション「『バイオハザードRE:2』における組技リターゲット技術」に移り担当も技術開発部 内山創一氏(以下内山氏)と第一開発部 牧山拓斗氏(以下牧山氏)に交代し講演は続きます。
組技と組技リターゲット

牧山氏は組技とは複数のキャラクターが相互に干渉する演出を指すと説明し、事例として『バイオハザードRE:2』のレオンがゾンビに噛まれる動画を交えてセッションを進めていきました。事例のシーンではレオンとクレアの骨格が異なるためアニメーションをそのまま流用すると噛みつく位置がズレてしまうと牧山氏は課題を説明。この課題を解決するためにもし1キャラずつ手作業で補正を行った場合、675営業日の開発日が必要という試算結果が出てしまったとのこと。この工数を捻出することはできないので組み技リターゲットの開発が始まったと語りました。


牧山氏は組み技リターゲットとは、レオンに噛みつくゾンビのアニメーションをクレアで再生した時に位置補正をプロシージャルに反映する機能のことで、3段階を経て組技リターゲットの実装を進めていったと説明しました。
1段階目はアニメーターとプログラマ―による組み技リターゲット要素の洗い出しで、今回の事例ではレオンとゾンビの両腕の4か所ゾンビがレオンの首に噛みつく1か所の5か所が位置合わせの要素になると牧山氏は説明しました。2段階目のアニメーション作成はアニメーターがMayaで作業する工程になり、組み技リターゲット専用ジョイントに元から設定しているジョイントと同じ動きを設定し、噛みつきアニメーションに含めて出力することでアニメーション作業は完了すると牧山氏は説明しました。

3段階目のランタイム上での適用はプログラマが担当。2段階目で設定したアニメーションデータには組み技リターゲット専用のジョイントが組み込まれておりIKターゲット座標が算出できるようになっているため、レオンがクレアに変わってもゾンビの手の位置は自動で変更されるようになりました。なお、ゾンビが噛みつく位置については、ゾンビの腰に組み技リターゲット専用のジョイント設定し平行移動で対応。腰のジョイントについては、平行移動時に足が地面にめり込まないように調整することも必要だった牧山氏は説明しました。
ただし、この適用の順序を間違えると、腰が平行移動することで腕の補正がズレてしまうので、最初の洗い出しで十分に検討する必要があると語りました。そして、元々675営業日と見積もられた日数は三分の一まで圧縮することに成功したと語り、セッションを終えました。
RE ENGINEのシステム説明

内山氏はセッション内での用語を説明するところからセッションを開始し、続いてアニメーターのMAYA上での作業について触れ、組み技リターゲットにはジョイント情報と組み技リターゲットの適用率、遷移情報を含んだプロパティアニメーションが必要となり、これらの作業をTAが作成した専用ツールで作成できるようにしたとのこと。専用ツールによって、ボタンを押すなど簡単な操作で作成できるようになったと語りました。


続いて、内山氏はRE ENGINEでアセットがどのようにゲームデータに変換されていくかを解説しました。アニメーションにはすでにジョイントが組み込まれており、ジョイントを追加する場合はメッシュにも同じジョイントが必要になるのですが、RE ENGINEではその必要はありません。と内山氏はいいます。RE ENGINEではモーションの最適化のために必要なアニメーションを判別して再生する独自の骨構造を作成していると解説しました。

RE ENGINEではマスターとなる骨構造の管理はトランスフォームコンポーネントが行い、メッシュから骨構造が登録されます。その骨構造とモーションアセットの中にある骨構造を比較して必要なジョイントを集めた骨構造を作成しているため、メッシュの中にないジョイント情報も追加データを与えることでモーションコンポーネントが再生してくれると語りました。この追加の骨構造を与える機能がが牧山氏が解説していた専用ジョイントを指すと語りました。

また、RE ENGINEにはシーケンスデータ自動作成システムがあり適用率や遷移率を含むプロパティアニメーションを、スクリプトで定義されている型に紐づけてMAYAなどからRE ENGINEに自動変換していると語りました。内山氏はリターゲット情報はプロパティアニメーションの中に保存されているが1次元データのため、ジョイントの位置などと同列に扱うと計算の最適化に影響があることや、タイトルの実装によっては仕様変更もあるので手軽にカスタマイズできるようにするのが理想的と判断。リターゲット情報はキーフレームデーターを作成できるモーションシーケンスに移したと説明し、仕様変更のしやすい柔軟なシステムになったと語りました。また、アニメーターはMAYA上で作業が完了し、シーケンスデータの手入力を行う必要がなくなったと語りました。

最後に内山氏は、共通のモーションを使うことで男性キャラと女性キャラが同じ動きをしてしまう点や、専用のワークフローを用意したことでアニメーターの心理的負担があった点などの課題を挙げ今後もプロシージャル技術の向上に取り組むと述べてセッションを終了しました
「技術が生み出すゲームアニメーション~プロシージャルアニメーション/モーションマッチング~」
最後のセッション「技術が生み出すゲームアニメーション~プロシージャルアニメーション/モーションマッチング~」は第一開発部 橋本直樹氏が担当しました。
プロシージャルアニメーションについて
橋本氏は最初にプロシージャルという言葉は自動的に生成する技術と一般的には解釈されているが、アニメーション分野では姿勢を動的に加工し状況に応じた動きを生み出す技術と捉えることができると説明し、Fullbody-IKは姿勢全体を制御することができるが計算も複雑になると解説しました。

複雑な計算を行うことにより処理負荷がPS4上で3msecかかるようになったため、橋本氏は負荷削減の一つの方法としてキャラクター全身の動きを処理するのではなく、上半身の動きだけの処理に変更することで、0.5msec以下で計算可能にできたので現実的な計算コストになったと語りました。

では、計算コストを下げることに成功し実用的可能になったこの技術をどのように活用するかを考えたと橋本氏は述べ、キャラクターの攻撃軌跡をどのように変化させるかに活用したと語りました。基準となる平面と回転の中心と軸の2点を決めることで、ターゲット位置を通るように平面を回転させる処理を行うことでキャラクターの攻撃軌道が変化すると語りました。直線の例としてスコップを持ったゾンビの攻撃モーション、平面の例としてチェーンソーを振るうミアのモーションで説明しました。『バイオハザード RE:2』発売後初めての公開とのことでした。


続いて橋本氏は2BoneIKについても説明し、例としてキャラクターの通常の歩き移動をそのまま坂道や階段を登る加工技術を挙げました。坂道のコリジョンには移動判定に用いる地形コリジョンと視線や攻撃の通過判定に用いる効果コリジョンがあると語り、見た目は階段でも地形コリジョンでは坂道になっていると説明しました。キャラクターは足元の地形の傾きを常に判定しており、傾斜に合わせて2BoneIKで姿勢を制御していると説明しました。姿勢の制御によって、通常の移動が坂道や階段を移動しているように見せることができると語りました。
モーションマッチングについて

モーションマッチングの説明の前に、橋本氏はキャラクタを自然に動かすためにステートマシンで作成するとモーションが増えるごとにステートマシンは大きくなり、組み込みや修正は複雑化するという課題があると説明しました。この課題に対し、UBIソフトがGDC2016で発表し『For Honor』で使用した技術であるモーションマッチングはバンダイナムコやEAでも検証を行われ、カプコンでも2017年から研究していたと語りました。
橋本氏はモーションマッチングとは、ダンスカードという移動コースに沿って歩行や走行などいくつかのパターンで何度もキャプチャーし、フラグメントと呼ばれる1秒間の情報に分割。1秒間の最初と最後の足位置と移動の軌跡を取得し、10フレームごとにずらしフラグメント集合体を作成。このフラグメント集合体から足位置や移動の軌跡が近いものを検索し、つなぎ合わせて歩行や走行を行うというものと説明しました。
モーションマッチングの難しかった点として、橋本氏は目標パスの設定を適正に行わないと歩行→歩行となるべきところが歩行→停止になってしまうことや、キャプチャー時の上半身姿勢が異なると撮り直しをせざるを得ず、アクターも疲労するため、部分的に撮影ができるダンスカードを独自に作成したこと、膨大なフラグメントからデータを検索処理するため負荷が高くなるため、フレームマネージャに管理させるなどの対策を実施したと語りました。
また、モーションマッチングの応用として橋本氏は歩行からドアを開けるアクションへの遷移について語り、ドアの周りに2つの円を設け、黄色の円の中ではモーションマッチングで歩行し、オレンジの円の中に進むとフラグメントを検索して位置と向きを補正しドアを握るモーションに遷移するように設計した説明しました。

モーションマッチングは組み込みの負担やAIとの連携という課題も残るものの、ゲームでの有効活用ができる可能性を感じ、ハードの性能向上により新しい技術が登場することを楽しみにしていると語り、アニメーションの表現も向上する中で検証する方法の充実も必要になってくると述べてセッションを終了しました。
1日に及ぶRE ENGINEの講演は非常に充実した内容でした。カプコンが自社エンジンにこだわる姿勢について、カプコン第一開発部常務執行役竹内潤氏の言葉でこの記事を締めくくりたいと思います。
RE ENGINEはカプコンそのものであると理解していただければいいと思います。RE ENGINEはカプコンのために作られたエンジンであり、カプコンの人員が使いやすいようにできているエンジンです。
