メインコンテンツまでスキップ

マテリアルとテクスチャ


※ 翻訳には「Google AI Studio」を利用し、「Gemini Experimental 1206」のモデルを使用しています。

このガイドラインは、Khronos Groupの「3DC-Asset-Creation」で公開されている「Materials and Textures」を日本語に翻訳したものです。

原文のライセンス: Creative Commons Attribution 4.0 International License


マテリアルとテクスチャ

バージョン 1.0.0 最終更新日: 2020年10月20日

アセット作成ガイドラインの概要に戻る

マテリアルは、3Dモデルの平らな表面に視覚的なディテールとシェーディングを追加するために使用されます。表面が木材、布地、金属、プラスチック、ガラスなどのように見えるかどうかを定義するのに役立ちます。

同じマテリアルを、好きなだけ多くのモデルに再利用できます。家具サプライヤーは、ホームファニシングのラインに同じダークオークウッドステインを使用する場合があります。この表面の外観は、すべての3Dモデルで再利用される単一のマテリアルで定義できます。これにより、一貫した外観が作成され、再作業が削減されます。

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.1: デフォルトのマテリアルを使用したモデル

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.2: カスタマイズされたマテリアルを使用した同じモデル

マテリアルの種類

eコマースアプリケーションのリアルタイム3Dモデルに使用するマテリアルの種類はいくつかあります。

  • PBR メタリックラフネス
  • PBR スペキュラ-グロッシネス
  • ディフューズスペキュラ
  • アンリット
  • カスタムシェーダー

PBRマテリアル

PBRは物理ベースレンダリングの略です。PBRは、さまざまな照明条件(日光、室内照明、夜間など)で正確で予測可能な結果を作成するマテリアルとレンダリングのアプローチです。

Image credit: Wayfair

(C)2016, theblueturtle_. ライセンス: CC BY 4.0 International 図5.3: 戦闘で損傷したSFヘルメット - PBR. glTFデモ: https://www.babylonjs.com/demos/pbrglossy/

Image credit: Wayfair

(C)2016, theblueturtle_. ライセンス: CC BY 4.0 International 図5.4: PBRテクスチャ(左から): ベースカラー、オクルージョン、ラフネス、メタルネス、ノーマル、エミッシブ

PBRメタルネスラフネス

ほとんどの表面には、PBRメタルネスラフネスマテリアルを使用することをお勧めします。

幅広い表面タイプが可能で、使いやすく理解しやすく、ダウンロードファイルのサイズを小さく保ち、レンダリング時のメモリ使用量を削減します。

Image credit: Wayfair Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.5: PBRメタルネスラフネスマテリアル

PBRスペキュラ-グロッシネス

表面の反射率をPBRメタルネスラフネスで適切に作成できない場合は、代わりにPBRスペキュラ-グロッシネスを使用する必要がある場合があります。

PBRスペキュラ-グロッシネスは、反射色の制御を強化しますが、メモリ使用量が増加し、モデルファイルサイズが大きくなります。

PBRスペキュラ-グロッシネスには、メタルネスラフネスに比べて2つの主な利点があります。

  1. 非金属表面に色付きの反射を作成できます
  2. 金属が非金属に移行する際のテクスチャアーティファクトを防ぐことができます
Image credit: Wayfair Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.6: サテン生地は、色付きの反射に依存する非金属表面です。色付きの反射がない場合(左)と、色付きの反射がある場合(右)

Image credit: Microsoft

Image by Microsoft, based on the Water Bottle sample model. ライセンス: パブリックドメイン 図5.7: PBRメタルネスラフネスマテリアルは、金属と非金属の間にフリンジングアーティファクトを引き起こす可能性があります。左側では、赤いラベルの端に、赤いペイントと真鍮の金属の間にフリンジアーティファクトが表示されています。右側では、PBRスペキュラ-グロッシネスマテリアルはこれらのエラーを表示しません

Image credit: Joe Wilson

