[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54651] trunk/blender/source/blender/ editors/transform/transform_generics.c: Bugfix [#34283] armature bones losing their roll setting upon translation in

Campbell Barton ideasman42 at gmail.com
Tue Feb 19 05:46:17 CET 2013


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 <aligorith at gmail.com> 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
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs



-- 
- Campbell


More information about the Bf-committers mailing list