UnityのデフォルトでGLTF標準のPBRマテリアルとほぼ互換性があります。
Unityのデフォルト | GLTFのPBRマテリアル |
---|---|
Albedo カラー | /materials/pbrMetallicRoughness/baseColorFactor |
Albedo テクスチャ | /materials/pbrMetallicRoughness/baseColorTexture |
Metallic レベル | /materials/pbrMetallicRoughness/metallicFactor |
Smoothness レベル | 1.0f - (/materials/pbrMetallicRoughness/roughnessFactor) |
Metallic テクスチャ | /materials/pbrMetallicRoughness/metallicRoughnessTexture |
法線マップ | /materials/normalTexture |
バンプスケール | /materials/normalTexture/scale |
ハイトマップ | N/A |
オクルージョンテクスチャ | /materials/occlusionTexture |
オクルージョン強度 | /materials/occlusionTexture/strength |
Emission カラー | /materials/emissiveFactor |
Emission テクスチャ | /materials/emissiveTexture |
詳細マスク | N/A |
セカンダリマップ | N/A |
レンダリングモード | /materials/alphaMode |
UniVRMのマテリアルインポートに関して、roughnessFactor値はMetallicテクスチャにベイクされる。マテリアルエクスポートではsmoothness値はMetallicテクスチャにベイクされる[参照]。
Unity と GLTF でテクスチャーの仕様に非互換があるので、 export/import
で変換しています。
Standardシェーダーのカラー以外のテクスチャ(Linear)の処理について。
ノーマルマップの修正。MToonと共通なので次項で説明します
_BumpMap
で判定します。TextureImporterType.NormalMap
Metallic, Roughnes, OcclusionMapの変換
Standard
(Unityの標準) で metallic
と smooth
値が高い状態になっています。 マテリアルのシェーダーを Unlit/UniUnlit
にするとテクスチャがそのまま表示できます。