「ドラゴンクエストXIへの道 〜グラフィックスの作り方〜」適当メモ

 適当メモなので正確性*1は保証しません^^;

別の詳しい方のまとめもあるので、そちらも参考に。

「ドラゴンクエストXIへの道~グラフィックスの作り方~」講演メモ - ゲームエフェクトデザイナーのブログ (新)
ようてん on Twitter: "#ue4fest 初心者向けで丁寧でした… "

unreal fest [A-3]13:20〜14:20
========

ドラゴくクエストXIへの道 -グラフィックのの作り方-
----------------------------------------------

* TA 高木和弘

水の表現、キャラの揺れもの担当
XIはドラゴくクエストXのオーブニングのルックを目指す

* 30FPS

PS4ならではのUE4でなにができる?
PBR GI DynamicShadow SSAR Cloth

キャラクター編
=============

* 鳥山先生の絵をどう表現する?
  輪郭線 背面法 back-facing
  
  * cons モデル2体分のメモリ

  * proc デザイナで細かく調整。頂点カラーを使用。

    まぶたにへんな線がでたので、頂点カラーRで調整

* 背景の輪郭線はポストプロセス

  輪郭線

    色相と再度
    明度
 ScreenPosition -> SceneColor

 肌のマテリアル
  Preintegrated Skin : SSS

  LUTを使用。

* モンスターマテリアル


  スライム :どこから見ても左上にスペキュラー
  構造色    : 大王イカなど

アニメーション編
---------------

 揺れもの 物理シミュレーション

 リアルタイム制御:風になびく、髪服スカート

 果 :背景の草木と同期して揺れる

* 揺れもので考慮する

  ランタイムで首のLootAt ・足IKの補正 :物理シミュレーションで対応

  膨大なモーションカットシーン、などあるので物理シミュレーションで

  * ApexCloth / PhysX / AnimDynamics(UE4.12)

    Apex負荷高い、Phyx安定しなかった

    AnimDynamicsによる骨ベースのシミュレーションに決定 UE4.13での話

抜け対策
-------

  スカートから抜けて、太ももが見える

  抜けの対策 : BlendSpaceで、親の骨をランタイムに補正

  親の尾根を都合の良い方向によけて、子供はAnimDynamicsでよける

 それでもダメな場合は、キーフレームアニメーションとブレンド

風のアニメーション
----------------

 * 4段階を用意。無風、弱、中、卿

   風による、抜けの問題

   風を受ける、正面の影響度を下げる

  * 下げない場合(風を受けてる左正面側が抜けるかも)
      右側 (*人*) 左側 
           /   /  <==風==
      100%        100%  

  * 下げる場合(風を受けてる左正面側は10%しか風の影響を受けない)
      右側 (^人^) 左側  
           /   |  <==風==
      100%        10%  


キャラクターがワープする場合
--------------------------

 揺れものが暴れてしまう。

 空回しで対応。AnimDinamicsを改造?

 1フレームで、20フレーム計算。安定状態から開始する。 : 負荷によって調整できる


背景編
======
 
Enlighten/Folige
-----------------


* ドラクエらしい
 沢山はえた草。風邪で揺れる草木。時間変化、環境変化、GI,、GI,水の帆湧現

* 背景ライティング

 太陽光はDirectionalLight。時間変化で角度調整
  PointLight/SpotLit
  
  影をCascadedShadow

  GI Enlighten (skylight)

  SSAO

* ドラクエの時間変化
 夜は、暗くするのでなく、青で表現

 
時間変化について
---------------

24時間データを用意

天球          : hoge
ポストプロセス : hoge
フォグ        : hoge

* 天候変化
 天候。晴れ、曇り、飴、雪、吹雪、嵐それぞれに、24時間分

* GI
  Enlighten :リアルタイムGI(
      間接光で、影の部分が明るくなってる?
  )

  * 動的GI

  Lightmassの静的GIにたいして、Enlighten時間変化につよい
  Precomputののサイズが小さい
  ライトビルド時間はかなり短縮できる

  ダイナミックマテリアルインスタンスへの組みk身も簡単


Foliage PivotPainterによる草木の表現
-----------------------------------

 悪さん生やたため、透明部分の重なりを減らす

 PivotPainter
  草の回転軸(Pivot)と回転の情報を格納するMaxScript
    Max(Epic)版しかないので自前でMaya版をPivotPainterを作成

 草が暗くならないので、法線を上向き
    片面ポリゴンで、マテリアルで両面に
  TwoSidedSignで両面とも法線を上向きに

    * 
      ↑/
      /↓(裏のnormal)
     /

    * 
      ↑↑/
      /
     /



水の表現
-------

  FlowMap

    * 水の3大要素(俺調べ)
      反射、屈折、流体表現

    流体表現

      Flowmapを使用:FlowMap generatorを使用。
        Flowmapとは、流速方向をRGに記録したテクスチャ

       flowmap generator。分かりにくいツールだけど面白い

    UE4でのFLowmapマテリアルの仕組み
     TimeとFlowmapの乗算TexCoord、Fracで折り返し、半周期ずらしたものをブレンド


半透明マテリアルの特徴
 半透明では、水面のきらきら(スペキュラー)が出ない

 ReflectinVectorを使い、HDR画像を環境マップに輝度の高いハイライトを書き足す


屈折の表現
---------

 * SceneTextureとノーマルマップを組み合わせて屈折を表現
 
 * 平面反射 : (ウユニ塩湖)っぽい表現のため

  SSRよりも正確な反射が反射がPlanar Refrectionで出来る(負荷が高いけど)

  反射するしないを制御できるので、魔法のパーティクルは反射しないなど調整できる

*1:誤字脱字は気にするな^^;