スタンダードシェーダー/スタンダードマテリアルの PBS とテクスチャリング

確認済のバージョン: 2017.3

-

難易度: 中級

マテリアルは、ライトがモデルのサーフェスに対してどのように反応するかを定義するものであり、現実のようなビジュアルの作成には欠かせない要素のひとつです。モデルが作成されたら、そのサーフェスのプロパティの定義を行います。

物理ベースレンダリングシェーダー(PBS)の革新は、リアルタイムレンダリングに劇的な進化をもたらしました。法線マップの革新以来、現実のようなビジュアルの実現にこれほどまでに寄与したものはありません。 Unity のスタンダードシェーダーは、リアリスティックなマテリアルを簡単に作成できる優秀なシェーダーです。ShaderLab や ShaderGraph(スクリプタブルレンダーパイプライン)その他のサードパーティー製シェーダー作成ツールの作成を開始する前に、まずはスタンダードシェーダーを使いこなせるようにすることを強くお勧めします。

Unity のスタンダードシェーダーに関する詳細は、こちらでご確認いただけます。

PBS を使用すると説得力のあるマテリアルが作成できますが、マテリアルのスライダーとカラーピッカーを調整するだけではより良い結果は得られません。現実世界に存在するサーフェス(面)のほとんどは複数のマテリアルで成り立っています。 Unity の標準マテリアルでオブジェクトのテクスチャリングを行う場合に、思い通りの結果を得るために考えるべき事柄をいくつかご紹介します。できるだけ簡潔にするために、ここではアルベド、スムースネス、法線マップ、アンビエントオクルージョンのみに的を絞ってご紹介します。

  • Standard と Standard Specular Unity では標準マテリアル内に 2 つのオプションがあります。Standard と Standard Specular です。この 2 つのマテリアルについては、以下を念頭に置いてください。

    • 基本的には、Standard に設定されたマテリアルを Specular の輝度として使用する方が簡単で、色はアルベド、スムースネス、Metallic の入力に応じて自動的に計算されます。

    • Standard のマテリアル内の Metallic の値が 1 である場合、サーフェスの輝度・光沢度を調整するスムースネスとアルベドとの組み合わせによって、スペキュラー反射の色とその輝度が決まります。 Metallic の値が 0 である場合、アルベド色はスペキュラー反射の色に影響を与えず、サーフェスの色として表れます。

    • マテリアルのアルベドから来るスペキュラー反射の色を切り離したい場合は Standard Specular シェーダーを使用してください。これは派手な色のマテリアルに適用できます。

詳細はこちらをご覧ください。

  • アルベド値とマテリアルバリデーター 物理ベースシェーダーはリソースを効率的に節約するために機能します(ライトからスペキュラー反射の輝度と分布を自動的に計算する)が、マテリアルのアルベドはリアリスティックである必要があります。マテリアルのアルベドは、直接ライティングと間接ライティングとの両方に影響し、非現実的な値はシーンのその他のライティングにも連鎖的に影響を与えます。

    • 非常に暗いアルベドはライトを大量に吸収してライティングに対する不自然な反応を発生させます。明る過ぎるアルベドは、通常現実世界では見られないようなライトや間接色を大量に反射します。 上の画像の例では、非金属サーフェスのアルベドが間接ライティングに影響を与えているのが確認できます。

    • 開発者が PBS の値を決定するために参照できるチャートはありますが、現実世界にごく一般的に存在する非金属の塗装が施された面のための定義された値はありません。例えばコンテンツ制作者が、木製の壁を炭のような黒や雪のような白でペイントすることを決めたとします。その壁のアルベドを決める時、コンテンツ制作者の好み以外には、絶対的に定められたひとつの値というものは存在しません。 ここで、基本的なガイドラインが役に立ちます。非金属の、ペイントされたサーフェスの場合には、アルベドの値が 0.2 より低ければ暗過ぎで、0.8 より高ければ明る過ぎると考えればほぼ確実です。これは科学的な測定に基づくものではありませんが、簡単に覚えられるガイドラインとして役立ちます。適切な PBS 値のチャートはこちらでご覧いただけます。

