Revision: 37605
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37605
Author:   phabtar
Date:     2011-06-17 20:01:24 +0000 (Fri, 17 Jun 2011)
Log Message:
-----------
unskinned armature import improved but unfinished.

Modified Paths:
--------------
    branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp
    branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h

Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp        
2011-06-17 19:48:26 UTC (rev 37604)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp        
2011-06-17 20:01:24 UTC (rev 37605)
@@ -383,7 +383,22 @@
 
                create_unskinned_bone(*ri, NULL, 
(*ri)->getChildNodes().getCount(), NULL, (bArmature*)ob_arm->data);
 
+               fix_leaf_bones();
+
+       // exit armature edit mode
+       
+
+       if (joint_parent_map.find((*ri)->getUniqueId()) != 
joint_parent_map.end() && ob_arm->parent!=NULL)
+               ob_arm->parent = joint_parent_map[(*ri)->getUniqueId()];
+       
+       unskinned_armature_map[(*ri)->getUniqueId()] = ob_arm;
+
+       ED_armature_from_edit(ob_arm);
+       ED_armature_edit_free(ob_arm);
+       DAG_id_tag_update(&ob_arm->id, OB_RECALC_OB|OB_RECALC_DATA);
        }
+
+       
 }
 
 void ArmatureImporter::create_armature_bones(SkinInfo& skin)
@@ -558,9 +573,7 @@
                skin.free();
        }
 
-       //if skin_by_data_uid is empty 
-       if( skin_by_data_uid.empty() )
-               create_armature_bones();
+       create_armature_bones();
 
 }
 
@@ -657,6 +670,11 @@
                        return skin.get_armature();
        }
 
+       std::map<COLLADAFW::UniqueId, Object*>::iterator arm;
+       for (arm = unskinned_armature_map.begin(); arm != 
unskinned_armature_map.end(); arm++) {
+               if(arm->first == node->getUniqueId() )
+                       return arm->second;
+       }
        return NULL;
 }
 

Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h  
2011-06-17 19:48:26 UTC (rev 37604)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h  
2011-06-17 20:01:24 UTC (rev 37605)
@@ -89,6 +89,7 @@
        std::map<COLLADAFW::UniqueId, COLLADAFW::Node*> joint_by_uid; // 
contains all joints
        std::vector<COLLADAFW::Node*> root_joints;
        std::map<COLLADAFW::UniqueId, Object*> joint_parent_map;
+       std::map<COLLADAFW::UniqueId, Object*> unskinned_armature_map;
 
        MeshImporterBase *mesh_importer;
        AnimationImporterBase *anim_importer;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to