[#34541] Sketching bones created bones with 0 radius for envelope
authorJoshua Leung <aligorith@gmail.com>
Fri, 8 Mar 2013 02:23:43 +0000 (02:23 +0000)
committerJoshua Leung <aligorith@gmail.com>
Fri, 8 Mar 2013 02:23:43 +0000 (02:23 +0000)
This commit is just a stopgap measure (i.e. it fixes the symptoms but not the
real underlying cause) of this bug. For some reason, iter->size is nearly always
an "effectively zero but not truly zero" value. Hence, the envelope sizes would
get adjusted, but would be scaled to an impossibly small value (taken from
iter->size).

From my investigations so far, iter->size is mostly either set to (or left as)
0, except in a rare case when dealing with volume snapping, when the values
somehow get propagated there from various intermediate data points. But, that
almost never works either.

source/blender/editors/armature/editarmature_generate.c

index 89772d3..bade93a 100644 (file)
@@ -263,7 +263,7 @@ EditBone *subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *U
        parent = ED_armature_edit_bone_add(arm, "Bone");
        copy_v3_v3(parent->head, iter->p);
        
-       if (iter->size > 0) {
+       if (iter->size > FLT_EPSILON) {
                parent->rad_head = iter->size * size_buffer;
        }
        
@@ -278,7 +278,7 @@ EditBone *subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *U
                child->parent = parent;
                child->flag |= BONE_CONNECTED;
                
-               if (iter->size > 0) {
+               if (iter->size > FLT_EPSILON) {
                        child->rad_head = iter->size * size_buffer;
                        parent->rad_tail = iter->size * size_buffer;
                }
@@ -299,7 +299,7 @@ EditBone *subdivideArcBy(ToolSettings *toolsettings, bArmature *arm, ListBase *U
        iter->tail(iter);
 
        copy_v3_v3(parent->tail, iter->p);
-       if (iter->size > 0) {
+       if (iter->size > FLT_EPSILON) {
                parent->rad_tail = iter->size * size_buffer;
        }