BlendShapes "No name" import bug.

Sometimes when you importing a model with the blendshapes unity lost their names and it appear like “no name 1”, “no name 2”, e.t.c. I read some topics with advices to downgrade the fbx version to the 2011. Doesn’t help in my case. I checked it with Maya 2016, 2016ext2, 2017 + Unity 5.3, 5.4, 5.5 + all .fbx from 2010 to 2016/2017. Also I used direct import of .mb/.ma files with the same result. Here is what I found:
I create a cube model with 4 blendshapes. There is a code from the .ma model, ascii code represent the blends creation part.
setAttr “.tgdt[0].cid” -type “Int32Array” 4 0 1 2 3 ;
setAttr “.aal” -type “attributeAlias” {“q1”,“weight[0]”,“q2”,“weight[1]”,“q3”,“weight[2]” ,“q4”,“weight[3]”} ;
While the index in array grows from 0+ it works fine. All the names are exported properly.


If you delete a blendshape from end of the list or add some new blendshapes it still will be fine. Everything is ok while the blendshape index grows in right order. But if you delete a first blendshape and the index order will be broken - unity names will be broken from this point.

Here is how the .ma file looks now, when we delete the “zero” blendhsape:
setAttr “.tgdt[0].cid” -type “Int32Array” 3 1 2 3 ;
setAttr “.aal” -type “attributeAlias” {“q2”,“weight[1]”,“q3”,“weight[2]”,“q4”,“weight[3]” } ;
If you merging blendshapes or deleting it from the middle of the list you will get a mess with the indexes and it will be a bunch of “no name” blendshapes in unity:
setAttr “.tgdt[0].cid” -type “Int32Array” 5 1 7 4 5 6 ;
setAttr “.aal” -type “attributeAlias” {“q2”,“weight[1]”,“q5”,“weight[4]”,“q6”,“weight[5]” ,“q7”,“weight[6]”,“q3”,“weight[7]”} ;

I’m running into the same thing at the moment.

I worked around it by rebuilding the Blendshape node from the “final” targets (I did it manually, but you could script it) in order to make sure the indices are sequential.

But it is definitely something Unity should be able to import correctly - the blendShape target name data is there in the FBX file, just Unity is not applying it correctly.

I’ve run into this problem a lot, using 3DS Max–>FBX–> Unity workflow.

What I usually end up doing is to export my object from Max in FBX, then RE-IMPORT the exported FBX into a new Max file and Export it again as FBX. Then import the second FBX into Unity.

It’s a bit convoluted to have to do this and I have no idea whether the bug is with Unity or Max, but the above tip so far has worked for me 100% of the time. It’s only one extra hoop to jump through and isn’t any effort at all really… the only problem is REMEMBERING to do it :smile: