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

木曜日に参加してきた、ユークスさんのセミナーを、やっと半分まとめれました。

今回のセミナーで、特に凄かったのはゲームに実装した技術の公開の仕方。「こんなに公開して良いんやろか?」と思うほど説明していただけました。下記、レポートを文字ベースでまとめていきますが、セミナー中は動画での説明も多かったので伝わりづらい部分に関しては、ご了承ください。

概要

このセミナーでは、ユークスさん製作のUFC2009を題材にキャラクター周りの技術を紹介していただきました。
セミナーは大きく、2つに分けられています。

  1. UFC2009が出来るまでの製作体制やミドルウェアの紹介
  2. キャラモデルのグラフィック解説

今回の記事では、特に技術がてんこ盛りだった、前半のアニメーション関連の内容と、後半のキャラモデル関連の内容を中心にまとめます。

キャラモデルのビジュアルテクニック

人体モデルのコンセプト
  • 類似性
    • 実在の選手に似ているか
  • 人体表現
    • シェーダー・質感
  • 変化の表現
    • ダメージ表現(腫れ・汗)

この作品で出てくるキャラクターは、実在のUFCの選手を元にした、フォトリアル系のルックです。
そのモデルは上記の3つをコンセプトとして作成されています。

  • 類似性

実在の選手をモデリングする事になるので、似ているか似ていないかが非常に重要。そのために、取った手段は参考写真撮影(頭部だけで、4000pixel x 3000pixel)と、3Dスキャンデータの撮影で、それらを参考に最終的にゲームモデル(3万ポリゴン程度)としてリメイクした。

類似性は非常に重要な要素で、実在の選手をモチーフにしているからには似せないわけにはいかない。ただ、3Dスキャンデータをそのままリダクションしても、キャラクターが似ないので、1頂点単位の修正を行ったようです。

  • 人体表現
    • ディフューズマップ
    • スペキュラマップ
    • ノーマルマップ
    • アンビエントオクルージョン
    • タイリングマップ
    • サブサーフェイススキャッタリング(シェーダー)

上記は、ほぼ現世代機の標準技術ですが、その中でもタイリングマップはクオリティを保つ為に、一役買っていたようです。*1肌の毛穴を表現したリピートテクスチャ(ノーマル・スペキュラ)*2を用意して、それを肌が露出している部分にタイリングするという技法。これにより、カメラが寄った時でも、肌の情報密度が高く、高解像度のテクスチャを貼ったような効果が得られる。

  • 変化の表現

試合前と試合後の選手の変化。負傷や汗による変化をアニメーションで見せる

表現 手法
しわ(ウィンクルマップ) ノーマルマップ(しわ有・しわ無)のブレンド
汗(スウェットマップ) テクスチャアニメーション(250パターンの、汗の流れる表現)
切り傷(カットマップ) ディフューズ・スペキュラ・ノーマルのブレンド
流血 ---
内出血 頂点カラー
骨折 ボーンを曲げ、骨折を表現
腫れ モーフターゲット(腫れ無・腫れ有)のブレンド

しわはボーンの移動を見て、各所のノーマルマップをブレンドする手法です。EAさんのフェイシャルリグDVDで、紹介されていたり、MGS4でもスネークに仕込まれてた技術です。
汗に関しては、テクスチャのアニメーションで再現しているようです。サラッと紹介していましたが、どうやって貼ってるのか?滑り落ちた後はスペキュラが強くなってるように見えるけど、どうやってるの?とかは、説明していただけませんでした。
カットマップについては殴られた時の切り傷を表現したもの。傷が描かれたテクスチャ(ディフューズ・スペキュラ・ノーマル)を、殴られた箇所毎にブレンドしていく手法。
流血は見逃しましたが、技法はカットマップと同じだと思います。
内出血は頂点カラーのアニメーションで表現し、殴られた箇所の色を変化させている。
骨折はボーンを曲げて、実際に骨が折れた表現をします。この時、IKはどうなってるんでしょうか?IKの子供に、Null置いてそれを制御しているのか、それともIKをFKで制御しているのか。質問したら良かったですね。
あと、腫れについては、二つのモーフターゲットをブレンドする手法。もちろん、オブジェクトが分かれている場合は、分かれているだけモーフターゲットを用意します。顔本体とまつ毛とか。

とにかくこのダメージ表現は「まじか!」と驚くような表現が多かったです。映像無いのが残念ですが、「汗」と「腫れ」は一見の価値有り。とにかく目指している地点が高い事を感じさせられた内容でした。


後半に続きます⇒

*1:バイオハザード5でも、ウェスカーのボディスーツでも、使用していたアレです。

*2:サイズは忘れました。256x256くらいでしょうか…。