PBRマテリアルガイド

3Dモデルの外観はマテリアルによって制御されます。Vircadiaでサポートされているマテリアルは、物理ベースレンダリング(PBR)マテリアルです。つまり、3Dモデルのマテリアルは、実際の環境と同じように(おおよそ)光を反射したり吸収したりします。

マテリアル、テクスチャ、およびシェーディングの概要

3Dモデルの外観は、マテリアルによって制御されます。例えば、鍵の3Dモデルには、色、金属の見え方、表面がでこぼこしているか滑らかかを決定する材料が使用されます。レンガの壁の3Dモデルには、その粗さと色を決定するマテリアルが使用されます。

Vircadiaは物理ベースレンダリング(PBR)マテリアルをサポートしているので、モデルに光が当たると、現実世界のオブジェクトと同じような振る舞いをします。例えば、同じ鍵の3Dモデルでも、そこに降り注ぐ光はすべて輝き、反射します。レンガの壁の3Dモデルは、光りませんが、その色と表面を確認するために十分な光を反射します。

マテリアルには、テクスチャとシェーディングの情報が含まれています。

テクスチャ

テクスチャは、3Dモデルに適用される平面画像です。3Dモデルの素材の見え方を詳細に表現します。例えば、木の幹の3Dモデルには、樹皮のテクスチャを使用して、表面がどのように見えるかを表現します。

Vircadiaは、次のテクスチャ形式の使用をサポートしています:

  • PNG (recommended)

  • JPEG, JPG (recommended)

  • TGA

  • TIFF, TIF

最高のパフォーマンスを得るために、 すべての3Dモデル (テクスチャを含む)をVircadiaにロードする前にベイクすることをお勧めします。

Shading

VircadiaはPBRマテリアルをサポートしているので、使用されるシェーディングは、光が異なるマテリアルサーフェスとどのように相互作用するかを正確に表現しています。つまり、3Dモデルは異なる光の設定下で同じように見えるわけではありません。PBRシェーダにはマテリアルパラメータまたはチャンネルがあり、これを変更することで様々な種類のマテリアルを作成することができます。

Note

シェーダーとマテリアルエンティティをシェイプやゾーンエンティティに組み合わせることで、モデルやアバターにシェーダーを適用することができます。この機能は 実験的な機能 としてリリースされたもので、十分なテストは行われていません。 自己責任 でモデルやアバターにプロシージャルマテリアルを適用してみたい場合は、 Procedural Shaders for Models and Avatars を参照してください。

マテリアルチャネル

素材チャンネルは、素材の粗さや色など、様々なパラメータを決定します。各チャンネルの値は、2つの方法で決定できます :

  • 値の設定: チャンネルの値は、スライダーで設定された値です。値を設定することは、スイッチを切ったり入れたりするのと同じです。

    例えば、携帯電話を見ると、ある部分は光沢があり、ある部分はつや消しになっています。ある値を使用すると、オブジェクト全体にその値が反映されます。オブジェクトのさまざまな部分にさまざまな質感を反映させたい場合は、マップを使用する必要があります。

  • マップの使用: マップは、プロパティを定義するためにインポートすることができる画像です。マップを使用して、3Dモデルにテクスチャを適用することになります。

    例えば、あなたの携帯電話のケースはつや消しで、他の部分は光沢がある場合があります。マップを使って、ケースをつや消しに、携帯電話を光沢のあるものに設定することができます。

Vircadiaのすべての素材は、その見え方を決定する以下のチャンネルを持っています :

チャネルタイプ

説明

マップ

アルベド(Albedo)

このチャンネルは、素材の色を定義します。好きな色の値を選ぶことができます。

sRGB

sRGB

メタリック(Metallic)

このチャンネルは、素材がメタリックであるか否かを決定します。半分だけメタリックな素材は存在せず、メタリックかそうでないかのどちらかです。

[0,1]

[0,1]

ラフネス(Roughness)

輝度レベルを用いて、オブジェクトの粗さ/マットさ、または光沢/テカリを決定します。

[0,1]

[0,1]

法線

法線は、オブジェクトを実際のジオメトリのようにレンダリングするチャンネルです。例えば、石に凹凸をつけたり、貝に隆起をつけたりするのが法線です。

xyz

bump

オパシティ(Opacity)