(C)2020, Joe Wilson. ライセンス: CC BY 4.0 International 図5.8: メタルネステクスチャによって引き起こされる移行アーティファクトの別の例

ディフューズスペキュラマテリアル

これは、PBRワークフローが一般的になる前に一般的に使用されていた、古い非PBRマテリアルタイプです。アセットがこのマテリアルタイプを使用している場合は、マテリアルをPBRメタルネスラフネスマテリアルに変換することをお勧めします。

Image credit: Microsoft

Image by Microsoft, based on the Boom Box sample model. ライセンス: パブリックドメイン 図5.9: ディフューズスペキュラ(左)とPBRメタルネスラフネス(右)。モデルはMicrosoft、ディフューズスペキュラ変換はGary Hsu。

ディフューズスペキュラは正確な照明を使用しないため、一般的なワークフローは、照明とシェーディング情報をディフューズテクスチャにペイントすることでした。ベイクされた照明は、表面に深みを与えることができますが、モデルが異なる照明のシーンにロードされたときに正しく表示されないという犠牲を払います。

PBRマテリアルを使用する場合、アンビエントオクルージョンはベースカラーテクスチャとは別に保持されるため、ソフトな拡散照明にのみ適用され、動的照明には適用されません。これにより、より現実的な結果が得られます。ディフューズスペキュラにはこの分離がないため、アンビエントオクルージョンは多くの場合、ディフューズテクスチャにペイントされ、「汚れた」表面を引き起こす可能性があります。

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.10: シェーディングのあるテクスチャは、モデルを汚く見せることがあります(左)。PBRモデルは、シェーディングされていないテクスチャを使用する必要があります(右)

アンリットマテリアル

アンリットは、表面がシーンの照明の影響を受けないように強制します。これはPBRマテリアルタイプではありません。ダイナミックライトとイメージベースライトは、表面に影響を与えません。ベースカラーは、明るくなったり暗くなったりすることなく、フルパワーで表示されます。

実世界の表面が照らされないことは非常にまれです。最も黒い石炭でさえ、照明の影響を受けます。

アンリットは、ドロップシャドウやユーザーインターフェイスオーバーレイなどの特定の状況に役立ちます。

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.11: アンリットマテリアルを使用したシャドウプレーン(左)とシャドウなし(右)

特定の状況で必要とされる場合を除き、製品モデルにドロップシャドウを含めないことをお勧めします。たとえば、Facebook ARアセットには、アセットが床を横切って移動するために持ち上げられていることをユーザーに示すのに役立つドロップシャドウを含めることができます。SparkAR: シンプルシャドウを参照してください。

カスタムシェーダー

eコマースモデルにはカスタムシェーダーを使用しないことをお勧めします。

カスタムシェーダーは、特定のユースケースのために作成できます。たとえば、暖炉インサート製品の機能を示すためにアニメーション化された火を作成するなどです。カスタムシェーダーを許可するために開発されているドラフト拡張KHR_techniques_webglを参照してください。

カスタムシェーダーは、独自のWebサイトの3Dビューアでのみ予測どおりに動作する可能性があることに注意してください。カスタムシェーダーは、ビューア間で一貫してレンダリングされることが保証されておらず、一部のビューアではモデルをまったくレンダリングできない場合があります。検索エンジンや広告主は、カスタムシェーダーのレンダリングに失敗し、製品が発見できなくなる可能性があります。

カスタムシェーダーを使用する必要がある場合は、標準のPBRメタルネスラフネスマテリアルを使用して別のLOD(詳細レベルモデル)を作成し、モデルを他のビューアで確実にレンダリングできるようにすることをお勧めします。

モデルごとの複数のマテリアル

アセットは、モデル全体に単一のマテリアルを使用するか、モデルの異なる部分に複数のマテリアルを割り当てることができます。2つのアプローチにはトレードオフがあります。

単一のマテリアル

