Version: 2020.1
言語: 日本語
Believable visuals: models
Believable visuals: outdoor lighting

Believable visuals: materials and shaders

Note that this guide was originally created for use with the Built-in Render Pipeline in Unity 2017.3. For information on adapting this guide for use with the Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP), see Update: believable visuals in URP and HDRP.

マテリアルは、ライトがモデルのサーフェスにどのように反応するかを決定します。そして、現実的なビジュアルを作る上で不可欠な要素です。モデルを作成する場合、シェーダーを使用してサーフェスプロパティを定義します。Unity の スタンダードシェーダー は、包括的な機能を備えたビルトインシェーダーで、適切なマテリアルを簡単に作成でき、物理ベースシェーディング (PBS) という高度なライティングモデルを組み込んでいます。シェーダーラボ、シェーダーグラフ (スクリプタブルレンダーパイプライン)、その他のシェーダー作成ツールを使って独自のサーフェスシェーダーを作成する前に、スタンダードシェーダーの使用方法を習得することが必要です。

現実のサーフェスのほとんどは複数のマテリアルで構成されているため、Unity スタンダードシェーダーでゲームオブジェクトのテクスチャリングを行う場合は、以下の点を考慮する必要があります。

注意 ここでは、アルベド、スムースネス、法線マップ、 アンビエントオクルージョン (AO) のみが説明されています。より詳しい情報は マテリアルパラメーター を参照してください。

スタンダード設定とスタンダードスペキュラー設定

Unity では、マテリアルを Standard (標準) か Standard Specular (標準スペキュラー) に設定できます。これらのいずれかを使用する場合、通常は、Standard のマテリアルを使うほうが簡単です。なぜなら、スペキュラーの明度と色が アルベド、スムースネス、メタリックの入力に基づいて自動的に計算されるからです。

Standard に設定されたマテリアルでは、Metallic を 1 に設定するとアルベドがスペキュラーの色とその明度をスムースネスと連動させ、サーフェスの明るさと光沢を調整します。

Metallic を 0 に設定すると、アルベドはスペキュラー色に影響を与えず、サーフェスの色として表示されます。
Metallic を 0 に設定すると、アルベドはスペキュラー色に影響を与えず、サーフェスの色として表示されます。

マテリアルのアルベドからスペキュラー色を取り除きたい場合は、Standard Specular を使用します。 これは非金属マテリアルまたは標準的な金属ではないマテリアルの場合ではスペキュラー色を手動で制御する方が上手くいきます。 詳細については、スペキュラーモード: Specular パラメーター を参照してください。

Albedo 値と Material Validator

物理ベースシェーダーはスペキュラー明度と光の分散を自動的に計算しますが、マテリアルのアルベドは妥当な値である必要があります。マテリアルのアルベドは直接光と間接光両方に影響を与え、シーンのその他のライトを通して非現実的な値を増加させます。

非常に暗いアルベドはライトを著しく吸収するため、異常なライトの反応の原因になります。アルベドが明るすぎると、現実では発生しない大量のライトと間接色を反射します。

非金属マテリアルのサーフェスに設定されたアルベドが間接ライトに影響を与える様子
非金属マテリアルのサーフェスに設定されたアルベドが間接ライトに影響を与える様子

現実世界で、非常に一般的な非金属塗装面の定義値はありません。例えば、木の壁はチャコールブラックや白で塗りつぶすことができ、その壁の唯一決まったアルベド値などありません。アルベド値の決定に役立つように、PBS 値のチャートがあります (マテリアルチャート を参照)。一般的なガイドラインとして、非金属塗装面の場合、0.2 未満のアルベド値は暗すぎ、0.8 を超えるアルベド値は明るすぎます。暗い絶縁体のマテリアルの情報は、Materials authoring guidelines 1 : dark dielectric materials (PDF) を参照してください。

