「CGWORLD CREATIVE MEETING」に参加してきました。
いくつか講演があった中から株式会社サイバーコネクトツーのテクニカルアーティスト芦塚慧祐さんによる「次世代機におけるリアルタイムアニメ表現への取り組み」についてメモっておきたいと思います。
1 導入
ナルティメットストームシリーズは最新作が「4」で、初代から6作目になるそうです。
日本では2016年2月4日発売ということなのでまだ少し先ですね。
そしてシリーズ初のXboxOne・PS4向けのタイトルになるということで、次世代機への対応をどう行ったかといったあたりが語られました。
(内容は九州CEDECと同じものということで、スライドも後日アップされるそうです)
シリーズ通してのコンセプト
・原作アニメの再現
・セルシェード
当初は5プラットフォーム対応を目指していたものの、 2014年10月から3プラットフォーム(XboxOne/PS4/PC)に変更したとのこと。
マルチジェネレーションは茨の道な気がしますが、前世代機を外したのは海外でも売れるタイトルゆえに踏み切れたという感じなのでしょうか。
過去リソースを有効活用(ステージ40以上・キャラクター100体以上)
いかに過去タイトルのワークフローを変えずに対応するかに注力されたとのことです。
2 次世代への移行
この章は実際にコードの例を挙げながらの解説でした。
スライドをメモったものをざーっと書いておきます。
シェーダーの移植
グラフィックスAPIがDirectX9から11に シェーダーモデルが変化
Dx9 ‥ 1.0 2.0 3.0
Dx10 ‥ 4.0 4.1
Dx11 ‥ 5.0
sm3.0から5.0への変化必ず対応する必要があるもの
1. constant buffer
2. texture. samplerの定義
3. shader effectパーティクルのパフォーマンス問題
通常ボス戦で500個、多いシーンで2000~3000個
本作は「超破壊」がコンセプトなのでパーティクル数が圧倒的に多い
まずは今までのシステムでいけるか検証
(例に挙がっていた画面では1080個のパーティクルが出ていました)
CPU GPU 処理 パーティクル制御・描画コマンドの構成 パーティクルの描画 負荷 200~300% 100%以内 PS4は3よりコア数が多いがクロック数が低いのでPS3より遅くなる場合がある
GPGPUを検討
スキニング・モーフィングをGPUで
20~30体のキャラクターのボーンのマトリクスに約1ms
結局GPU化は諦めたエフェクトではモデルやアニメ付きモデルも使っていた
マルチスレッド化することに
4スレッド 128個以上のコマンドが来たら分割
一番処理負荷の低いスレッドに割り振る
発行されたコマンドが使われる直前までプロックしないオブジェクトの依存性
グローバル変数、シングルトン
再帰関数
シングルトン専用のコードマルチスレッドの効果
4倍の処理負荷削減ができた
最初からマルチスレッドを考慮して設計すると良い
可能であればGPGPU化するのがベスト
3 表現の紹介
背景について
・デカール表現を実装
ナルティメットストーム4はフォワードレンダリング
Z深度情報を利用してスクリーンスペースでデカールを背景に合成
テスクチャはアーティストが1枚用意するだけ
ノーマルマップ無し、アルファブレンドのみと制限を入れて低コスト化
バトル20枚・ボスバトル40枚まで表示可能とした・シャドウ
ライトマップ無し
前作はハードウェアPCF>今作はVSM
シャドウマップは2枚から4枚に
サイズ内訳は前作が1024x1024の2枚>近作は2048x2048が2枚 + 1024x1024が2枚
方式は前作からLiSPSMを継続して採用
これにより特にセルフシャドウのギザギザが綺麗になった
キャラクターについて
・ダメージ表現
衣服が破けたり、衣服や顔/体に汚れや傷の追加
100体以上のキャラクター全てに行う必要がありコスト大>新規キャラは専用のダメージモデルを用意
キズ等は浮かしたポリゴンで>既存モデルは背景とは別にキャラクター用にデカールを使用
ボーンに紐付けて表示
デカールの貼り付け場所が分かるようデバッグ表示可能ナルティメットストーム4はキャラを最大6体同時に表示する
各キャラ14枚までデカール表示可能にした
デカール設定ツールを用意
骨の指定やオフセットなど
デバッグ表示時のカラーも指定可能な様子この方法によって8時間 x 100体ほどの工数が削減できた
課題もある
マントや関節の一部には使用できない
ツールでの設定が直感的でなくやりにくい
デカール設定ツールはエフェクトの骨へのアタッチ指定に近しいものがありますね。
欲を言えばDCCツールのようにキャラクター上でマニピュレータを動かしつつ見え方を確認しながら設定できると良いですよね。
・アウトライン
グレア情報を付加可能にした
アウトラインカラーを個別変更可能にした
押し出しアウトラインは頂点カラーで制御(GGXrd -SIGN- でやってましたね)
輪郭のみ押し出す機能を追加
押し出し幅の調整機能は工数が出せずオミット・ブラー
モーションブラー + アニメブラーを実装した
(キャラクターの移動と逆方向の輪郭近辺がギザギザに歪んだ表現)
実装方法の解説
キャラクター手前に板ポリを配置してノーマルテクスチャを貼る
速度マップからブラー方向と強度を取得
1フレーム前と現在のフレームの移動量を比較して歪ませる
ポスト処理について
・色相調整
これまでのシリーズでは実機上で設定していたが本作はPhotoshopで調整するようにした
(UE4のLUTでカラーグレーディングする方法と同じような感じ)
Photoshopのバリエーション機能を使用(CCで無くなった)
「*.AVA」ファイルで出力して実機上で反映
バリエーションは久しく使ってなかったので懐かしく思いました。
確かにお手軽に調整できる機能ですね。
パーティクル処理について
表示量により情報量が増えた
非常に効果的
キャラに使うようなシェーダーが使えるようにした
複数のポリゴンで構成されたモデルもパーティクルに使用可能にした
(沢山パーティクルがあるように見せるため板ポリゴンが散らばった状態の1つのモデル)
Q&A
・UE4のセルシェード表現については?
⇒ 社内で試み中
UE4はディファードなのでナルトだと厳しい
・TAとして心掛けていることは?
⇒ なるべくプロシージャルにしたい
しかしアーティストは1コマずつ手作業で作りたかったりするので難しい
最後に「技術者交流会」開催のお知らせがありました。
CC2さんが12月初旬に技術者交流会を開催されるそうで、興味ある方はこちらに連絡して下さいとのこと。kouhou@cc2.co.jp #cgwmtg
— moko (@moko_03_25) 2015, 10月 24
また「FCC(福岡クリエイティブキャンプ)」について。
福岡に県外から移住してFCC(福岡クリエイティブキャンプ)登録企業に就職すると40万円が支援されるそうな。ほほー
— moko (@moko_03_25) 2015, 10月 24
詳しくはこちらをどうぞ。非常に素敵だな~と思います!
以上、レポートでした!