UFC2009のセミナーレポート・後半

前回の記事から、少し空きましたが、UFC2009セミナーレポートの後半です。後半はアニメーション関連の技術を中心にまとめていきます。

アニメーションのビジュアルテクニック

  • アニメーションブレンド
  • IK(フルボディIK)
  • 物理シミュレーションとアニメーションの統合

まず、UFC2009では3つのポイントに沿って説明されました。

キャラクターのポーズが作られるまでのフロー
  1. アニメーション(アニメーションデータの再生・ブレンド)
  2. IK(ターゲッティング・足固定)
  3. 物理シミュレーション(物理・ポーズを再構築)
  4. ヘルパーボーン(関節・筋肉の動き)
  5. キャラクターモデル描画

[1]でアニメーションデータの再生・ブレンドを行います。
[2]で、IKの計算。ターゲッティング・足の位置を固定します。
[3]物理シミュレーションを行い、ファイター同士のめり込みを軽減するなどし、ポーズの再構築を行います。
[4]ヘルパーボーンの計算を行い、関節・筋肉の動きなどを計算します。

一連のアニメーションの計算が終わり、各キャラクターのポーズが構築されれば、キャラクターモデルの描画を行います。

アニメーションデータ
  • 3dsMaxで作成
    • Bipedを使用
  • カットシーン(デモ)
  • インゲーム
    • 人体・フェイシャルとも、手付け
      • ゲーム中は、記号的な表現を求められるため、全て手付けが理想
    • 約5000モーション

モーションキャプチャと、手付けを上手く使い分けています。デモなどの感情表現が必要な所は自然な演技を必要とするため、キャプチャ。インゲームではカメラが遠かったり、ゲームの記号的に曖昧なものを避けるために、記号的な表現を行いやすい手付け。なるほど。

ここで、ちょっと疑問。フェイシャルのキャプチャデータを編集できつつ、手付けも可能なRigってどんなでしょうね?どっちかに寄せると、どっちかが使いにくいような…。そういえば、何かのゲームでそれを解消できるRigが紹介されていたような、何だったかな。

アニメーションブレンドの必要性
  • 組み合わさった双方が別々に動けるように
  • アニメーションのつなぎ目を滑らかにする
  • 無段階遷移
  • アニメーション数の削減

アニメーションのブレンドは人間を扱うゲームでは必須ですね。上記4点の利点の分析はわかりやすいです。なるほど。

UFCにおけるアニメーションのブレンド
  • 1キャラクターに使用するアニメーショントラックは、計10本
アニメーショントラック トラック数 補足
ベース 1本 基本的な動き
ナビゲーション 5本 移動(歩き・走り)、無段階遷移のブレンド
体制のコントロール 1本 掴み・動作
ダメージリアクション 1本 ダメージを受けたときのリアクション
アクション 1本 攻撃
ディフェンス 1本 防御

これは驚き、10本もトラックを用意してブレンドしているみたいです。ブレンドの割合とか何で制御してるんでしょうか?あんまりブレンドしすぎると、動きがどんどん曖昧になってくるので、そのあたりの判断とかも聞いてみたかったなぁ。*1とにかく、たくさんのモーションをブレンドしてるっていう知識をいただけただけで、個人的にはアイデアの枠が広がって満足です。

ファイターの表情
  • 細かい表情を制御
    • 視線の制御も状況ごとに分ける
  • 殴られる前に痛そうな表情をする
    • 目の前に拳が来た場合、ヒットする前に「痛い」事を予感した表情をする
    • SSを撮影した時に重要な要素

これはアイデアですね。殴られる前に殴られる事を予想して、痛そうな表情になる。これは面白い!他にも応用できそうですね。

IK(Inverse Kinematics)
  • フットロック
    • 接地した足が滑らないように
  • ターゲッティング
    • 攻撃がきちんと当たる
    • 目的の部位を掴む
  • 顔・眼のトラッキング

この辺は、基本的な使い方ですね。

フットロック
  • アニメーションのブレンドはFK単位で行われるため、そのままブレンドしただけでは滑る
    • アニメーション自体に、足の接地情報を付加している
  • 3dsmaxのノードトラックを活用(ラベリング)
    • アニメーションの切り替え時に接地している足が動かない