マテリアルチャートは、1つの単純なアルベドサーフェスを処理するときにとても簡単に使用できます。ただし、複雑なアルベドテクスチャを決定することは難しいかもしれません。Material Validation ツールを使用すると、マテリアルの値がガイドラインに従っているかどうかを確認することができます。シーンビューでこのツールを有効にするには、ビューポイントの左上隅のドロップダウンメニューから Material Validation を選択します。 注意 Material Validation は、Scriptable Render Pipeline (SRP) を使用していない場合にのみ可能です。SRPを無効にするには、Edit > Project Settings の順に移動し、Graphics カテゴリを選択し、Scriptable Render Pipeline SettingsNone に設定します。

Metallic 値

マテリアルの Metallic 値は、どれくらいの量の環境光をサーフェスに反映するかを定義し、一方で、アルベド色をどれくらいサーフェスに表示するかを決定します。サーフェスが純粋な金属の場合、サーフェスの色 (アルベド) は環境リフレクションの色を増長します。金属マテリアルを使用する場合は、以下を考慮してください。

  • 純粋な金属光沢を持つマテリアルは拡散ライティングを跳ね返しません。もし、部屋全体が金属でできていると、部屋は非常に暗くスペキュラーハイライトとリフレクションしか見えません。
ポイントライトに覆われた滑らかな金属性の部屋の暗さを示す例
ポイントライトに覆われた滑らかな金属性の部屋の暗さを示す例
  • サーフェスが金属かどうかを判断するのは困難です。ゲームオブジェクトの主要マテリアルを考慮する代わりに、ゲームオブジェクトの最終的なサーフェスに焦点を当ててみましょう。例えば、青に塗装された金属の手すりは、塗装されていない部分だけを金属と指定します。
塗装された金属製の手すりをテクスチャ化する方法の例
塗装された金属製の手すりをテクスチャ化する方法の例

注意: 塗装された金属手すりの塗装が剥げた部分は金属ですが、さびはサーフェス上で金属ではありません。

  • マテリアルに必要な Metallic の値が 0 または 1 だけであることは容易に想像できますが、サーフェスマテリアルが混ざることがあります。例えば、ゴミや汚れで部分的に覆われた金属オブジェクトは、ブレンドによって Metallic の値が 0 と 1 の間になります。それ以外の場合は、マテリアルを作成する場合に 0 と 1 の間の Metallic 値を使用しないでください。

金属に関しての詳細は Metallic モード: Metallic パラメーター を参照してください。

Smoothness 値

Smoothness は、マイクロサーフェスの詳細を制御します。0 の値は非常に粗いサーフェスになり、1 の値は鏡面などの純粋に反射する鏡のようなサーフェスになります。これは直感的に使うことができますが、以下の点を考慮して使用するとより効果的です。

  • ゲームオブジェクトの最終的なサーフェスクオリティに注目してください。 例えば、コンクリート製の物体は粗い表面であるか、またはその上に光沢塗料が塗られています。 木材が塗装されていない場合の Smoothness 値は、木材が研磨されているかによります。

  • 擦った跡、汚れ、傷、水の汚れを忘れないでください。 実生活では、マテリアルのサーフェスは多くの変数の影響を受けます。 マテリアルが純粋な単一サーフェスであることは、ほとんどありません。

  • マテリアルの特性を決定するには、要素がサーフェス間でどのようにブレンドされるかを検討します。 例えば、土に水たまりができると通常、吸収された水の跡が輪のようになり、単なる smoothness のブレンドだけではなく、暗いアルベドになります。

吸収された水の遷移の上に黒くなったスムースネスとアルベドの例 smoothness の詳細については、Smoothnessを参照してください。

法線マップ

法線マップは、通常、接線空間の法線マップを参照します。接線空間の法線マップは、まるで光線が他の方向から来るかのようにポリゴンのサーフェス法線を曲げます。これは通常、単純に見えるメッシュに多くの詳細を加えるために使用されます。

法線マップを使用してマテリアルを定義することもできます。 たとえば、光沢の強い赤で塗装された木片に元のサーフェスマテリアルを表示することができます。

