Revision: 44419
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44419
Author:   kanttori
Date:     2012-02-24 21:45:59 +0000 (Fri, 24 Feb 2012)
Log Message:
-----------
Collada export: bone parenting is actually against the tail.

Don't know the reasoning for having it be against the tail and not the head.

Modified Paths:
--------------
    trunk/blender/source/blender/collada/ArmatureExporter.cpp

Modified: trunk/blender/source/blender/collada/ArmatureExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/ArmatureExporter.cpp   2012-02-24 
21:15:58 UTC (rev 44418)
+++ trunk/blender/source/blender/collada/ArmatureExporter.cpp   2012-02-24 
21:45:59 UTC (rev 44419)
@@ -196,33 +196,34 @@
                if((*i)->partype == PARBONE && (0 == strcmp((*i)->parsubstr, 
bone->name)))
                {
                        float backup_parinv[4][4];
+                       copy_m4_m4(backup_parinv, (*i)->parentinv);
 
-                       // SECOND_LIFE_COMPATIBILITY
                        // crude, temporary change to parentinv
                        // so transform gets exported correctly.
+
+                       // Add bone tail- translation... don't know why
+                       // bone parenting is against the tail of a bone
+                       // and not it's head, seems arbitrary.
+                       (*i)->parentinv[3][1] += bone->length;
+
+                       // SECOND_LIFE_COMPATIBILITY
                        // TODO: when such objects are animated as
                        // single matrix the tweak must be applied
                        // to the result.
                        if(export_settings->second_life)
                        {
-                               copy_m4_m4(backup_parinv, (*i)->parentinv);
-                               // tweak objects parentinverse to match
-                               // the second life- compatibility
+                               // tweak objects parentinverse to match 
compatibility
                                float temp[4][4];
 
                                copy_m4_m4(temp, bone->arm_mat);
                                temp[3][0] = temp[3][1] = temp[3][2] = 0.0f;
 
-                               mult_m4_m4m4((*i)->parentinv, temp, 
backup_parinv);
+                               mult_m4_m4m4((*i)->parentinv, temp, 
(*i)->parentinv);
                        }
 
                        se->writeNodes(*i, sce);
 
-                       // restore original parentinv
-                       if(export_settings->second_life)
-                       {
-                               copy_m4_m4((*i)->parentinv, backup_parinv);
-                       }
+                       copy_m4_m4((*i)->parentinv, backup_parinv);
                        child_objects.erase(i++);
                }
                else i++;

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

Reply via email to