アニメーションのブレンドはFK。そのままじゃ接地する足が滑っちゃうので、Max上で接地情報のフラグの設定をしてると。

ターゲッティング
  • パンチやキック、掴みが狙った所に当たるように全身のボーンを使って補正(フルボディIK)
  • 攻撃が伸びきった所で、ブレンド率が最大になる。

これは、フルボディIKの効果的な使い方だなと思いました。1m先の相手を殴るのも、20cm先の相手を殴るのも、モーションは1つで、ヒットの瞬間の腕の位置を相手の部位にターゲットして、体はフルボディIKで制御。動きも自然に見えて、アニメーションの削減も行える。非常に理にかなっています。

ただこれをやると、動きのシルエットが崩れ、印象的なシルエットが保ちにくくなっちゃうので、表現的な格好良さも、ゲームの記号としても保てるように、使いどころを考えないといけないですね。

物理シミュレーションの役目
  • Havok Physics/animation
    • 全てのオブジェクトは剛体として扱う
  • ゲーム中は常に物理シミュレーション(フルタイム物理)
  • 物理エンジンの効果
    • 埋まりの排除
      • ファイター同士
      • ファイターと環境
    • ダイナミックなリアクション
      • 物理計算によって、リアクションを発生させる
    • 脱力表現
      • 部分的に脱力を表現。
      • 自分が攻撃している時に、カウンターでパンチをもらうと、両腕がだら〜んとする等

キャラクター同士の埋まりをなくすために、物理エンジンを使ってるって、初めて聞きました。こだわりが凄いな。あと、ムービー見てると、脱力表現が凄い自然で、アニメーションのブレンド感も無くて、とっても良いですね。

ムービーを見ていると、海外のFPSにありがちな「人形感」が全く無くて、意識が無くなった瞬間の人間が上手く表現出来ています。このあたりもブレンドと、手作業での調整で自然に見えるようにしているんでしょうか。

  • 動的なコンストレイン制御
    • 任意の点と点をスプリングで結合する
      • 相手をしっかりと掴む時に使う

指定した場所と、指定した場所のコンストレインですね。この値もブレンドできるようです。

  • クロスシミュレーション
    • トランクスに使用
    • Havok Clothを使用
      • アーティストのための環境が整っている
      • 演算速度が優れている
    • パーティクスベース
      • リファレンスメッシュの影響が大きい(リファレンスメッシュ = シミュレーションする前の形状)
      • 各種コンストレインは頂点単位
      • セルフコリジョンは無し

Havok Clothは初耳ですね。Havokは物理エンジンの部分しか知らなかったです。ボーンベースのシミュレーションと比較すると、頂点単位のシミュレーションは、さすがに布の柔らかい感じが違います。

  • 60FPSについて
    • 次世代表現を謳うには、60FPSが必須であった
    • 最適化はクオリティーを落とさず、各プラットフォームに合った最適化を行う事で回避

いや、本当に凄い。これだけの技術を使って、マルチプラットフォームで60FPS。最適化は非常に大変だったろうなと、容易に想像できます。*2

まとめのような感想

個々の項目でも書いていますが、非常に技術の詰まった内容でした。終始、開発者の技術力とこだわりに打ちのめされた感じです。ここまでのものを作るには、アーティストとプログラマが意思を統一しないと出来ないと思うので、開発の環境としては、健全に議論出来る場があるんだろうなと想像しました。

ビジュアル的に、ハイパーリアルを目指すなら、30FPSにして「DOF(被写界深度)」と「モーションブラー」を導入する方が、遥かにフォトリアルな見た目を達成できそうですが、そこは開発内でも議論があったんでしょうか。今になって聞いてみたかったなと思っています。

あと、以前も書きましたが、来週東京でも同じ内容のものが開催されるので、ご興味がある方は是非参加していただければと思います。今世代機のキャラ表現を確認するには非常に最適な内容だと思います。

最後になりましたが

ここまで技術を公開してくださった、ユークスさんには非常に感謝しています。これからも開発がんばってください!

*1:そういえば、PS2アーバンレインがアニメーションのブレンドとしては最高峰だと思うんですが、あれはトラック何本持ってるんでしょうね。

*2:とはいえ、PS3で動けば、360では、それなりの対応でいけるのかもですが。