UE4 パーティクルエフェクトのマテリアル(前半)

Post on 19-Jun-2015

9.411 views 4 download

description

第2回 Unreal Engine4 勉強会で講演した際の前半パート 『パーティクルエフェクトのマテリアル』の資料になります。 (実演と口頭での解説をカバーするために追記しています) 講演で扱ったマテリアルの中で気になるノードがあれば、下記マニュアルを参照すると使用事例とともに解説があるのでぜひ一読してみてください。 https://docs.unrealengine.com/latest/JPN/Engine/Rendering/Materials/ExpressionReference/index.html すみません、誤解を招く部分が後から見つかっています。 TextureObjectに関しては、マテリアルファンクションのインプットノードのTexture2Dタイプに指せるノード‥というのが正確だと思います。 ついでに言うと、マテリアルファンクション内でのTextureSampleノードには「Tex」という入力ポートがあり、そこに指せるのがTexture2Dのみになります(多分)。 ちなみにスライドの元はパワポ書類ですが、SlideShareで文字のフチや背景ロゴといった半透明表示が失われてしまい、とても見難い感じになっていますがご了承ください。

Transcript of UE4 パーティクルエフェクトのマテリアル(前半)

第 2 回 Unreal Engine4 勉強会

UE4 のパーティクルエフェクト2 本立て!

◆ はじめに

◆ はじめに

• とあるグラフィックデザイナーです

• エフェクト作ってます

• UE4 分からないことだらけです

• 情報交換してくれる人モトム!

初級~中級くらい ( ? )

◆ はじめに

(多少はマテリアルを触ったことがある人向けです)

資料はアップ予定ないです

◆ はじめに

(ほとんど実演ですスミマセン)

ハイペースで進行します

◆ はじめに

(画面の写真とか撮ってもらっても大丈夫です)

間違ってたらごめんなさい

◆ はじめに

(あとでコッソリ教えてください)

◆ アジェンダ

第一部 パーティクルエフェクトのマテリアル

第二部 パーティクルへのライティング

◆ アジェンダ

50分

50分

パーティクルエフェクトのマテリアル

◆ 第一部

◆ マテリアルの基本構成

◆ マテリアルの基本構成

ノード

ベースマテリアルノード

つなぐ!

基本部分は解説サイトがあります

◆ マテリアルの基本構成

(まずはこちらを読んでみてください)

『ゲームエフェクトデザイナーのブログ (UE4) 』

http://effect.hatenablog.com/

http://monsho.blog63.fc2.com/

『もんしょの巣穴 blog 』

https://trello.com/b/QClfo5l3/ue4

『背景アーティスト UE4 ビギナー勉強会』

http://envgameartist.blogspot.jp/

『背景アーティストのぶろぐ』

今流行りの物理ベースの

マテリアルってどう設定するの?

◆ マテリアルの基本構成

A . まずは公式ページ読むべし

◆ マテリアルの基本構成

  UE4 公式マニュアル『物理ベースのマテリアル』

https://docs.unrealengine.com/latest/JPN/Engine/Rendering/Materials/PhysicallyBased/index.html

  UE4 公式マニュアル『マテリアル入力』

https://docs.unrealengine.com/latest/JPN/Engine/Rendering/Materials/MaterialInputs/index.html

実際にどう設定していけば良いかは

こちらの解説が分かりやすい!

◆ マテリアルの基本構成

◆ マテリアルの基本構成

SQUARE-ENIX Open Conference『リアルタイムワークフロー実演解説』http://www.ustream.tv/recorded/27215048

拡散反射・鏡面反射・金属と非金属の違い・

フレネル・ラフネス

‥このあたりが分かってくると、次のような

記事も徐々に理解できる部分が増えてきます

◆ マテリアルの基本構成

◆ マテリアルの基本構成

『カプコン独自のゲームエンジン「 Panta Rhei 」と

「 deep  

  down 」の技術的詳細に迫る CEDEC セッションレポート』

  http://www.4gamer.net/games/032/G003263/20140911067/

http://d.hatena.ne.jp/hanecci/

『 hanecci’s Blog』

本題

エフェクトでよく扱うノードの紹介

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Constant- 定数 -

◆ マテリアルの基本構成

• Constant

• Constant 2 Vector

• Constant 3 Vector

• Constant 4 Vector

(各ショートカットキーを押しながら左クリックでノードを追加できます)

◆ マテリアルの基本構成

Constant 3 Vector

Constant

Constant

(数字を各入力ポートに繋いでいくだけでも立派なマテリアル!)

◆ マテリアルの基本構成

Add , Multiply- 足し算 と 掛け算 -

◆ マテリアルの基本構成

• Add

• Multiply

