@@ -755,6 +755,8 @@ private bool IsBone(Transform t, Dictionary<Transform, int> bones){
755
755
return false ;
756
756
}
757
757
758
+ private Dictionary < SkinnedMeshRenderer , Transform [ ] > SkinnedMeshToBonesMap = new Dictionary < SkinnedMeshRenderer , Transform [ ] > ( ) ;
759
+
758
760
/// <summary>
759
761
/// Export bones of skinned mesh, if this is a skinned mesh with
760
762
/// bones and bind poses.
@@ -837,6 +839,7 @@ private bool ExportSkeleton (SkinnedMeshRenderer skinnedMesh, FbxScene fbxScene)
837
839
}
838
840
839
841
// Get bindposes
842
+ SkinnedMeshToBonesMap . Add ( skinnedMesh , boneList ) ;
840
843
var boneToBindPose = new Dictionary < Transform , Matrix4x4 > ( ) ;
841
844
for ( int boneIndex = 0 , n = boneList . Length ; boneIndex < n ; boneIndex ++ ) {
842
845
var unityBone = boneList [ boneIndex ] ;
@@ -986,8 +989,12 @@ protected bool ExportBindPose (SkinnedMeshRenderer skinnedMesh, FbxNode fbxMeshN
986
989
fbxPose . SetIsBindPose ( true ) ;
987
990
988
991
// assume each bone node has one weighted vertex cluster
989
- for ( int i = 0 ; i < skinnedMesh . bones . Length ; i ++ ) {
990
- FbxNode fbxBoneNode = MapUnityObjectToFbxNode [ skinnedMesh . bones [ i ] . gameObject ] ;
992
+ Transform [ ] bones ;
993
+ if ( ! SkinnedMeshToBonesMap . TryGetValue ( skinnedMesh , out bones ) ) {
994
+ return false ;
995
+ }
996
+ for ( int i = 0 ; i < bones . Length ; i ++ ) {
997
+ FbxNode fbxBoneNode = MapUnityObjectToFbxNode [ bones [ i ] . gameObject ] ;
991
998
992
999
// EvaluateGlobalTransform returns an FbxAMatrix (affine matrix)
993
1000
// which has to be converted to an FbxMatrix so that it can be passed to fbxPose.Add().
0 commit comments