暗い色の誘電性のマテリアルに関する情報は、こちらの専門的なガイド(英語)をご覧ください。

チャートは、単一のアルベドサーフェスを扱う場合には簡単に利用できますが、複雑なアルベドテクスチャの検証は困難な場合があります。これに対応すべく、Spotlight チームのレンダリングエンジニアがマテリアル検証ツールを開発しました。このツールを使用すると、マテリアルの値がガイドラインに沿っているかどうか確認することができます。このツールはシーンのビューポート内で有効化できます。「Shaded」から 「Material Validation」ビューに切り替えてください。

  • Metallic の値 マテリアルの Metal(金属)値は、サーフェスに環境がどこまで反射されるか、またサーフェス上にアルベド色がどの程度表示されるかを定義します。サーフェスが純粋なMetal である場合、サーフェスの色(アルベド)が環境反射の色を制御します。Metal マテリアルに関しては、以下の事項に注意してください。

  • 光沢を持つ純粋な金属のマテリアルは拡散ライティングを反射しません。部屋全体が金属で出来ている場合、その部屋は非常に暗くなり、スペキュラーハイライトとリフレクションのみが見える状態になります。 上の画像は、ポイントライトが全体的に照射される滑らかな金属でできた部屋がどの程度暗くなるかを示すものです。

  • 特定のサーフェスを金属にするかどうかの判断は、時として悩ましい問題です。オブジェクトそのもののマテリアルのみに気を取られずに、オブジェクトの最終的なサーフェスに注目してください。 例えば、青く「ペイント」された金属の柵の場合、塗装のない領域のみが Metal として指定されるべきです。下の画像は、塗装された金属の柵がどのようにテクスチャリングされるべきかを示しています。 (注)金属バーの塗装の剥がれた領域は金属光沢を持ちますが、錆は金属のサーフェスではありません。

  • マテリアルに必要な Metallic 値は 0 か 1 のどちらかだけであると思ってしまいがちですが、サーフェスのマテリアルが混合されたりブレンドされている場合もあります。例えば、部分的に埃や泥に覆われた Metal オブジェクトの Metallic 値は、ブレンドすることで中間の値になります。ただしそういった場合以外でリアリスティックなマテリアルを作成する際には、0 と 1 の中間の Metallic 値は使用しないように十分注意してください。

Metal に関する詳細はこちらでお読みいただけます。

  • Smoothness の値 Smoothness(スムースネス/滑らかさ)はサーフェスの詳細なディテールを制御します。値が 1 であれば純粋な反射鏡のようなサーフェスになり、値が 0 であれば極度に粗く、くすんだサーフェスになります。これは通常は分かりやすく直感的に扱えますが、場合によっては非常にややこしい状況になることもあります。 以下の事項に注意してください。

  • オブジェクトの最終的なサーフェス(表面)の質に注目してください。オブジェクトがコンクリートで出来ているからと言って、それだけではスムースネスの値は全く判断できません。粗い表面のコンクリートに光沢塗料が塗られているものかもしれません。塗装されていない木材などもこの一例です。木材がどの程度研磨されているかによって、最終的なスムースネスの値が変わってきます。

  • 擦り傷、泥、引っ掻き傷、水染みも忘れないでください。現実世界では、マテリアルの表面は様々な可変要素に影響を受けるため、純粋な単一のサーフェスであることは稀です。

  • 要素が各サーフェス間でどのようにブレンドされるかによって、マテリアルの性質も決まってきます。([例]土の上の水溜まりの場合、通常は単純にスムースネスをブレンドしただけではなく、吸収された水の作る輪によってアルベドを暗くします。)

スムースネスに関する詳細はこちらをご覧ください。

  • 法線マップ 「法線マップ」とは通常、ライトが別の方向から来ているかのようにポリゴンのサーフェス法線を屈曲させる、接空間の法線マップのことを指します。コンテンツ制作者は通常これを、見た目が単純なメッシュに多数のディテールを追加するために使用します。 法線マップは通常ジオメトリのディテールを追加するために使用されますが、マテリアルを定義する役割も持っていることを忘れないでください。法線マップを使って元々のサーフェスマテリアルを表示することができます。下の画像の、光沢度の高い赤い塗装の施された木材がその一例です。

