Unity Japan Office  メイキング4 ~ テクスチャ & マテリアル ~

画作り

Unity Japan Oficce メイキング第4弾 ~テクスチャ&マテリアル~ 編です。

 

Unity Asset Store でプロジェクトデータを入手できます。

 

ビルドデータ及び各種データのダウンロードは以下のサイトから。

日本におけるデザインビジュアライゼーションの例として、Unityの最新技術を駆使したフォトリアリスティックなデモを制作いたしました。

 

 

 HDRP Lit シェーダー

HDRP には Lit シェーダーという万能シェーダーがあります。

ビルトインパインプラインで言うところの Standard シェーダーです。

Unity Japan Office メイキング

 

不透明、透明、屈折、異方性反射、ディスプレイス、SSS など様々なオプションがあり、

これ1つで大体は事足ります。

 

 

 HDRP Lit シェーダーの基本テクスチャ仕様

Lit シェーダーを使うにあたり、基本的には Albedo / Mask / Normal の3テクスチャを用意します。

近寄ったときのディテールが必要な場合は Detail Map を用意します。

ビルトインパインプラインの Standard シェーダーでも同じようなことができます。

 

 Albedo Map

写真のリニアデータから、もしくは Substance Painter などで作成。

写真からアルベドを取得する方法はライティング編を参照。

 

 

 Mask Map

R:メタリック

基本的には 0 or 1 ですが、レイヤー構造になっている材質を1枚で表現する場合は

中間値があっても良いのでは、と思います。

 

G:アンビエントオクルージョン

ライトマップでは表現しきれない細かい陰影や、反射の遮蔽を表現します。

 

B:ディテールマスク

別テクスチャで輝度や法線をブレンドしたい場合に影響範囲を指定します。

 

A:スムースネス

値を 0 ~ 1 に正規化しておけば、Lit シェーダーで Min Max リマップできるので楽です。

 

Mask Map は色ではなく数値データとしての利用なので、

テクスチャインポート設定の sRGB オプションを外します。

Unity Japan Office メイキング

 

 

 Normal Map

突起事項はありません。

 

 

 Detail Map

R:追加アルベド

オーバーレイ・ブレンディングなので、変化なしの場所を輝度128に、

暗くしたい場所は128未満、明るくしたい場所は129以上にする。

 

G:追加法線のYチャンネル(縦方向)

 

B:追加スムースネス

アルベドと同様に変化なしの場所を輝度128に、

粗くしたい場所は128未満、滑らかにしたい場所は129以上にする。

 

A:追加法線のXチャンネル(横方向)

 

GBAチャンネルがややこしいです。何でこの順番なのだろう。

Detail Map も sRGB オプションを外します。

Unity Japan Office メイキング

 

 

 HDRP Lit シェーダーならではの機能

本プロジェクトで使用している機能をざっくりと紹介します。

 

 異方性反射

Unity Japan Office メイキング

 

Standard シェーダーで異方性反射を表現したい場合、

標準機能には無いのでシェーダーアセットを購入する必要がありましたが、

HDRP Lit シェーダーでは簡単に表現することができます。

Unity Japan Office メイキング

 

以下のテクスチャ両方とも sRGB オプションを外します。

Unity Japan Office メイキング

 

Tangent Map

異方性反射の方向をRGチャンネルで指定します。

↓ここで Substance Painter 用の便利そうなジェネレーターが配布されています。

【https://gumroad.com/l/Smix_aniConGen】

 

Anisotropy Map

異方性反射の適用範囲ををRチャンネルで指定します。

 

 

 ベントノーマルマップ

Unity Japan Office メイキング

Substance Designer にモデルをインポートして生成する事ができます。

MayaLT の Turtle レンダラーでも生成可能。

 

ぱっと見は普通のノーマルマップと同じように見えますが、

法線方向を変位させるためのものではありません。

 

ザックリ言うと「どっちの方向が遮蔽されずに露出しているか」を記録したテクスチャです。

反射の遮蔽を表現することができます。

Unity Japan Office メイキング

 

それの何が良いのか。。。

 

現状、ゲームエンジンにおける反射表現は キューブマップを使用するのが一般的です。

建築コンテンツの場合、Box Projection 方式にすれば、まぁまぁいい感じになりますが、

どうしても「そこは奥の方だからそんなに反射でないだろ」的な場所にも反射がでてしまい、

全体的に白く浮いた見た目になってしまうことがよくあります。棚の奥とか。

 

