はじめに
UE4のオンラインラーニングをやってUE4への理解を深めます。
Blenderを使っていて感覚的に使ってはいますが、マテリアルがいまいちよく理解できていないのでUE4の講座を通して学習してみます。また、UE4でマテリアルを使って作業をするために必要なことを知る目的もあります。
で結論を言うとマテリアルについてかなり勉強になりますね。やったほうがいいと思います!
PBR とは
- PBR Physically-based rendering
- ライトとシェーディングを統合したシステム
- ライトとマテリアルは現実により近づいた近似された物理的振る舞いをする
- エネルギー保存や逆二乗の法則などの科学的法則に基づきレンダリングする
- そのためPBRは感覚的にも理解しやすい
PBRの基本
- PBR は本質的には Liging, Materials, Exposureの設定値の組み合わせ
- マテリアルとは異なる
- PBR の主要な入力4種
- 他に法線マップなどの入力もあるが、実質的に上記4つで全てのサーフェスを表現可能
Base Color(Albedo) ベースカラー について
- スペキュラ(Specularity)を持たない
- シェーディングを持たない
- 線形RGB(3ベクトル)から成る
- 値は 0 ~ 1 にスケーリングされている
- 純粋な黒や白はない
- 木炭(Charcoal): 0.02
- 草(Grass): 0.21
- 砂(Sand): 0.36
- コンクリート(Concrete): 0.51
- 雪(Snow): 0.81
- 鉄(Iron)(RGB): 0.56, 0.57, 0.58
- 純粋な白(FF)や黒(00)を使うとおかしくなるから使わないほうが良い
- 上記の木炭や雪の色を使いましょう。との事
Metalic(メタリック)
Roughness(ラフネス)
Specular(スペキュラ)
- ベースカラーとは異なりグレースケール画像で色情報は含まれない
- 自然界の全てのサーフェス(表面)はスペキュラ反射性やスペキュラハイライトを持っている
- カーペットのようなものでも
- サーフェスが粗いと反射性は低くなり、スペキュラハイライトも少なくなる
- 🤔スペキュラ反射性が高低なのに対し、スペキュラハイライトは量の様子
- Unrealも同様にスペキュラハイライトとスペキュラ反射を持っている
- スペキュラリティはスペキュラハイライトとスペキュラ反射を制御する事
- 殆どの場合0.5で問題はない
- 反射性などを調整したい場合はこの値ではなくラフネスをいじるのが一般的
- 自然の全てがこの性質を持っているため、0(無し)に設定するのは避けるべき
Unreal と テクスチャ
- Unreal では圧縮/非圧縮を問わず様々なテクスチャタイプをサポートしている
- インポートするときは非圧縮タイプをインポートする事が推奨されている
- 高品質なAlphaを使用したい場合は TGA または TARGA を使用してください
- Alphaが必要なければ BMP で十分
- Unreal ではシンプルAlphaを使用する png もサポートしていて、Foliageなどによく使用されている
サポートしているテクスチャタイプ
テクスチャインポート時のルール
- インポート可能最大サイズは8K
- テクスチャのサイズは2の累乗である事
- 2の累乗: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, …
- 例: 1024×1024, 1024×512など
- メタリック、ラフネス、スペキュラはグレースケール画像であり色情報は含まれていないので他のツールから用意する場合は必ずグレースケールで保存してください
- Unreal では自動的にsRGBや線形色空間は無効化する
- 🤔と言うことは色情報のある画像でもいいような。
- Unreal では自動的にsRGBや線形色空間は無効化する
- 法線マップも色の表示は行わないため sRGB の情報は無効化する
- HDRマップは、その値が線形色空間の領域を超える可能性があるため、線形色空間は使用しない
- sRGB色空間は使用者独自のカラーマップにのみ適用される
テクスチャのインポート方法
いくつかの方法がある
– コンテンツブラウザにテクスチャをドラッグする方法
- インポートボタンを押してファイルを選択する方法
- 右クリックのインポートアセットからファイルを選択する方法
インポート後作業
インポートされたテクスチャは☆マークが付く。これは保存する必要がある事を示している
インポートしたテクスチャを選択して右クリックから保存をする
テクスチャエディタの説明
- テクスチャをダブルクリックする事で開かれるウィンドウ
- 左ペインの表示からチャンネルごとに表示非表示の切り替えができる
- 右側の詳細パネルではテクスチャの情報を修正したり詳細情報が確認できる
- 右上にはサイズ、アルファチャンネル有無、ミップマップ数などが確認できる
- 圧縮設定とsRGBのチェックはインポート時に自動で設定される
- 何かを修正した場合は、保存をする
Compression について
- 正しいテクスチャを使用していれば Compression Setting は自動的に適切に設定されている
- TGA なら DXT1 または BC1 が選ばれている
- その他
- 法線マップ向け圧縮設定
- アルファマスクを含むテクスチャ向け圧縮設定
- グレースケールテクスチャ向け圧縮設定
- ディスプレースメントテクスチャ向け圧縮設定
Texture について
- ベースカラーテクスチャの場合は sRGB がデフォルトで オンになる
- 何かしらの理由でオフになっている場合は必ずオンにしてください
マテリアルエディタ
- リアルタイムシェーダを作成するための強力で柔軟なマテリアルエディタが備わっている
画面構成
マテリアルグラフ
- ノードの左上にある ▼ でプレビューの切り替えができる
- ノードを右クリックしてノードのプレビューを開始 をすると、そのノードとそのノードに接続された下位ノードのみ適用した結果をプレビューで確認できる
リボン
- 保存 マテリアルを保存する。シェーダーがコンパイルされマテリアルが適用され保存される
- 適用 変更を適用する。シェーダーがコンパイルされマテリアルが適用される
- クリーンアップ オーファン式(接続されていないノード)を削除する
- コネクタ 接続されていないピンを非表示にする
- ライブアップデート リアルタイムにプレビューを更新するモード
プレビュー
- 左クリック + ドラッグ 回転
- 右クリック + ドラッグ ズーム/ズームアウト
- マウスホイール ズーム/ズームアウト
- 右下のアイコンから様々な形状でプレビューが可能
- 右端のアイコンは詳細パネルのプレビューメッシュで設定している形でプレビューする際に使用する
- 左上のアイコンからはライティングモードなどの切り替えができる
- 右端のアイコンは詳細パネルのプレビューメッシュで設定している形でプレビューする際に使用する
ノードの追加方法
- 右クリックから追加する
- パレットからドラッグする
- ショートカット
キー(キー+左クリック) | 内容 |
---|---|
1 | 定数 |
2 | 定数2ベクトル |
3 | 定数3ベクトル |
T | Texture Sample |
A | Add |
M | Multiply |
U | UV Coordinates |
D | Divide |
I | If |
L | Lerp |
詳細パネル ブレンドモード について
- Opaque 不透明
- Translucent 半透明
- Additive 加算
- Modulate 乗算
- Alpha Composite (Premultiplied Alpha) 事前に乗算処理したアルファ
- Alpha Holdout
何を選ぶかによって Resultノードの出力ピンの有効/無効 が切り替わる
詳細パネル シェーディングモード について
- Default lit シーンにあるライトに影響を受ける
- Unlit ライトに影響を受けない
- 発光性のあるエミッシブなものに使われる
- Subsurface
- スキンやキャンドル向け
- 🤔少し表面が透明なものという事か
- スキンやキャンドル向け
- Clear Coast
- 車に適している
- Two Sided Foliage(両面フォリッジ)
- 植物に適している
- Eye, Hair, Cloth
- それぞれの部位や物に適している
この講座では Unlit と Subsurface を扱う。それ以外のものは PBRシェーディングの上級コースを見てくださいとの事。
デモンストレーション
2つのデモンストレーションが用意されています。
ものすごく詳しく解説しているので見たほうが為になりますね。
Subsurface スキャタリングのデモンストレーション
Maps フォルダにある Subsurface_Scattering サンプルの解説
- 配置物
- ライトが2つ。PointLight と SpotLight
- sm_vase_001 というスタティックメッシュ
- M_Subsurface を開く
- Shading Model は Subsurface
- ラフネスは 0.1 でかなりツルツルしている
- オパシティは オブジェクト内で錯乱するライトの度合いを制御する
- 0 が意味するのはオブジェクト内のすべてのライトが錯乱する事を意味している
- 1 にするとサブサーフェススキャタリングが実質無効になる
複雑なマテリアルのデモンストレーション2
建築ビジュアライゼーションの世界でもこれまでの内容で事足りることは多いが、エフェクトを追加したりより複雑なものはどうすればよいか?ここではそのような複雑なものを扱う
- アルファチャンネルテクスチャを使用して印字されたロゴのようなエフェクトをマテリアルに作成する
- マテリアルのタイリングを増減できるように設定する
- 🤔ここ知りたい
- 印字されたロゴはメタリックになるように設定する
- ラフネスを変更してメタリックロゴ「パーリンマーブルノイズ」エフェクトを適用する
メモ
- MayaにはVrayベースのマテリアルがある。
- どのように機能しどのような特徴があるかは不明だが念の為メモをしておく
- 全てのベースカラーテクスチャのフォーマットは DXT1 である
- オーファン式 接続されていないノード
各テクスチャの圧縮設定サンプル
ベースカラー
- TGA なら DXT1 または BC1 が選ばれている
グレースケール
- グレースケールの場合は圧縮設定がグレースケールのものが選ばれる
- sRGBのチェックは不要
法線マップ
- 法線マップの場合は圧縮設定がBC5かDXT5
- sRGBのチェックは不要