Revision: 38740
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38740
Author:   phabtar
Date:     2011-07-26 18:28:07 +0000 (Tue, 26 Jul 2011)
Log Message:
-----------
Blender profile leaf bone tip import.  

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

Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp        
2011-07-26 17:42:57 UTC (rev 38739)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.cpp        
2011-07-26 18:28:07 UTC (rev 38740)
@@ -145,7 +145,7 @@
 
                // treat zero-sized bone like a leaf bone
                if (length <= epsilon) {
-                       add_leaf_bone(parent_mat, parent);
+                       add_leaf_bone(parent_mat, parent, node);
                }
 
        }
@@ -157,7 +157,8 @@
 
        // in second case it's not a leaf bone, but we handle it the same way
        if (!children.getCount() || children.getCount() > 1) {
-               add_leaf_bone(mat, bone);
+
+               add_leaf_bone(mat, bone, node);
        }
 
 }
@@ -220,7 +221,7 @@
 
                // treat zero-sized bone like a leaf bone
                if (length <= epsilon) {
-                       add_leaf_bone(parent_mat, parent);
+                       add_leaf_bone(parent_mat, parent, node);
                }
 
                /*
@@ -258,22 +259,35 @@
 
        // in second case it's not a leaf bone, but we handle it the same way
        if (!children.getCount() || children.getCount() > 1) {
-               add_leaf_bone(mat, bone);
+               add_leaf_bone(mat, bone , node);
        }
 }
 
-void ArmatureImporter::add_leaf_bone(float mat[][4], EditBone *bone)
+void ArmatureImporter::add_leaf_bone(float mat[][4], EditBone *bone,  
COLLADAFW::Node * node)
 {
        LeafBone leaf;
 
        leaf.bone = bone;
        copy_m4_m4(leaf.mat, mat);
        BLI_strncpy(leaf.name, bone->name, sizeof(leaf.name));
-
+    
+       TagsMap::iterator etit;
+       ExtraTags *et = 0;
+       etit = uid_tags_map.find(node->getUniqueId().toAscii());
+       if(etit !=  uid_tags_map.end())
+       et = etit->second;
+    
+       float x,y,z;
+       et->setData("tip_x",&x);
+       et->setData("tip_y",&y);
+       et->setData("tip_z",&z);
+       float vec[3] = {x,y,z};
+    copy_v3_v3(leaf.bone->tail, leaf.bone->head);
+       add_v3_v3v3(leaf.bone->tail, leaf.bone->head, vec);
        leaf_bones.push_back(leaf);
 }
 
-void ArmatureImporter::fix_leaf_bones()
+void ArmatureImporter::fix_leaf_bones( )
 {
        // just setting tail for leaf bones here
 
@@ -283,7 +297,7 @@
 
                // pointing up
                float vec[3] = {0.0f, 0.0f, 1.0f};
-
+        
                mul_v3_fl(vec, leaf_bone_length);
 
                copy_v3_v3(leaf.bone->tail, leaf.bone->head);
@@ -407,7 +421,7 @@
      leaf_bone_length = FLT_MAX;
                create_unskinned_bone(*ri, NULL, 
(*ri)->getChildNodes().getCount(), NULL, ob_arm);
 
-               fix_leaf_bones();
+               //fix_leaf_bones();
 
        // exit armature edit mode
        
@@ -750,6 +764,11 @@
        return NULL;
 }
 
+void ArmatureImporter::set_tags_map(TagsMap & tagsMap)
+{
+    this->uid_tags_map = tagsMap;
+}
+
 void ArmatureImporter::get_rna_path_for_joint(COLLADAFW::Node *node, char 
*joint_path, size_t count)
 {
        BLI_snprintf(joint_path, count, "pose.bones[\"%s\"]", 
bc_get_joint_name(node));
@@ -771,3 +790,5 @@
        return found;
 }
 
+
+

Modified: branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h  
2011-07-26 17:42:57 UTC (rev 38739)
+++ branches/soc-2011-pepper/source/blender/collada/ArmatureImporter.h  
2011-07-26 18:28:07 UTC (rev 38740)
@@ -46,6 +46,7 @@
 #include "MeshImporter.h"
 #include "SkinInfo.h"
 #include "TransformReader.h"
+#include "ExtraTags.h"
 
 #include <map>
 #include <vector>
@@ -109,7 +110,7 @@
        void create_unskinned_bone(COLLADAFW::Node *node, EditBone *parent, int 
totchild,
                                 float parent_mat[][4], Object * ob_arm);
 
-       void add_leaf_bone(float mat[][4], EditBone *bone);
+       void add_leaf_bone(float mat[][4], EditBone *bone, COLLADAFW::Node * 
node);
 
        void fix_leaf_bones();
        
@@ -132,6 +133,9 @@
        void create_armature_bones(SkinInfo& skin);
        void create_armature_bones( );
 
+       /** TagsMap typedef for uid_tags_map. */
+       typedef std::map<std::string, ExtraTags*> TagsMap;
+       TagsMap uid_tags_map;
 public:
 
        ArmatureImporter(UnitConverter *conv, MeshImporterBase *mesh, 
AnimationImporterBase *anim, Scene *sce);
@@ -166,7 +170,8 @@
        
        // gives a world-space mat
        bool get_joint_bind_mat(float m[][4], COLLADAFW::Node *joint);
-
+    
+       void set_tags_map( TagsMap& tags_map);
        
 };
 

Modified: branches/soc-2011-pepper/source/blender/collada/DocumentImporter.cpp
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/DocumentImporter.cpp        
2011-07-26 17:42:57 UTC (rev 38739)
+++ branches/soc-2011-pepper/source/blender/collada/DocumentImporter.cpp        
2011-07-26 18:28:07 UTC (rev 38740)
@@ -190,7 +190,7 @@
                        write_node(roots[i], NULL, sce, NULL, false);
                }
        }
-
+       armature_importer.set_tags_map(this->uid_tags_map);
        armature_importer.make_armatures(mContext);
 
 #if 0

Modified: branches/soc-2011-pepper/source/blender/collada/DocumentImporter.h
===================================================================
--- branches/soc-2011-pepper/source/blender/collada/DocumentImporter.h  
2011-07-26 17:42:57 UTC (rev 38739)
+++ branches/soc-2011-pepper/source/blender/collada/DocumentImporter.h  
2011-07-26 18:28:07 UTC (rev 38740)
@@ -47,9 +47,9 @@
 #include "AnimationImporter.h"
 #include "ArmatureImporter.h"
 #include "MeshImporter.h"
-#include "ExtraTags.h"
 
 
+
 struct Main;
 struct bContext;
 

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

Reply via email to