This fix isnt working here (roll still flips) added comment to the original report. Committed a fix r54653, since it doesn't conflict with yours.
Now I'm not sure if ztrans_hack is needed anymore, I tried removing it and wasn't able to redo [#33974]. On Tue, Feb 19, 2013 at 2:26 PM, Joshua Leung <[email protected]> wrote: > Revision: 54651 > > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54651 > Author: aligorith > Date: 2013-02-19 03:26:18 +0000 (Tue, 19 Feb 2013) > Log Message: > ----------- > Bugfix [#34283] armature bones losing their roll setting upon translation in > edit mode > > My earlier fix for [#33974] (in r.54061) was causing some problems where > manually specified roll values on horizontal or angled bones were getting > reset. > This could be nasty as you might not notice the changes for a while > (especially > when using stick bones without axes displayed). > > I've now put in place a hacky compromise solution which should catch both of > these situations nicely. For z-axis (i.e. vertical) movements, the r.54061 fix > is used, while for everything else (moving or just touch-n-go), the old > setting > is used. > > Modified Paths: > -------------- > trunk/blender/source/blender/editors/transform/transform_generics.c > > Modified: trunk/blender/source/blender/editors/transform/transform_generics.c > =================================================================== > --- trunk/blender/source/blender/editors/transform/transform_generics.c > 2013-02-19 02:48:14 UTC (rev 54650) > +++ trunk/blender/source/blender/editors/transform/transform_generics.c > 2013-02-19 03:26:18 UTC (rev 54651) > @@ -809,6 +809,7 @@ > if (td->extra) { > float vec[3], up_axis[3]; > float qrot[4]; > + bool ztrans_hack = false; > > ebo = td->extra; > copy_v3_v3(up_axis, > td->axismtx[2]); > @@ -823,7 +824,25 @@ > mul_m3_v3(t->mat, > up_axis); > } > > - ebo->roll = > ED_rollBoneToVector(ebo, up_axis, TRUE); > + /* "ztrans_hack" is a hacky > compromise fix for two bug reports > + * - [#33974] : When > extruding/translating bones vertically, > + * the roll of > each bone in such vertical chains would > + * flip between > z-axis forward and z-axis backwards > + * - [#34283] : For "normal" > transforms, the original fix for [#33974] > + * would cause > manually-set roll values on horizontal and > + * diagonal > bones to constantly get reset to values the system > + * deems > "correct" (usually 180 degree flips of the manual version) > + */ > + if (t->mode == > TFM_TRANSLATION) { > + const float > ZAXIS_REF[3] = {0.0f, 0.0f, 1.0f}; > + float tdelta[3]; > + > + /* tdelta is the > translation - enable this hack when it is z-axis movement */ > + > normalize_v3_v3(tdelta, t->values); > + ztrans_hack = > compare_v3v3(tdelta, ZAXIS_REF, 0.1f); > + } > + > + ebo->roll = > ED_rollBoneToVector(ebo, up_axis, ztrans_hack); > } > } > } > > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs -- - Campbell _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
