物理ベースレンダリング (PBR) テクスチャを使用すると、単一のオブジェクトに複数の種類のテクスチャ画像または マップ を使用してリアルなシェーディングとライティングを表現できます。複数のテクスチャマップを組み合わせることで、あらゆるライティング環境における色、粗さ、反射率をより正確にシミュレートでき、アセットや環境の視覚要素を増強できます。


PBR テクスチャを作成するためのさまざまなアプリケーションとワークフローが利用可能です。これらは、Roblox Studio が使用している特定のテクスチャマップをサポートしている場合、カスタム 3D オブジェクト作成のモデリングおよびテクスチャリングフェーズで使用できます サポート。
このガイドでは、PBR テクスチャマップを使用するためのメッシュオブジェクトの設定方法についての説明と、Roblox がサポートする PBR テクスチャマップの一般的なユースケースやベストプラクティスを説明します。独自の表面を作成する際には、一般的な素材値、画像比較、および衣服の例については、マテリアル参照を参照してください。
表面の外観を有効にする
MeshPart に PBR テクスチャを追加するには、元のテクスチャを上書きする SurfaceAppearance オブジェクトを追加します。一般に、ゲーム中にスクリプトで SurfaceAppearance プロパティを変更することはできません。なぜなら、エンジンがこれらのグラフィックスを表示するために事前処理を必要とするからです。基本的なテクスチャを追加するのと同様に、各テクスチャ画像マップは、適切にアップロードされた画像アセット ID を指し示す必要があります。
MeshPart に表面の外観を有効にするには:
Explorer ウィンドウで MeshPart の上にマウスを置き、⊕ボタンをクリックします。
文脈メニューから SurfaceAppearance を挿入します。

SurfaceAppearance オブジェクトにテクスチャマップを追加する準備ができたら、プロパティウィンドウで各マッププロパティをクリックし、アセット ID を入力できます。
テクスチャマップ
Studio は、現在 4 種類の PBR テクスチャマップをサポートしています:カラー、法線、粗さ、および メタリック です。これらのマップはそれぞれオブジェクトの表面外観の重要な側面に対応します。テクスチャマップは視覚的外観のみを変更し、MeshPart オブジェクトのジオメトリには影響を与えません。
Roblox がサポートするテクスチャマップの概要と追加リソースについては、以下の例を参照してください:
ColorMap プロパティは、表面のカラーデータを設定し、マップ内の透明度を含みます。追加情報については カラー (アルベド) を参照してください。



カラー (アルベド)
カラー、または アルベド マップは、テクスチャの色を決定し、ほとんどの色情報を含むが、ライティングやテクスチャ情報はほとんど含まれません。さらなるカスタマイズのために、画像マップに不透明度を追加することで、透明度 透過性をアルベドテクスチャに追加することもできます。
アルファモード
草、葉、レース、または汚れや汚れのようなデカールなど、部分的または完全な透明部分が必要なオブジェクトには、さまざまな アルファモード を使用してカラー マップに透明度を適用できます。カラー マップ画像形式がアルファチャネルをサポートしている場合は、0.0 が透明、1.0 が不透明のグレースケールアルファマップを適用できます。類似して、.png などの画像形式を使用する場合、カラー マップの不透明度はアセットの透明度として適用されます。
次の AlphaMode 値を設定することで、2 つの異なる動作で透明度を適用できます:
- オーバーレイ — ColorMap を基となるメッシュの MeshPart.Color の上に重ねます。オーバーレイモードを使用したカラーマップは、透明性がある場所でメッシュの基本色を明らかにし、これがデフォルトの設定です。
- 透明 — ColorMap の透明性に基づいて視覚的メッシュを削除します。これにより、メッシュが透過状態になり、透明性が存在する場合に元のメッシュの色が明らかにされません。
不透明
Enum.AlphaMode.Opaque モードを使用して ColorMap のアルファチャネルを完全に無視することができます。この場合、アルファ値は 1 (完全に不透明) と見なされます。
以下の例は、参照として白いオブジェクトを使用して、Opaque モードの動作を示しています:
オーバーレイ
Enum.AlphaMode.Overlayを使用して、メッシュの元の色のセクションを示すことができます。カラーマップの透明な領域が基盤の色を表すため、独自のテクスチャマップを設計し、メッシュの Color プロパティをカスタムスキントーンやその他の特殊な色の状況に部分的または完全に明らかにすることができます。
以下の例は、白い球体を参照として使用して、Overlay モードがどのように機能するかを示しています:
次の例は、Overlayモードを使用してカスタムキャラクターの元のスキントーンを示しています:


スキンや同様のアプリケーションに対するオーバーレイを最適化するための追加の詳細については、カスタムスキントーンを参照してください。
透明
Enum.AlphaMode.Transparency モードを使用して、レースや網などの複雑な細かいオブジェクトを作成することができます。メッシュの目に見える部分を削除することで、メッシュジオメトリを彫るものでなくすることができます。これは、メッシュオブジェクトのジオメトリには影響を与えないため、複雑なメッシュモデルのパフォーマンスに影響を与えることなく詳細なオブジェクトを作成することができます。
以下の例は、このモードの部分的かつ完全な透明性がメッシュのセクションを視覚的に削除する様子を示しています:



