3DS Max FBX Import + Export - Removing my custom attributes (Reproducible)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I've encountered a scenario where my custom fbx attributes are being removed when importing an FBX file, then exporting to another FBX. I cannot tell whether its the import or export operation that is removing these attributes.
I created a test to try and reproduce the issue, but max imported and exported and kept the custom attribute I was interested in. I tried this with a single object, many objects (Sphere 1-n).
Eventually I found that if there are non-unique names, the attributes will be lost. If I have custom attributes on 6 nodes with the names "Sphere", "Sphere", "Sphere 1", "Sphere 2", "Sphere 3", "Sphere", then 2 of the 3 "Sphere" nodes will lose their attributes.
I've attached a zip with 4 files. All are in ascii for quick and easy inspection.
- ManySpheres-Original.fbx
Contains lots of spheres with lots of re-used names, i.e. "Child 0" to "Child 6".
- ManySpheres-MaxImportExport.fbx
Created after importing and then exporting the above original fbx.
Custom Attributes being lost here
- ManySpheresUniqueNames-Original.fbx
Same structure as the first file but node depth is added into the name of the nodes to make them more unique. Note: they are not globally unique.
- ManySpheresUniqueNames-MaxImportExport.fbx
The above file but imported into max and exported. The attributes are still there.
The attribute, "Fred" is being used.
In addition I am using the "UDP3DSMAX" attribute that 3ds max uses in addition to my custom attribute - to try and figure out what is happening. To my surprise this attribute is being retained in "ManySpheres-MaxImportExport.fbx".
The following node (among many) kept the UDP3DSMAX attribute value, but lost my "Fred" custom attribute.
Model: 2023267551824, "Model::Child 6", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "UDP3DSMAX", "KString", "", "U", "Fred = {254bf79d-0fa9-40de-983d-2c89ac6a1a34}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",16
}
Shading: T
Culling: "CullingOff"
}
However, as the above screenshot shows, there are 7 instances that did make it in the exported file (ManySpheres-MaxImportExport.fbx line 174125):
Model: 2023267543056, "Model::Child 0", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Lcl Rotation", "Lcl Rotation", "", "A",90.0000025044781,-0,0
P: "Lcl Scaling", "Lcl Scaling", "", "A",0.01,0.01,0.01
P: "Fred", "KString", "", "U", "{431b78a6-e383-4883-b84f-513ab2d3462d}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {97ce4d9f-ef3e-489c-8708-4253e15284a2}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",9
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267532096, "Model::Child 1", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Lcl Rotation", "Lcl Rotation", "", "A",2.03555499613665e-13,-0,0
P: "Fred", "KString", "", "U", "{5246d038-a918-4019-b6cc-fe2a445d04a3}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {1934539c-18b8-43df-a477-9f91ac862711}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",10
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267547440, "Model::Child 2", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Fred", "KString", "", "U", "{6f8faa01-d57c-4e22-b0ea-a1868d74b981}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {5a6af1b7-9f61-41cc-ab8d-ebb273e895b6}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",11
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267534288, "Model::Child 3", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Fred", "KString", "", "U", "{80a9e6c8-3922-4706-9413-979caae33fec}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {3cd456eb-7912-44b0-9939-8fb4b18ae7a4}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",12
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267536480, "Model::Child 4", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Fred", "KString", "", "U", "{fc90c78b-c374-40cf-9ea1-bb2f8cf64fe1}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {e90fe5d2-7ca1-4c87-b6fa-b6183b7399ea}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",13
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267545248, "Model::Child 5", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Fred", "KString", "", "U", "{e7f3bee8-5471-4d50-96cb-05aa80874f56}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {deb97436-19b9-430d-bc51-d8b651004878}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",14
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267549632, "Model::Child 6", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "Fred", "KString", "", "U", "{260c5c7f-7bc2-4d0f-ba91-873f54a8c7bb}"
P: "UDP3DSMAX", "KString", "", "U", "Fred = {78fbb7b2-b3cf-4367-929e-971258ddad21}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",15
}
Shading: T
Culling: "CullingOff"
}
Model: 2023267551824, "Model::Child 6", "Mesh" {
Version: 232
Properties70: {
P: "InheritType", "enum", "", "",1
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
P: "DefaultAttributeIndex", "int", "Integer", "",0
P: "UDP3DSMAX", "KString", "", "U", "Fred = {254bf79d-0fa9-40de-983d-2c89ac6a1a34}&cr;&lf;"
P: "MaxHandle", "int", "Integer", "UH",16
}
Shading: T
Culling: "CullingOff"
}
Notice that all 7 of those custom attributes are all together sequentially.