導入
PBRは「Physically-Based Rendering」の略称です。現実の素材をリアルなシェーディング、照明モデル、異なるテクスチャマップ、および値を使用して再現することを目的としています。
Aximmetry用のすべてのPBRシェーダーは、Common\Shaders\PBRフォルダー内に格納されています。
パイプラインカラースペースの設定
PBRテクスチャを使用する場合、正しい結果を得るためにパイプラインカラースペースを「線形」に設定する必要があります。
ファイル/プロパティ/レンダリングに移動し、パイプラインカラースペースを次のように設定し、OKをクリックします:
PBRワークフロー
PBRマテリアルを作成する方法は2つあります。
Aximmetryではメタルネスとスペキュラーの両方がサポートされています。これらはシェーダーの名前で示されます。
以下の例では、基本的なPBRシェーダーを使用してその使用方法を説明します。追加のシェーダープロパティはここにリストされています。
PBRを使用する際は、ユーザーフレンドリーでほとんどのケースで十分なため、Metalnessワークフローの使用を強く推奨します。
Metalnessワークフロー
Metalnessワークフローの場合、名前の中に_SPEC_が含まれていない任意のPBRシェーダーを使用できます。
プロパティを確認しましょう
この例では、[Common]:Shaders\PBR\PBR_Norm.xshadを使用します。
これは最も基本的なPBRメタルネスシェーダーで、他のすべてのPBRシェーダーはこの入力を持っています。
アルベドマップはベースカラー入力で、絶縁体(非金属)の拡散色と金属表面の反射率を定義します。
Normal Mapは、ポリゴンを増やさずに凹凸などの詳細を追加するために使用されます。通常、高解像度のモデルからベイクされます。
Metalness Mapは、オブジェクトのどの部分が金属でどの部分が非金属かを示します。そのため、通常は白黒の画像で、白が金属(値:1)、黒が非金属(値:0)を表します。
Metalness値:絶縁体には0、金属表面には1を設定します。
注意:メタルネステクスチャを使用する場合、メタルネス値は1に設定する必要があります。
マップ/テクスチャがない場合(例えば、表面のすべての値が同じ場合)、シンプルな白テクスチャ(デフォルト設定)を設定し、Metalnessプロパティに値を直接設定できます。
メタルネスは、マテリアルの最上部の可視層を表す必要があります。
金属表面には拡散反射がなく、スペキュラーの色と強度はアルベドマップから取得されます。
部分的に金属的な表面が存在する場合、色は灰色(値は0から1の間)になりますが、これはマテリアル間の移行にのみ使用すべきです。
以下の画像は金属性と非金属性の球体です:
ラフネス マップ(他のPBRシステムではグロス マップとも呼ばれますが、逆になっている場合もあります)は、表面の滑らかさを定義します。粗い表面は広くて暗いスペキュラー反射を示し、滑らかな表面は明るく鋭いスペキュラー反射を示します。マップ/テクスチャがない場合(例えば、表面のすべての値が同じ場合)は、シンプルな白色テクスチャ(デフォルト設定)を設定し、Roughnessプロパティに値を直接設定できます。
Roughness値は0から1の間で手動で設定できます。滑らかな表面は低い値、粗い表面は高い値になります。
注意:ラフネステクスチャを使用する場合、ラフネス値は1に設定する必要があります。
以下の画像は、ラフネス値がスペキュラー反射に与える影響を示しています:
注意:すべての球体は金属質で、より多くのスペキュラー反射を再現しています。
反射率値は、素材が持つスペキュラー反射の量を設定します。
非常に特定の状況を除き、この値を変更しないことを強く推奨します。デフォルト値はほぼすべての表面に適切であり、この値を変更すると物理的に不正確な素材になる可能性があります。
金属表面は、この値に関わらず入射光の99%を反射します。(もちろん、アルベドマップを暗い色に設定することで、金属表面の反射率を低くすることは可能です)
反射率は屈折率(IOR)から計算できます。
光線が別の媒体から入ろうとする際、反射される確率はこの式で計算できます:
- ここで、n1は光源の媒体のIOR、n2は進入しようとする媒体のIORです。
- 材料が空気(n1=1)に囲まれている場合、式は次のように簡素化されます:
Specular値は、オブジェクトがスペキュラーハイライトを反射する強さを設定します。値が大きいほどスペキュラー反射が強くなります。これは特殊なケースのみに適用されるため、通常は変更する必要はありません。
スペキュラーワークフロー
スペキュラーワークフローでは、名前の中に_SPEC_ を含むシェーダーを使用する必要があります。
この例では:[Common]:Shaders\PBR\PBR_SPEC_Norm.xshad が最も基本的なPBRスペキュラーシェーダーで、他のすべてのPBRシェーダーはこの入力を持っています。
アルベドマップには、マテリアルの拡散色が格納されます。
Normal Mapは、ポリゴンを増やすことなく凹凸の詳細を追加するために使用されます。通常、高解像度のモデルからベイクされます。
Specular Mapには、反射強度と反射色が格納されます。
Roughness Map (他のPBRシステムではGloss Mapとも呼ばれますが、逆になっている場合もあります)は、表面の滑らかさを定義します。粗い表面は広くて暗いスペキュラー反射を、滑らかな表面は明るく鋭いスペキュラー反射を示します。マップ/テクスチャがない場合(例えば、表面のすべての値が同じ場合)は、シンプルな白色テクスチャ(デフォルト設定)を設定し、Roughnessプロパティに値を直接設定できます。
Roughness値は0から1の間で手動で設定可能です。滑らかな表面は低い値、粗い表面は高い値になります。
注意:ラフネステクスチャを使用する場合、ラフネス値は1に設定する必要があります。
以下の画像は、ラフネス値がスペキュラー反射に与える影響を示しています:
注意:スペキュラーワークフローはより柔軟性がありますが、物理的に正しくないマテリアルを作成する可能性があります。例えば、出射光が入射光よりも多いマテリアルです。これはシーンを照明する際の問題を引き起こすため、避けるようにしてください。
環境マップ
環境マップは、選択したポイントから環境の360度画像をキャプチャしたものです。
環境マップの詳細は、こちらをご覧ください。
Env Mapsを使用するには、名前の中に_IBL_を含むシェーダーを使用し、このシェーダーにEnv Mapsを接続する必要があります。
以下のテクスチャの接続方法は例示であり、他の方法も使用可能です。
ENV Mapsをシェーダーに次のように接続します:
次のような表示になります:
プレーンに少し高度なシェーダーを適用してみましょう:
次のような表示になります:
キューブの色をSolid Colorノードで変更できます:
次のような表示になります:
ダイナミックライトの使用
すべてのPBRシェーダーはダイナミックライトの影響を受けます。ダイナミックライトの使用については、こちらを参照してください。
この例では、シーンにスポットライトを追加しました:
IBLと組み合わせることもできます:
次のような結果を得ることができます:
ライトマップ
3Dモデリングソフトウェアでレンダリングされたシーンが次のような場合:
Aximmetryで同じ結果を得るには、ライトマップを使用するのがおすすめです。
ライトマップの詳細はこちらをご覧ください。 - 近日公開予定
Aximmetryでライトマップを使用するには、名前の中にLightを含むシェーダーを選択します。例:PBR_IBL_Norm_Light
これらのシェーダーでは、Irradiance Env MapがLightmapに置き換えられています。
マップを生成してAximmetryにインポートした後、次のように接続します:
(Solid Colorノードは、キューブのアルベドをオリジナルレンダリングと同じ赤色に変更するために使用されています)
以下のテクスチャの接続方法は一例です。他の方法も使用可能です。
次のような結果が表示されるはずです:
トーンマッパーの調整
3Dモデリングソフトウェアでの照明設定を、デフォルトのトーンマッパー値と一致するように調整することをおすすめします。
シーンが明るすぎたり暗すぎたりする場合は、Render_General_PBRコンパウンド内のTone Mapper 4ノードのExposureパラメーターを調整してください。
露出値が高いほどシーンは明るくなり、低いほど暗くなります。
PBRマテリアルの例
例プロジェクトはここにあります:[Tutorials]:Materials\