テクスチャに色を付け足すなどは

一般的に Multiply( 乗算 ) で行います

◆ マテリアルの基本構成

「なんで?」っていう方は下記の記事を読んでみてください

『 [UDK] 色の基本的な考え方』http://maruta.be/effect/106

◆ マテリアルの基本構成

Multiply

( A と B に入力された情報を掛け合わせます)

◆ マテリアルの基本構成

Multiply

◆ マテリアルの基本構成

Multiply

◆ マテリアルの基本構成

Divide , Power- 割り算 と 掛け算 -

◆ マテリアルの基本構成

• Divide

• Power

Power( 累乗 ) はコントラストの調整によく利用しま

雲模様テクスチャに Power をかけて Opacity に繋ぐ

ことで徐々に千切れるように消える表現も可能!

◆ マテリアルの基本構成

つまりこんな感じ

◆ マテリアルの基本構成

Power( 累乗 ) は演算系のノードの中では

処理が重めと聞くので控えたくなりますが

実際にどれくらい重いのかよく分かりません‥

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Texture Sample- テクスチャの参照 -

◆ マテリアルの基本構成

• Texture Sample … T

◆ マテリアルの基本構成

◆ マテリアルの基本構成

似たような3つの違いは?

基本的に Texture Sample で OK だけど

マテリアルファンクション (関数 ) の入力ポートに

繋ぐことができるのは Texture Object

◆ マテリアルの基本構成

Particle SubUV はアニメパターンを敷き詰めた

テクスチャをパーティクルでパターン再生する

時に使うのだけど、それはまた後に解説します

◆ マテリアルの基本構成

◆ マテリアルの基本構成

One Minus- 値の反転 -

◆ マテリアルの基本構成

• One Minus … O

テクスチャや RGB カラーを反転するのに便利

0 ~ 1 の範囲でクランプされている値に対して使用

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Particle Color- Cascade から色を取得 -

エフェクトツール「 Cascade 」で色を制御したい時の

最もベーシックな構成

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Vertex Color- 頂点カラーを取得 -

さらに頂点カラーの色も加えたい時の

ベーシックな構成

◆ マテリアルの基本構成

ここでちょっとマテリアルファンクションについて

プロジェクトで何 100 と増えていくマテリアルに

毎回同じノードを組んでいくのはとても非効率的!

◆ マテリアルファンクションについて

そこで新規マテリアルファンクションを作成して

入力ポートと出力ポートを用意

◆ マテリアルファンクションについて

そしてマテリアル内に放り込んで使用します

さっきのマテリアル構成がこんなにスッキリ!

後から中身を拡張したりもできる

◆ マテリアルファンクションについて

話を元に戻して‥

◆ マテリアルの基本構成

Texture Coordinate , Panner- UVのタイリングとスクロール -

◆ マテリアルの基本構成

• Tex Coord

• Panner

◆ マテリアルの基本構成

Texcord で U と V のタイリング数を指定

Panner で U と V のスクロール速度を指定

◆ マテリアルの基本構成

Dynamic Parameter- Cascade から値を取得する -

◆ マテリアルの基本構成

超シンプルな例

Dynamic Parameter をメタリックに繋いだので

Cascade からメタリックの値を自由に制御可能にな

エフェクトでは UV スクロールを

カーブエディタでコントロールしたい時や

UV の初期値をランダムにしたい時などに利用

◆ マテリアルの基本構成

その他、色んな場面で使いたいのだけど

残念ながら現状は 1 マテリアルにつき

Dynamic Parameter の出力ポートは 4つまで

という制限がある ( ノードを複数置いてもダメ )

◆ マテリアルの基本構成

UV スクロールのコントロールかつ

UV の初期値をランダムにする構成は

説明が大変なのでここでは割愛

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Particle Sub UV- テクスチャのパターンアニメーション -

◆ マテリアルの基本構成

こういうパターンアニメをパーティクルで行う場合に

使うノードですが‥

実は Texture Sample でも SubUV アニメは可能

では Particle SubUV を使うメリットは‥?

◆ マテリアルの基本構成

Cascade の Required モジュールで SubUV アニメーションの

補間方法の設定「 Linear Blend 」が利用できる

つまりパターン切り替えをクロスフェードできる

◆ マテリアルの基本構成

Linear Blend はパターン切り替え速度を遅くしても

滑らかにアニメーションして見える

しかもゲームスピードがスロー再生中でも問題ない

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Depth Fade- いわゆるソフトパーティクル -

一言で言えば背景とのめり込みを緩和できる

◆ マテリアルの基本構成

使い方はカンタン

Opacity に繋ぐだけ

◆ マテリアルの基本構成

正確には背後の不透明オブジェクトとの距離が

