物理ベースレンダリング(PBR)テクスチャを使用すると、単一のオブジェクトに複数のタイプのテクスチャ画像、またはマップを使用することで、リアルな陰影や照明を表現できます。複数のテクスチャマップを組み合わせることで、さまざまな照明環境における色、粗さ、反射率をより正確にシミュレートでき、アセットや環境の視覚要素を向上させることができます。


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

SurfaceAppearance オブジェクトにテクスチャマップを追加する準備ができたら、プロパティ ウィンドウ内の各マッププロパティをクリックし、アセット ID を入力します。
テクスチャマップ
Studio は現在、5 種類の 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 モードの 2 つの結果があります。MeshPart.Transparency が 0 に設定されている場合と少なくとも 0.02 に設定されている場合は異なる結果になりますが、数値精度によっては 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 のティント量を制御します。ティントはアルファ チャンネルが完全に視認できる場所で最も強く、アルファ チャンネルが透明な場合は適用されません。

ノーマル
ノーマル、または 表面マップは、表面にテクスチャの深さを追加し、ハイトマップと似たように機能します。そのため、視角や照明環境によって効果が薄まったり強調されたりすることがあります。
次の図では、メッシュ参照とマップ参照の間で切り替えてノーマルマップの値を比較できます。



画像の R、G、B チャンネルは、それぞれローカル表面ベクトルの X、Y、Z 成分に対応しています。色 <Typography noWrap>[127, 127, 255]</Typography> の均一な画像は、完全にフラットなノーマルマップに変換されます。Roblox は OpenGL形式 - 接線空間のノーマルマップのみをサポートしています。
ノーマルマップは、メッシュの視覚的表面に大きな影響を与え、テクスチャ内の不適切な継ぎ目を強調することがあります。可能な限り、テクスチャの継ぎ目を隠してください。
粗さ
粗さまたはミクロサーフェスマップは、モデル表面の光の散乱を決定します。粗さが 0% のとき、表面は全く光を散乱させず、マテリアルの反射と光沢が持つよりシャープで明るい反射の結果になります。100% の場合、光と反射はモデル全体に均等に散乱し、反射の少ないマットな表面を生じさせます。
次の図は、さまざまな粗さマップの値を比較したものです。



粗さは、特定の角度で物体の反射性に影響を与える場合があり、これを フレネル 効果と呼びます。Studio のフレネル処理は物理的な現実世界の精度を目指しますが、粗い表面でも特定の角度で予期しないスペキュラ貢献が得られることがあります。いくつかのケースでは、材料との一貫した照明応答を得るために、粗さマップ値を約 0.1 高くすることで補償することができます。
Roblox はこの照明効果を正確にレンダリングしますが、表面の明るさや反射性は、Substance Painter のようなテクスチャコンテンツ作成ソフトウェアと Studio の間で一貫して反応しないことがあります。アプリケーション間のレンダリングの違いについては、衣服の例を参照してください。
金属感
金属感は、表面の反射率を決定します。ほとんどの場合、1%(非金属)または 100%(金属)のいずれかにこの値を設定する必要がありますが、サテンやシルクのような中程度の反射特性を持つ表面を作成する場合は、部分的な金属感の値を使用できます。この手法により、マテリアル内の反射をわずかに偽装し、カラー/アルベドマップに反映される環境内の色を強調できます。
次の図は、さまざまな金属感マップの値を比較したものです。



異なるPBRレンダラーは、反射率の処理にさまざまなワークフローを使用します。Studio は、素材が 非金属 か 金属 であるかを決定する 金属感ワークフロー だけを使用します。これは、時々 絶縁体 または 導体とも呼ばれます。
発光マスク
グレースケールの EmissiveMaskContent コンテンツテクスチャは、表面全体に発光マスクを適用します。これにより、すべてまたは何もない Neon 素材よりも芸術的制御を使用したり、照明されたテキスト、未来的なアーマー、または生物発光する生き物などの詳細な発光効果を作成したりできます。
関連する EmissiveTint プロパティは、発光の貢献に対する色合いを決定し、EmissiveStrength は、発光の強さを決定します。