そのような

「そこは奥の方だから、あっちから見たときは反射がでても良いけど、

 こっちから見たときは強い反射はでないはずだ」

なことができるようになるので、ぱっと見の反射の違和感を緩和する効果があります。

 

天吊りのスピーカー。

見上げた時だけ反射の具合が大きく変わります。すぐ奥が暗い天井で遮蔽されているので。

Unity Japan Office メイキング

 

 

 ディスプレイス

Unity Japan Office メイキング

 

実際に頂点を変位させる「Vertex displacement」と

頂点変位させずに見た目で騙す「Pixel displacement (Parallax Occlusion Mapping)」を

HDRP Lit シェーダーでは簡単に使用することができます。

 

Unity Japan Office メイキング

 

Height Map

変位する高さの割合をRチャンネルで指定します。

sRGB オプションは外します。

Unity Japan Office メイキング

 

 

 屈折

Unity Japan Office メイキング

 

マテリアルを Transparent に設定すると、屈折が設定可能になります。

Unity Japan Office メイキング

 

屈折具合を細かく設定できたりガラスの色を変えたり、

複数のパラメータで簡単にできるので便利なのですが、

好ましくないアーティファクトが結構出るので、使用は控え目にしました。

 

 

 Override Baked GI

こちらは Shader Graph を使って Lit Master シェーダーをカスタムすることで使用可能です。

ライトマップをシェーダー内で編集することができます。

Unity Japan Office メイキング

 

例えばこの壁、細かな陰影を表現できる程ライトマップ解像度は高くありません。

Unity Japan Office メイキング

 

そこで、以下のテクスチャを用いて、ライトマップの輝度を変位させています。

Unity Japan Office メイキング

Unity Japan Office メイキング

 

ビルトインパイプラインの Standard シェーダーには標準でこのような機能が無いため、

同じことをしたい場合はディテールマップ(Albedo x2)でアルベド値を上げ下げします。

結果的には同じようにできますが、ライティングではなく反射率に手を入れてしまうので、

物理ベースレンダリングとしてのデータの扱い的には良くないはずです。

 

 

 Shader Graph

HDRP でシェーダーを作成する場合は

Shader Graph というノードベースのシェーダー作成ツールを使用します。

Unity Japan Office メイキング

 

本プロジェクトでもいくつかのシェーダーを Shader Graph で作っていますが、

Lit シェーダーではとても表現できないような、ものすごいシェーダーを作っているわけではありません。

前述したとおり Lit シェーダーはかなり万能なので、基本的にはそれを使います。

 

テクスチャによってUVを細かく設定したいとか、

デフォルトでは用意されていない Fabric シェーダーを使いたいとか、

ちょっとした改造が必要な場合に Shader Graph を使います。

 

 

 UVをうまく利用する

 1枚ものテクスチャ

実寸サイズが小さく、パーツごとに素材が複数あるようなものは

UVを 0 ~ 1 範囲に並べて、1枚もののテクスチャを作ると良いです。

場合によっては、Detail Map や Bent Normal Map も用意しますが、UVは同じものを使用します。

小物系に多い、最もベーシックなやり方です。

Unity Japan Office メイキング

Unity Japan Office メイキング

 

なぜ小さいもの限定なのかと言うと、サイズが大きいと1枚ものテクスチャでは画像サイズが足りず、

近寄ったときのディテールが表現しきれないからです。

 

 

 シームレステクスチャをタイリング

実寸サイズが大きい、もしくは大きくなくても目立つ柄があるようなものは、

シームレステクスチャをタイリングしてディテールを確保します。

床・壁や、木目調の家具など。

Unity Japan Office メイキング

Unity Japan Office メイキング

 

この場合は、UVを 0 ~ 1 範囲に限定したり、きれいに整列させる必要はありません。

↑の床UVは、4×4ブロックの石タイルテクスチャをタイリングしていますが、

連続した整列感が目立たないように、ブロックごとにUVを回転させてランダム感を出しています。

Unity Japan Office メイキング

 

Ambient Occlusion Map や Bent Normal Map など、

タイリングで表現できないテクスチャも併用する場合は、

別の 0 ~ 1 範囲UVセットを作成して、シェーダーをカスタムする必要があります。

デフォルトの Lit シェーダーではテクスチャ毎に別UVの指定ができないので。

Unity Japan Office メイキング

Unity Japan Office メイキング

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)