ほとんどの場合、アセット全体に単一のマテリアルを使用することをお勧めします。これにより、ファイルサイズが削減され、レンダリングパフォーマンスが向上します。

アセットに複数の表面タイプ(布、木、金属など)がある場合、単一のマテリアルでは、すべてのテクスチャをUV「アトラス」レイアウトに結合する必要があります。

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.12: UVアトラスレイアウト

複数のマテリアル

一般的には単一のマテリアルの使用が推奨されますが、必要に応じてモデルで複数のマテリアルを使用できます。

複数のマテリアルを使用する一般的な理由は2つあります。

  1. タイルテクスチャ
  2. マテリアルバリアント

複数のマテリアル - タイルテクスチャ

ぼやけが懸念される場合は、タイルテクスチャを使用できます。各タイリングテクスチャには、独自のマテリアルが必要です。たとえば、木材、金属、布地を使用した椅子では、3つの別々のマテリアルを使用できます。

ただし、複数のマテリアルを使用すると、ドローコールが増加する可能性があるため、リアルタイムレンダリングパフォーマンスが低下する可能性があることに注意してください。

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.13a: 4つのマテリアルを使用したリアルタイムモデル

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.13b: 色として表示されるマテリアルの割り当て。赤い部分は布地マテリアルを使用し、緑は木材、青は金属、黄色はラベルマテリアルを使用します

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.13c: 3ds Maxで表示された、椅子モデルで使用されている4つのマテリアル。イメージクレジット: Wayfair。

複数のパーツで同じマテリアルを再利用する必要があります。たとえば、椅子に16個の金属ファスナーがある場合、それぞれに異なるマテリアルを使用しないでください。代わりに、16個すべてのパーツに単一の共有マテリアルを使用します。これにより、ドローコールが削減され、リアルタイムレンダリング速度が向上します。

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.: 同じ金属マテリアルが複数のパーツで再利用されます(強調のために緑色のハイライト)

複数のマテリアル - マテリアルバリアント

複数のマテリアルを使用すると、マテリアルでベースカラーファクターを使用することもできます。これは、単純なプラスチックなどの単色の表面に単独で使用したり、布地の織りなどのグレースケールのベースカラーテクスチャをカラー化したりするために使用できます。カラー値は、表面のバリアントを表すためにスワップでき、非常に小さいファイルサイズを使用します。

Image credit: Wayfair Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.16: baseColorFactorを使用してテクスチャをカラー化するマテリアルバリアント

リアルタイムマテリアルの入力

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.17: 3ds MaxからglTF形式にエクスポートする準備ができている、PBRメタルネスラフネスの一般的な入力を示すリアルタイム3Dマテリアル

Image credit: Wayfair

(C)2020, Wayfair. ライセンス: CC BY 4.0 International 図5.18: 3ds MaxのV-Rayでの非リアルタイムレンダリング用の複雑なマテリアル

複雑なマテリアルは、リアルタイム3Dモデルには使用できません。ArnoldやV-Rayなどの非リアルタイムレンダラーでは、無制限のマテリアル合成を使用した複雑なマテリアル設定が可能です。これらのレイヤーは通常、インタラクティブな速度でレンダリングするには遅すぎます。

リアルタイムマテリアルは、高速なインタラクティブレンダリングを可能にするためにシンプルである必要があります。複雑なレイヤーや合成の代わりに、シンプルなビットマップテクスチャまたは値を使用します。

PBRメタルネスラフネスのテクスチャ

PBRメタルネスラフネスマテリアルでは、7つのテクスチャ入力を使用できます。

アルファベット順に:

  1. アルファカバレッジ
  2. ベースカラー
  3. ノーマル
  4. エミッシブ
  5. メタルネス
  6. オクルージョン
  7. ラフネス

これらはどれも必須ではありません。必要なテクスチャのみを使用してください。これにより、ファイルサイズが削減され、ダウンロード時間が短縮され、メモリが節約されます。

各入力は、テクスチャではなく単一の数値にすることができます。可能な限り、テクスチャの代わりに値を使用してモデルファイルを小さくすることをお勧めします。ただし、入力タイプがモデルの表面全体でバリエーションを必要とする場合は、テクスチャを使用する価値があります。

マテリアルワークフローの順序

メタルネスラフネスマテリアルのテクスチャは、任意の順序で作成できます。ただし、最良の結果を得るには、この順序でテクスチャリングの決定を適用することをお勧めします。

  1. アルファカバレッジ
    • レンダリングパフォーマンスを向上させ、深度ソートアーティファクトを減らすために、アルファカバレッジのある表面は不透明な表面とは別に保持する必要があります。
  2. メタルネス
    • メタルネスはベースカラーと直接相関があり、金属と非金属では処理方法が異なります。ベースカラーの作業を行う前に、メタルネスの値を決定することをお勧めします。
  3. ベースカラー
    • 表面のベースカラーは、視覚的な結果に最も大きな影響を与えるものの1つです。表面が金属の場合、ベースカラーは反射色(金、銅、真鍮など)を格納します。非金属表面の場合、ベースカラーは従来の非反射表面の詳細(木目、レンガの色、布地のプリントなど)を制御します。
  4. ラフネス
    • ラフネスは、表面のフォトリアリズムに大きな影響を与えます。ラフネスは、マイクロサーフェス(小さな)凹凸を定義し、基本的に反射がどの程度ぼやけたり鮮明になったりするかを制御します。
  5. ノーマル。
    • ノーマルバンプテクスチャは、マクロサーフェス(大きな)凹凸に使用されます。ノーマルは、表面の方向にバリエーションを追加して、溝、ピット、繊維などをシミュレートします。ノーマルは、高詳細モデルの曲率を格納するために使用でき、低解像度モデルをより滑らかまたは詳細に見せることができます。
  6. エミッシブ
    • エミッシブは、内部照明、暗闇で光る塗料、LEDディスプレイなどに使用できます。最良の結果を得るには、レイトレースレンダラーを使用してエミッシブライトバウンスを事前計算し、これをエミッシブテクスチャに格納します。これは、モデルとマテリアルがほぼ完成したときに追加するのが最適です。これにより、すべての詳細がエミッシブ計算に影響を与えることができます。
  7. オクルージョン
    • アンビエントオクルージョンは、モデルの交差や隙間が発生する場所のソフトシャドウに使用されます。最良の結果を得るには、レイトレースレンダラーを使用してオクルージョンを事前計算し、これをオクルージョンテクスチャに格納します。これは、モデルとマテリアルがほぼ完成したときに追加するのが最適です。これにより、すべての詳細がオクルージョン計算に影響を与えることができます。

PBRの色と値

高品質のPBRは、実世界の材料から測定された物理ベースの材料値に依存しています。

ベースカラーのほとんどのテクスチャと色は、可能な限り幅広い照明環境でアセットが適切にレンダリングされるように、PBR「セーフカラー」範囲内にある必要があります。これらはガイドラインですが、一部のまれな材料では、セーフカラー範囲外の値を使用する必要がある場合があります。たとえば、Vantablackはより暗くすることができます。

ベースカラーのカラー値は、30〜243の範囲内にある必要があります。30の値は、最も暗い材料(石炭や黒い塗料など)に使用できます。243は、純粋な雪に使用できます。ほとんどの表面は、かなり小さいカラー範囲を使用する必要があります。以下のチャートを参照してください。

ほとんどのアートソフトウェアは、カラー値を指定するために0〜255の範囲の8ビットカラー範囲を使用します。ただし、より高いビット深度で作業する場合は、線形カラー値を使用できます。

ベースカラーとエミッシブテクスチャは、2.2ガンマに類似したsRGBカラースペースで作成する必要があります。これらのテクスチャは通常、写真から派生し、カメラはほぼ常に画像にガンマを適用します。他のすべてのテクスチャ(アルファカバレッジ、メタルネス、ラフネス、ノーマル、オクルージョン)は、線形カラースペースで作成する必要があります。

