Skip to content

Feature suggestion: Support Maya's PBR material in FBXLoader #15927

@looeee

Description

@looeee

PBR materials are exported to FBX from Maya using a proprietary extension ( Maya|xxxx).

A couple of these were added in #15844 which was a good start but doesn't take into account the fact that the Maya| prefix in FBX denotes that it's a PBR material, which should be used to create a MeshStandardMaterial.

According to this issue: assimp/assimp#1504, this is a complete list of the materials that can be exported from Maya to FBX:

Material: 2967359479536, "Material::StingrayPBS2", "" {
		Version: 102
		ShadingModel: "unknown"
		MultiLayer: 0
		Properties70:  {
			P: "Maya", "Compound", "", ""
			P: "Maya|TypeId", "int", "Integer", "",1166017
			P: "Maya|TEX_global_diffuse_cube", "Vector3D", "Vector", "",0,0,0
			P: "Maya|TEX_global_specular_cube", "Vector3D", "Vector", "",0,0,0
			P: "Maya|TEX_brdf_lut", "Vector3D", "Vector", "",0,0,0
			P: "Maya|use_normal_map", "float", "", "",0
			P: "Maya|uv_offset", "Vector2D", "Vector2", "",0,0
			P: "Maya|uv_scale", "Vector2D", "Vector2", "",1,1
			P: "Maya|TEX_normal_map", "Vector3D", "Vector", "",0,0,0
			P: "Maya|use_color_map", "float", "", "",0
			P: "Maya|TEX_color_map", "Vector3D", "Vector", "",0,0,0
			P: "Maya|base_color", "Vector3D", "Vector", "",1,0,0
			P: "Maya|use_metallic_map", "float", "", "",0
			P: "Maya|TEX_metallic_map", "Vector3D", "Vector", "",0,0,0
			P: "Maya|metallic", "float", "", "",0
			P: "Maya|use_roughness_map", "float", "", "",0
			P: "Maya|TEX_roughness_map", "Vector3D", "Vector", "",0,0,0
			P: "Maya|roughness", "float", "", "",0.33
			P: "Maya|use_emissive_map", "float", "", "",0
			P: "Maya|TEX_emissive_map", "Vector3D", "Vector", "",0,0,0
			P: "Maya|emissive", "Vector3D", "Vector", "",0,0,0
			P: "Maya|emissive_intensity", "float", "", "",0
			P: "Maya|use_ao_map", "float", "", "",0
			P: "Maya|TEX_ao_map", "Vector3D", "Vector", "",0,0,0
		}
	}
	Material: 2967565876448, "Material::phong2", "" {
		Version: 102
		ShadingModel: "phong"
		MultiLayer: 0
		Properties70:  {
			P: "AmbientColor", "Color", "", "A",0,0,0
			P: "DiffuseColor", "Color", "", "A",1,0,0
			P: "DiffuseFactor", "Number", "", "A",0.800000011920929
			P: "TransparencyFactor", "Number", "", "A",1
			P: "SpecularColor", "Color", "", "A",0.5,0.5,0.5
			P: "ReflectionFactor", "Number", "", "A",0.5
			P: "Emissive", "Vector3D", "Vector", "",0,0,0
			P: "Ambient", "Vector3D", "Vector", "",0,0,0
			P: "Diffuse", "Vector3D", "Vector", "",0.800000011920929,0,0
			P: "Specular", "Vector3D", "Vector", "",0.5,0.5,0.5
			P: "Shininess", "double", "Number", "",20
			P: "Opacity", "double", "Number", "",1
			P: "Reflectivity", "double", "Number", "",0
		}
	}
	Material: 2967588203904, "Material::lambert2", "" {
		Version: 102
		ShadingModel: "lambert"
		MultiLayer: 0
		Properties70:  {
			P: "AmbientColor", "Color", "", "A",0,0,0
			P: "DiffuseColor", "Color", "", "A",1,0,0
			P: "DiffuseFactor", "Number", "", "A",0.800000011920929
			P: "TransparencyFactor", "Number", "", "A",1
			P: "Emissive", "Vector3D", "Vector", "",0,0,0
			P: "Ambient", "Vector3D", "Vector", "",0,0,0
			P: "Diffuse", "Vector3D", "Vector", "",0.800000011920929,0,0
			P: "Opacity", "double", "Number", "",1
		}
	}

Note: As far as I can see all PBR materials that are supported by the Maya FBX exporter use this extension, which is at least the Stingray and Arnold shaders.

I've come across a couple of mentions that other apps besides Maya may have also adopted the maya| extension for PBR materials, but I haven't verified this. However, 3D Max uses it's own proprietary extension, which should be trivial to add once we've set up Maya's extension. .

Adding support for this will require some refactoring of the material system in the FBXLoader, but should be fairly straightforward.

If nobody else takes this on, I'll get round to it... someday 😁 In the meantime I'm putting the information up here so that if somebody else needs this they it will be as easy as possible for them to implement.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions