Top Banner
おぎまふ 第3回UNREAL ENGINE 4 札幌 Meetup!!! UE4で実装するセル表現 UE4非公式キャラ Grayちゃん
45

【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

Apr 16, 2017

Download

Art & Photos

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

おぎまふ

第3回UNREAL ENGINE 4 札幌 Meetup!!!

UE4で実装するセル表現

UE4非公式キャラGrayちゃん

Page 2: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

自己紹介

HN:おぎまふ Twitter:@ogimafu 元ゲームプログラマー。 現在はUE4を中心に個人でゲーム制作 UE4歴は2年位?

Page 3: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

おしながき

セルシェーダを使ったサンプル動画 セルシェーダの概要 UE4マテリアルのおさらい セルシェーダの実装

Page 4: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

セルシェーダを使ったサンプル動画

Page 5: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現
Page 6: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

セルシェーダ概要

Page 7: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

セルシェーダとは

ノンフォトリアルと呼ばれる描画方法の一つ アニメ等で使われる、セル画のようなシェーダ セルルック、トゥーンシェーダと呼ばれることも

(人によって用語の範囲が様々…) ゲームでは、GGXrd などが採用

Page 8: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

セルシェーダの要素

ハッキリとした境界の陰影 輪郭線の描画 高めの彩度

Page 9: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

UE4マテリアルのおさらい

Page 10: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

UE4のマテリアル

大きく分けて二種類 各メッシュの質感、透明 / 不透明などを定義できる「通常マテリアル」

画面全体を処理する「ポストプロセスマテリアル」

Page 11: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

Gバッファで取れる情報

Page 12: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

エンジン拡張

UE4ではエンジンのソースコードが公開されており、C++での独自拡張が可能です

今回一部の機能では、マテリアルから ポストプロセスマテリアルに対してそのまま値を渡せるGバッファを作成し、使用しています。

Page 13: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

エンジン拡張

使用例1R:陰範囲の検出結果G:髪のハイライト用マスクB:未使用A:頂点カラー

使用例2RGB:陰色指定A:頂点カラー

Page 14: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

セルシェーダの実装

Page 15: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

〜色について〜

Page 16: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

1. キャラクターの色をテクスチャで指定する2. 陰範囲の検出

方法1:マテリアルによる検出 方法2:ポストプロセスによる検出

3. 陰範囲でテクスチャをマスクし合成

Page 17: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

色指定用テクスチャ

色は通常色、陰色共にテクスチャで指定し、 マテリアルで陰領域を判別して使用する

Page 18: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

陰範囲の検出①

方法1:マテリアルによる独自実装 法線と光源情報を使って、自前で陰の範囲を

計算する。(セルフシャドウは固定) 実際の法線とは別に自前の法線ブレンドを行うことで陰のデフォルメを行っている

BlueprintComponent で法線のブレンドの座標、光源の位置を随時更新

Page 19: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

法線ブレンド動画

Page 20: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

比較

Page 21: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

陰範囲の検出②

方法2:ポストプロセスによる陰の検出 セルフシャドウが付けられる alweiさんのブログにてやり方が解説されています!http://unrealengine.hatenablog.com/entry/2016/05/29/204545

そのままだと影色の指定が出来ないので、拡張したバッファに影色を渡せるように改造

Page 22: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

陰範囲の検出②●今回のようなデフォルメの効いたキャラにはやや陰影がクドくなりがち。

● 頭が大きい関係上、体がセルフシャドウにより影色で埋まってしまう

Page 23: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

陰範囲の検出②なので、

巨大ロボとかに使うと良いと思います!

Page 24: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

両シェーダの合成

カスタムステンシルを使用して効果範囲の切り分けをしています。

Page 25: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

検出比較動画

Page 26: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

輪郭線

Page 27: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

輪郭線の検出

今回はポストプロセスで行っています 深度による検出 法線による検出 頂点カラーによる検出(エンジン拡張)

Page 28: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

深度による検出

深度バッファを元にSobelフィルタで検出

Page 29: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

法線による検出

法線バッファを元に、内積で比較して検出

Page 30: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

頂点カラーによる検出

拡張バッファのαチャンネルを使い、DCCツールでペイントした頂点カラーを元にSobelフィルタで検出

Page 31: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

検出エッジの合成

今回は 「深度エッジ」 + 「頂点カラーエッジ」を使用しています。

+ =

Page 32: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

その他、キャラ調整

Page 33: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

まつげ、眉毛の優先表示

表情がわかりやすくなる

漫画やアニメではよくある表現を再現。

Page 34: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

まつげ、眉毛の優先表示

透明マテリアルのオプションで深度テストを無効化すると隠面の深度も取れる!

Page 35: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

髪の光沢

いわゆる天使の輪 見た目の印象を優先して、今回は位置固定。

Page 36: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

髪の光沢

光沢部分はモデリングをし、拡張バッファの陰マスク(R)と髪マスク(G)で切り抜いてます

Page 37: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

髪の光沢(動画)

Page 38: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

画面調整

Page 39: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

色味調整(LUT)

デフォルトのLUTをスクリーンショットと一緒に画像編集ソフトに持って行き、1. 色味調整を行う。2. UE4のポストプロセスボリュームに作成した3. LUTを読みこませることで一括調整できる。

Page 40: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

LUT調整動画

Page 41: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

フレア

Page 42: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

ディフュージョン

Page 43: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

おまけ背景のAO、キャラの陰領域に対してハッチングを追加してみた

Page 44: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

ハッチング動画

Page 45: 【第3回UE4札幌Meetup!!!】 UE4で実装するセル表現

ご清聴ありがとうございました!