非金属(誘電体)のベースカラー

コンテンツ作成者は、これらのカラー値を開始点として使用し、実世界の参照に合わせて必要に応じて調整できます。ほとんどのアートプログラムはsRGBカラーを使用しますが、一部のツールでは線形カラースペースでカラーを指定する必要がある場合があるため、線形カラーも提供されます。

sRGB値 線形値 sRGBスウォッチ
木炭(30, 30, 30)(0.009, 0.009, 0.009)
新鮮なアスファルト(50, 50, 50)(0.028, 0.028, 0.028)
黒いアクリル絵の具(56, 56, 56)(0.036, 0.036, 0.036)
使い古されたアスファルト(91, 91, 91)(0.104, 0.104, 0.104)
むき出しの土壌(85, 61, 49)(0.089, 0.043, 0.027)
緑の草(123, 130, 48)(0.201, 0.227, 0.074)
砂漠の砂(177, 167, 132)(0.448, 0.394, 0.235)
新鮮なコンクリート(185, 181, 175)(0.494, 0.476, 0.437)
海の氷(187, 191, 192)(0.536, 0.529, 0.505)
白いアクリル絵の具(227, 227, 227)(0.767, 0.767, 0.767)
新雪(243, 243, 243)(0.899, 0.899, 0.899)

金属(導体)のベースカラー

sRGB値 線形値 sRGBスウォッチ
(196, 199, 199)(0.560, 0.570, 0.580)
(252, 250, 245)(0.972, 0.960, 0.915)
アルミニウム(245, 246, 246)(0.913, 0.921, 0.925)
(255, 226, 155)(1.000, 0.766, 0.336)
(250, 208, 192)(0.955, 0.637, 0.538)
ニッケル(211, 203, 190)(0.660, 0.609, 0.526)
チタン(193, 186, 177)(0.542, 0.497, 0.449)
コバルト(211, 210, 207)(0.662, 0.655, 0.634)
プラチナ(213, 208, 200)(0.672, 0.637, 0.585)

ベースカラー - PBRセーフカラー

各ピクセルの輝度値は、1) R、G、Bチャネルを平均して3で割る、または2) 0.299R、0.587G、0.114Bの重みで組み合わせて3で割る(これは、深い青と赤を生成するために最適化されたAllegorithmic Substanceメソッドです)のいずれかで計算する必要があります。

結果のピクセル値は、PBR許容値範囲内である必要があります(グループはこの値を確定する必要があります: Substanceバリデーター「レッドゾーン」: 30-243 sRBG、Substanceバリデーター「オレンジゾーン」: 50-225 sRGB、2DビデオsRGB許容範囲: 16-235 sRGBなど)。

レンダーでは、この決定された範囲外のピクセル値は、テクスチャのベースカラーと光または影との相互作用の結果です(たとえば、ピクセルが255として表示された場合、ベースカラーピクセル自体が255であったためではなく、243以下の値のベースカラーピクセルと光が相互作用した結果です)。

PBRセーフカラーリファレンス:

アルファカバレッジテクスチャ

glTFのアルファカバレッジは現在、「アルファブレンディング」と「アルファテスト」の2つの手法を許可しています。

ガラス、アクリル、水などの実世界の材料の透明度は、glTFのアルファカバレッジの仕組みとは根本的に異なります。実世界の透明な表面は、多くの場合、光を反射および透過します。完全に透明なガラスは背後からの光を透過しますが、反射率も非常に高くなります。アルファカバレッジはこれを正しく表現しません。単に表面の可視性を制御し、すべての表面特性を一度に暗くします。

アルファカバレッジは、クワッドモデルに適用されたリーフテクスチャなどの「カットアウト」スタイルのマテリアル効果に限定する必要があります。ただし、実際には、ガラスや水などの半透明の材料を表現できる必要があるため、30%グレーなどの部分的なアルファ値を使用します。

