ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

「CGWORLD CREATIVE MEETING」レポート

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

パーティクルのパフォーマンス問題
本作は「超破壊」がコンセプトなのでパーティクル数が圧倒的に多い
まずは今までのシステムでいけるか検証
(例に挙がっていた画面では1080個のパーティクルが出ていました)

 通常ボス戦で500個、多いシーンで2000~3000個
 CPUGPU
  処理   パーティクル制御・描画コマンドの構成 パーティクルの描画
  負荷   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」ファイルで出力して実機上で反映

トーンカーブ
 コントラストの調整
 色相調整機能と同様に当初は実機上で設定する予定だったが Photoshopで調整

バリエーションは久しく使ってなかったので懐かしく思いました。
確かにお手軽に調整できる機能ですね。

・フリンジ(色収差)と魚眼
 奥義の演出で活用した

 

パーティクル処理について

表示量により情報量が増えた
非常に効果的
キャラに使うようなシェーダーが使えるようにした
複数のポリゴンで構成されたモデルもパーティクルに使用可能にした
(沢山パーティクルがあるように見せるため板ポリゴンが散らばった状態の1つのモデル)

 

Q&A


・UE4のセルシェード表現については?
  ⇒ 社内で試み中
    UE4はディファードなのでナルトだと厳しい

・TAとして心掛けていることは?
  ⇒ なるべくプロシージャルにしたい
    しかしアーティストは1コマずつ手作業で作りたかったりするので難しい


最後に「技術者交流会」開催のお知らせがありました。

また「FCC(福岡クリエイティブキャンプ)」について。

詳しくはこちらをどうぞ。非常に素敵だな~と思います!

以上、レポートでした!