法線マップに関する詳しい情報は 法線マップ (Bump mapping) を参照してください。

オクルージョンマップ

オクルージョンマップはアンビエントライトの削減を擬態し、くぼみと形状を認識しやすくします。

事前にベイクしたアンビエントオクルージョンを利用すると、アンビエントライトで影をつくるのに役立ちます
事前にベイクしたアンビエントオクルージョンを利用すると、アンビエントライトで影をつくるのに役立ちます

オクルージョンマップを使用する利点は以下のとおりです。

  • オクルージョンマップの詳細バージョンは、特に、データがより詳細なモデルから来ている場合には、オフラインレンダリング中にはるかに高い品質で実行できます (高精度モデルから低レベルへの法線マップのベイクに似ています) 。

  • オクルージョンマップは、ゲームオブジェクトの動的なライティングを大きく向上させます。なぜなら、動的なゲームオブジェクトはベイクしたライトからのオクルージョンを受けず、ライトプローブかアンビエントライト、そして、あまり詳細でないスクリーンスペースアンビエントオクルージョン (SSAO) のみを受けるためです。

オクルージョンマップに関する詳細は、オクルージョンマップ を参照してください。

参照ピクチャー、カラーチャート、写真のソース

新しい分野を学ぼうとするときのように、デジタルコンテンツ作成の一般原則を勉強することは、成果物の向上につながります。 参照用であろうとテクスチャソースであろうと、実際の表面の写真を撮ることは、3D モデリングアプリケーションでサーフェスマテリアルの作成をしばしばスピードアップします。

参照をキャプチャするときは、特定の被写体の写真を多く撮ることが必要です。 画像検索エンジンに行き、特定の参照画像を検索するときと同じです。

テクスチャソースを撮影するときは、常にカラーキャストをニュートラルにし、サーフェスの明度の効果を無効にします。 ホワイトバランスと 18 % のグレーカード (Kodak R–27 カードなど) の適切な露出を使用してください。

18 % のグレーカードは、テクスチャのソース画像を撮影するときに基準として信頼できる値です。独自の 18 % のグレーカードを印刷しようとしないでください。大抵、不正確なグレーカードになり、バランスの崩れた色になる可能性が高いためです。 適切な 18 % のグレーカードは、sRGB 色空間で rgb(124,124,124) または、#7C7C7C に相当します。カメラはこのグレーカードを使用して適切な露出 (ライトの明度を無効にする) とホワイトバランス (ライトの色のキャストを中和する) を取得します。

グレーカードに関する詳細は、 Middle gray (Wikipedia) を参照してください。

最良の結果を得るには、デジタル一眼レフ/高度なカメラを使用してください。 ただし、手動露出制御と RAW 機能を備えたモバイルなど、どのようなカメラでも上記の設定で良好な結果を得ることができます。

手動露出制御と RAW 機能を使用するためのモバイル設定の例
手動露出制御と RAW 機能を使用するためのモバイル設定の例

偏光ライトと偏光レンズを伴う X-Rite カラーチェッカーによる RAW 画像は、より正確にアルベドテクスチャのキャプチャを行います。

カラーチェッカーチャートの例
カラーチェッカーチャートの例

R–27 グレーカードと同様に、カラーチェッカーチャートは、基準として信頼できるカラーリファレンスです。 カメラセンサー+レンズ+フィルター+ライティング制御特性プロファイルを生成し、これを使用して RAW 画像を補正します。

テクスチャソースを撮影するときは、曇った日や均等にライトが当たる日陰など、拡散したライティング条件を選択します。

撮影した画像を処理する場合に、より純粋なアルベドテクスチャを作成するには、Unity の De Lighting ツール を使用して追加の処理が可能です。


  • 2018–03–21 公開ページ
  • リアルな映像を作るためのベストプラクティスガイドは Unity 2017.3 で追加
Believable visuals: models
Believable visuals: outdoor lighting