部分的なアルファを使用すると、ベースカラーと反射を部分的に表示して、透明な表面を大まかに近似できます。これはガラスがまったくない場合よりも優れていますが、物理的に正しくないため、正確な結果が得られません。

2020年末までに、マテリアルテクノロジーの改善により、部分的に透明な表面のサポートが強化されます。薄い表面の透過(KHR_materials_transmission)およびボリューム透過(KHR_materials_volume)の今後の拡張により、透明度の制御と動作が向上します。

アルファカバレッジメソッド

glTFマテリアルでアルファカバレッジをレンダリングする方法を制御するための基本的な方法は2つあります。

アルファブレンド

これには、材料の穴が原因で透明度が発生し、吸収、屈折、または反射特性がほとんどまたはまったくない材料が含まれます。たとえば、糸の間に目に見える隙間があるガーゼやバーラップは、基本的にこのように動作します。

このタイプの透明度は、baseColorテクスチャパラメーターのアルファチャネルとして、現在のglTF 2.0仕様に含まれています。

アルファテスト

このタイプの透明度は、完全に透明または完全に不透明なマテリアルに使用され、2つの間にハードエッジがあります。マスク、スクリーンドア、またはカットアウトとも呼ばれます。

通常、白黒テクスチャを使用して、マテリアルをレンダリングする場所とレンダリングしない場所を識別します。テクスチャには白黒の間にアンチエイリアシングが必要です。そうしないと、エッジに沿って階段状のアーティファクトがより顕著になります。

ブレンディングは不要なため、このメソッドでは、アルファブレンドのようなレンダー順序やブレンドの複雑さの問題は発生しません。

アルファカバレッジ値

アルファカバレッジテクスチャは、白を完全にソリッドとして使用し、グレーを部分的な可視性のレベルに使用し、黒を完全にシースルーとして使用します。

アルファカバレッジでは、マテリアル全体に対して単一の値を使用することもできます。値は、クリアの場合は0、ソリッドの場合は1です。

USDzのアルファカバレッジ

USDzはglTFと同じ規則を使用します。USDzの場合、白はソリッド、黒はクリアです。

アルファカバレッジは控えめに使用する必要があります

マテリアルに透明度がない場合(たとえば、白いテクスチャまたは1.0の値を使用して不透明なパーツを作成する場合)は、アルファカバレッジを有効にしないでください。アルファカバレッジは、完全に不透明な場合でも、リアルタイムでレンダリングするコストが高くなるため、不要な場合は削除する必要があります。アルファカバレッジサーフェスは、遠くのサーフェスが近くのサーフェスの前にレンダリングされる原因となる深度アーティファクトを引き起こす可能性がある、別のレンダリングメソッドも使用します。

アルファカバレッジマテリアルは、不透明なマテリアルとは別に保持する必要があります。アルファカバレッジサーフェスを個別にレンダリングできるように、モデルを別々のパーツに分割することをお勧めします。

同じモデル内の複数のアルファカバレッジサーフェスも、別々のパーツに分割する必要があります。これにより、リアルタイムレンダラーが背面から前面に順番にレンダリングできるため、レンダリングが向上します。たとえば、5つの電球が並んだ照明器具がある場合、各電球のガラスは、モデル全体の個別のパーツである必要があります。すべての電球で同じガラスマテリアルを再利用できますが、各電球は他の電球とは独立して移動可能な別々のパーツである必要があります。ワークフロー: 透明なマテリアルを不透明なマテリアルから分離する

平均的な製品モデルの個別のパーツの総数は、できるだけ少なくする必要があります。操作する必要があるパーツ(たとえば、キャビネットのドア)のみを分離します。

アルファカバレッジエラー

アルファカバレッジを使用してアセットを作成する際の最大の懸念事項は、三角形を正しい順序でレンダリングすることの複雑さです。