近いほどピクセルが透明になる処理なので‥

◆ マテリアルの基本構成

背景に突き刺さったところにフェードが入る訳では

ないので注意 (図のように壁際で透明になってしま

う )

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Liner Interpolate- 直線補間 -

Alpha ポートに入力された 0 ~ 1 の値に応じて

0 に近いほど A ポート、 1 に近いほど B ポートの

値を出力するノードになります

◆ マテリアルの基本構成

◆ マテリアルの基本構成

色んな場面で利用できます

この後にも登場します

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Fresnel- フレネル反射 -

フレネル反射とは?

川などの水面を真上から覗くと水底が見えるけど

横から見ると景色が映り込んで水底が見えないように

視点の入射角によって光の反射率が変わる光学現象

◆ マテリアルの基本構成

このような感じで Lerp ノードで使用することが多い

◆ マテリアルの基本構成

Fresnel ノードは視点方向とモデルの法線が

正対すると 0 の値を‥

90度直角になると 1 の値を出力します

◆ マテリアルの基本構成

すると (主に )輪郭部を光らせたり

(主に )輪郭部を透明にするといった表現ができます

◆ マテリアルの基本構成

◆ マテリアルの基本構成

Bump Offset- 擬似的に視差をつける ( パララックスマップ ) -

実際のモデル表面よりもマテリアルが手前‥

または奥にあるかのように見せる

◆ マテリアルの基本構成

◆ マテリアルの基本構成

構成例

◆ マテリアルの基本構成

下図のような構成にすることで

二重スクロールのような表現も可能

◆ マテリアルの基本構成

Screen Position- 平行投影 -

カメラから平行投影したような表現が可能

◆ マテリアルの基本構成

◆ マテリアルの基本構成

構成例

◆ マテリアルの基本構成

モデルの角度や凹凸に関係なく

テクスチャが投影されています

ちょっとだけ応用編

◆ マテリアル応用編

Near Camera Fading- カメラめり込み対策のフェードアウト -

Pixel Depth ノードを使って

カメラに近付くほど透明にする構成です

UE4 の wiki にチュートリアルがあります

◆ マテリアルの基本構成

https://wiki.unrealengine.com/Visual_Effects:_Lesson_03_A:_Near_Camera_Fadin

g

◆ マテリアルの基本構成

構成例

◆ マテリアル応用編

Vertex Normal / WS- ワールドの頂点法線を取得してアレコレ -

法線が上向きの面に雪の質感を追加したり

法線が下向きの面に水面の反射を追加したり

‥ といった表現が可能です

『背景アーティストのぶろぐ』で詳しい解説があります

◆ マテリアルの基本構成

http://envgameartist.blogspot.jp/2014/10/pixelnormalwsvertexnormalws.html

◆ マテリアルの基本構成

構成例

上面 ⇒

下面 ⇒

◆ マテリアルの基本構成

構成例

◆ マテリアルインスタンス

◆ マテリアルインスタンス

1つのマテリアル構成を元に

バージョン違いが沢山必要な時‥

◆ マテリアルインスタンス

この構成で基本色のバリエーションが欲しい

◆ マテリアルインスタンス

この構成で基本色のバリエーションが欲しい

◆ マテリアルインスタンス

そこでとても便利なのが

マテリアルインスタンス!

◆ マテリアルインスタンス

元のマテリアルの一部の設定を

自由に変更できるようにすることを

パラメータ化すると言います

◆ マテリアルインスタンス

• 色違いのバリエーション

• テクスチャを差し替えたバリエーション

• 片面、両面

• アルファ合成、加算合成

• ソフトパーティクルあり、なし

◆ マテリアルの基本構成

• Scaler Parameter

• Vector Parameter

◆ マテリアルインスタンス

マテリアルインスタンスを使う

メリットは?

◆ マテリアルインスタンス

• シェーダーの再コンパイルを最低限にできる

• ベースとなるマテリアルの一括修正が効く

• 編集がとてもシンプル

• ゲーム実行中に動的にパラメータを変更できる

◆ マテリアルインスタンス

チームで詳しい人がマテリアルを作成して

他の人はインスタンスだけを扱う

‥ といった運用も可能

スタッフ全員が自由にマテリアルを組むと

品質や描画コストの統一や管理面で収集が

つかなくなる危惧もあるので、その対策にもなる

◆ マテリアルパラメータコレクション

◆ マテリアルパラメータコレクション

パラメータを集めたもの

かなり計画的に使う必要がありそう

◆ マテリアルインスタンス

エフェクトではどんな時に使えそうか?

例えば煙の色をレベルの明るさや色に応じて

一括でコントロールしたい時とか使えそう?

第一部はこれで終了