法線マップに関する詳細はこちらをご覧ください。

  • オクルージョンマップ オクルージョンマップは環境光ライトの減衰を模倣し、凹面などの形状の見え方を向上させることができます。 既に、ライトのベイキングや間接ライティングやスクリーンスペースアンビエントオクルージョン(SSAO)が選択肢としてありますが、なぜこれが必要なのでしょうか?その理由は 2 つにあります。

*[理由 1](特に詳細度の高いモデルのデータを持っている場合は)オフラインレンダリング中に非常に高品質の(環境光の減衰をよく近似する)オクルージョンマップを生成することができるため(詳細度の高いモデルを詳細度の低いモデルに変換するときに法線マップをベイキングするのに似ています)。

*[理由 2]オクルージョンマップは、動的に照らされたオブジェクトに非常に役立ちます。動的オブジェクトはライトのベイキングからのオクルージョンは受けず、ライトプローブ、環境光ライティング、低詳細のスクリーンスペースアンビエントオクルージョン(SSAO)のみを受けるからです。

オクルージョンマップに関する詳細はこちらをご覧ください。

  • 参考画像、カラーチャートおよびソース写真 デジタルコンテンツ制作に限らず、どんな分野に挑むときでもその背後にある基本的な原理を学ぶことがより良い結果に繋がります。マテリアルの制作に関して言えば、物体の表面の写真をたくさん撮って自分の引き出しを増やすのはいい学びになりますし、撮った写真を参考にしたり、そのままテクスチャのソースとして使うことで、DCC ツールでのサーフェスマテリアルの作成をスピードアップさせることもできます。 特定の素材の写真を数多く撮るという以外に、参考用画像の収集に関するルールというものは特にありません。何かの画像を参照したい場合に画像検索エンジンを使用するのと同じことです。

一方、テクスチャのソース用に写真を撮り、それと同様のビジュアルを DCC で作成していく場合、テクスチャのキャプチャリングに関するいくつかのガイドラインがあります。以下の項目を確認してください。

  • カラーキャストを除去し、サーフェスに表れるライトの輝度の影響を打ち消すことが大切です。ホワイトバランスの調整と、(Kodak R-27 カードなどの)18% グレーカードの適切な露出を利用してください。 18% グレーカードはテクスチャのソース写真を撮る際のアンカーとして一般的に使用されており、信頼されている値です。独自の 18% グレーカードをプリントすると大抵の場合は不正確なカードとなり、色のバランスも悪くなるのでお勧めできません。 正確な 18% グレイカードは RGB(124,124,124)あるいは sRGB 色空間の #7C7C7C に相当します。カメラはこのグレイカードを使って、(ライトの輝度を打ち消すことで)適切な露出に調整し、(光のカラーキャストを除去することで)ホワイトバランスを調整します。 グレイカードに関する詳細はこちらをご参照ください(英語)。

  • デジタル一眼レフや高性能カメラを使用するに越したことはありませんが、必須ではありません。携帯電話のカメラなどでも、手動での露出制御と RAW 撮影が可能なカメラであれば、上記の方法で良い結果が得られます。

  • 更に、X-Rite ColorChecker でプロファイルされた RAW 画像に偏光ライティングとレンズを用いれば、より精度の高いアルベドテクスチャがキャプチャーできます。 R-27 グレイカード同様、ColorChecker チャートも色の参照用に一般的に信頼されており、アンカーとして使用できます。カメラセンサー、レンズ、フィルター、およびライティング条件の特性のプロファイルが生成可能で、これを RAW 画像の修正に使用することができます。

  • テクスチャソースをキャプチャーする時のライティングは、曇りの日や、光の加減が均一な日陰など、光が拡散された状態である必要があります。

  • キャプチャーした画像の処理後の、より純粋なアルベドテクスチャ用には、Unity の De-Lighting tool を使用できます。