不透明度は、オブジェクトが透明であるか不透明であるかを決定するものです。

[0,1]

mask, alpha

オクルージョン(Occlusion)

このプロパティは、シェーディングを可能な限り自然になるように近似させます。つまり、オブジェクトが光とどのように相互作用するかを再現することになります。

---

[0,1]

エミッシブ(Emissive)

オブジェクトから反射される光の量を制御するチャンネルです。

sRGB

sRGB

スキャタリング(Scattering)

スキャタリングは、光が人間の皮膚に当たったときにどのような反応をするかを決定します。このチャンネルでは、人体で光がどのように反射・吸収されるかを詳しく説明します。

[0,1]

[0,1]

素材の種類(Material Type)

オブジェクトが点灯しているか否かを決定するチャンネルです。

[lit, unlit]

---

備考 :

  1. テクスチャで透明度を設定する場合、透明度(アルファ)はマテリアルのアルベドテクスチャ(Albedo texture)に、透明度を持つPNGファイルとして、別の透明度テクスチャとしてではなく、含まれている必要があります。

  2. Vircadiaのレンダラーは2つの異なる種類の透明度を描画できます。「アルファ」(255段階の透明度、表面に影をつけない、影を落とさない)と「マスク」(2値の透明度、不透明な表面の完全な影、表面全体に影を落とす)です。

  3. テクスチャをマスクとして扱うかアルファとして扱うかを決定するために、エンジンは2%から98%の間のアルファ値を探します。PNG-8は2値の透明度しかサポートしていませんが、PNG-24はさまざまな透明度をサポートしているからです。

  4. 以下のテクスチャチャンネルのみで2つ目のUVセットを使用することをサポートします: エミッシブマテリアル(Emissive Texture)、法線マップ(Normal Map)、アンビエントオクルージョン(Ambient Occlusion)。

サンプルマテリアルとそのテクスチャ、シェーディング

Vircadiaは様々な種類のマテリアルをサポートしています。それぞれのマテリアルタイプでサンプルオブジェクトを作成しました。GitHubの このリポジトリ <https://github.com/vircadia/hifi_tests/tree/master/assets/models/material_matrix_models/fbx/blender> から各オブジェクトをダウンロードするか、Vircadiaで このスクリプト<https://raw.githubusercontent.com/vircadia/hifi_tests/master/assets/models/material_matrix_models/material_matrix.js> を実行すると、あなたのドメイン内のすべてのサンプルオブジェクトをアップロードすることができます。

これらのサンプルオブジェクトのすべてのマテリアル情報(テクスチャ、シェーディング、チャンネル値やマップを含む)を ここに<../../_static/resources/3d-models/Sample_Material_Textures_and_Shading_Guide.html> リストアップしました。

Blenderでマテリアル値を設定する

Warning

このセクションは古くなっています。

Blenderでモデルを作成したら、Vircadiaで使うためにFBX、glTF、GLBまたはOBJフォーマットでエクスポートする必要があります。さらに、VircadiaのPBRマテリアルテクスチャに合わせるために、Blenderのマテリアルプロパティとテクスチャを修正する必要があります。

そうすることで、意図したとおりにモデルが表示されるようになります。

デフォルトでは、テクスチャで設定されたマテリアルのプロパティは、値で設定されたプロパティより優先されます。唯一の例外は、頂点カラー(Vertex color)とテクスチャの場合で、この場合、頂点カラーとテクスチャは一緒に乗算されます。これは、グレースケールのテクスチャと頂点カラーを使用して、パフォーマンスの高いカラーモデルを作成する場合に便利です。

Blenderでサポートされている各PBRチャンネルに対応するフィールドがハイライトされている画像と、そのチャンネルに対応する範囲にどの値と色が対応しているかの詳細が含まれています。OBJとしてエクスポートされたモデルは、Vircadiaの完全なPBRマテリアルサポートをまだ持っていない可能性があることに留意してください。

../../_images/material-textures-b.jpg ../../_images/material-values-b.jpg

Mayaでマテリアル値を設定する

Warning

このセクションは長い間テストされていないので、古くなっている可能性があります。

以下のグラフィックスを使用して、Mayaで適切なマテリアル値とテクスチャを設定します。

../../_images/material-values-m.jpg ../../_images/material-textures-m.jpg

関連項目