Transparency モードには、MeshPart.Transparency が 0 に設定されているか、少なくとも 0.02 に設定されているかによって異なる 2 つの結果がありますが、数値精度のために 0.01 のような小さな値が不透明な透明度を引き起こすことがあります。
- アルファを使用して、葉、レース生地、網などの硬いエッジのある、ほとんど不透明なオブジェクトの形を切り取る場合、MeshPart.Transparency を 0 に設定します。表面の一部が完全に不透明な場合、Roblox エンジンは適切な深度ベースのオクルージョンを使用してレンダリングできます。不透明な表面は、一般的に DepthOfFieldEffect、ガラスや水の屈折、反射といった深度ベースの効果ともより良く機能します。
- アルファを使用して、半透明オブジェクトや透明度の滑らかなグラデーションがあるオブジェクトに詳細を追加する場合、MeshPart.Transparency を 少なくとも 0.02 に設定します。これにより、汚れた窓や柔らかいエッジの羽のようなオブジェクトのブレンドの質が向上しますが、すべての効果に対して機能するわけではありません。
ティントマスク
Enum.AlphaMode.TintMask モードを使用すると、表面の特定の領域に SurfaceAppearance.Color ティントを適用できます。ティントはアルファチャネルが完全に可視である場所で強く、アルファチャネルが透明である場所では適用されません。

カラーティント
SurfaceAppearance.Color プロパティを変更することで、カラーマップにティントを適用できます。ティントはパフォーマンスに影響を与えず、異なるティントで単一のカラーマップを再利用することでメモリを節約できます。カラーティントを使用して、MeshPart PBR テクスチャ間で追加の低コストのバリエーションを作成したり、リアルタイムで PBR 表面の色をプログラムで変更したりできます。
SurfaceAppearance.Color ティントは乗算として適用され、最終的な外観は Color3 (テクセル色) と SurfaceAppearance.Color の関数になります。これにより、元の SurfaceAppearance.ColorMap をほぼ白のグレースケールの色で作成することで、このプロパティが適用されたときに最も強いティント効果が得られます。
ティントは SurfaceAppearance.ColorMap にのみ適用され、MeshPart.Color には適用されません。透明度を適用する場合でも、アルファチャネルを引き続き使用できます。
SurfaceAppearance.AlphaMode が Overlay に設定され、アルファチャネルが存在する場合、元の MeshPart.Color が明らかにされ、SurfaceAppearance.Color ティントは可視の SurfaceAppearance カラーマップのみに適用されます。
SurfaceAppearance.AlphaMode が TintMask に設定され、アルファチャネルが存在する場合、アルファチャネルは SurfaceAppearance.Color ティントの量を制御します。ティントはアルファチャネルが完全に可視である場所で強く、アルファチャネルが透明である場所では適用されません。

法線
法線 または 表面 マップは、表面にテクスチャの深さを追加し、高さマップと似た動作をします。その結果、視点の角度やライティング環境に応じて効果が弱くなることや強くなることがあります。法線マップが存在しない場合、値は 0.0 に設定されます。
次の図では、メッシュ参照とマップ参照の間で切り替えて法線マップの値を比較できます:



画像の R、G、B チャンネルは、それぞれローカル表面ベクターの X、Y、Z コンポーネントに対応しています。色の均一な画像 <Typography noWrap>[127, 127, 255]</Typography> は、完全に平坦な法線マップに変換されます。Roblox は OpenGL 形式 - 接線空間 の法線マップのみをサポートしています。
法線マップはメッシュの視覚的な表面に大きく影響し、テクスチャの不自然な継ぎ目を強調することがあります。可能な限り、テクスチャの継ぎ目が隠れるようにして、メッシュに視覚的な問題を防いでください。
粗さ
粗さ または マイクロサーフェス マップは、モデルの表面に光がどのように広がるかを決定します。粗さが 0.0 の場合、表面は光をまったく散乱させず、マテリアルにおいてシャープで明るい反射と光沢が生じます。1.0 の場合、光と反射はモデル全体に均等に散乱され、光沢がないマットな表面になります。
粗さは、異なる角度でオブジェクトがどれだけ反射するかに影響を与え、これを フresnel 効果と呼びます。フresnel についての詳細や、反射挙動を一貫して保つためのベストプラクティスについては、さらに詳しく説明します。
次の図は、さまざまな粗さマップの値を比較したものです:



フレネル
フレネル は、表面の反射量を現在の視点の角度に対して指します。Studio のフレネル処理は物理的な現実の精度を目指していますが、粗い表面であっても特定の角度で予期しない鏡面反射の寄与を得ることがあります。場合によっては、マテリアルと一貫した照明応答を得るために、粗さマップを約 0.1 よりも粗くして補償することができます。
Roblox はこの照明効果を正確にレンダリングしますが、テクスチャコンテンツ作成ソフトウェア(Substance Painter など)と Studio で、表面の明るさと反射性が一貫して反応しないことがあります。衣料品の例では、アプリケーション間でのレンダリングの違いを説明しています。
メタリック
メタリック は、表面の反射性を決定します。メタリック値は 0.0 から 1.0 です。Roblox はメタリックマップが存在しない場合、デフォルト値を 0.0 に設定します。
次の図は、さまざまなメタリックマップの値を比較したものです:



異なる PBR レンダラーは、反射性を処理するためのさまざまなワークフローを使用します。Studio は メタリックワークフロー のみを使用し、マテリアルが 非金属 か 金属 かを決定します。これは時々 絶縁体 または 導体 と呼ばれます。
ほとんどの場合、この値は 0.0 (非金属)または 1.0 (金属)に設定すべきです。サテンやシルクのような中程度の反射特性を持つ珍しい表面を作成する場合に部分的なメタリック値を使用することもできます。この方法は、カラー/アルベドマップ に反映される色を強調するために、マテリアル内の反射を微妙に偽ったりします。







