Humn, I really wish drivers didn't create anything. The vast majority
of drivers do not use mapping other than 1-1 (in my experience). I'd
prefer an easy way to add 1-1 curve when the user wants to instead of
doing stuff the user never asked for!

cheers
Daniel Salazar
patazstudio.com


On Mon, Sep 2, 2013 at 6:28 PM, Joshua Leung <aligor...@gmail.com> wrote:
> Revision: 59757
>           
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59757
> Author:   aligorith
> Date:     2013-09-03 00:28:23 +0000 (Tue, 03 Sep 2013)
> Log Message:
> -----------
> Tweaks to New Driver creation behaviour
>
> * 'Show Debug' now enabled for all newly created drivers. For most users, it 
> is
> useful to be able to see this to help figure out what's going on
>
> * Removed failed experiment of creating new drivers with Generator 
> FModifiers. I
> had hoped that this would make it easier to create drivers that doubled or
> halved the input values, but that has proved to not be the case, and instead
> made harder for most users to set things up (as they'd have to remove these
> first).
>
> Now, when adding drivers from the UI, these get created with two keyframes (at
> (0,0) and (1,1) for a 1-1 mapping), which can be easily tweaked normally.
>
> However, for backwards compatability of scripts (notably rigify, and perhaps
> some others out there), when creating drivers from scripts, they will still 
> get
> created with Generator FModifiers for now. We can review this situation again
> for 2.7, but for now it seems ok.
>
> Modified Paths:
> --------------
>     trunk/blender/source/blender/editors/animation/drivers.c
>     trunk/blender/source/blender/editors/animation/keyframing.c
>     trunk/blender/source/blender/editors/include/ED_keyframing.h
>     trunk/blender/source/blender/python/intern/bpy_rna_anim.c
>
> Modified: trunk/blender/source/blender/editors/animation/drivers.c
> ===================================================================
> --- trunk/blender/source/blender/editors/animation/drivers.c    2013-09-02 
> 23:32:21 UTC (rev 59756)
> +++ trunk/blender/source/blender/editors/animation/drivers.c    2013-09-03 
> 00:28:23 UTC (rev 59757)
> @@ -75,7 +75,8 @@
>   * for the given Animation Data block. This assumes that all the 
> destinations are valid.
>   *
>   *     - add:  0 - don't add anything if not found,
> - *                     1 - add new Driver FCurve,
> + *                     1 - add new Driver FCurve (with keyframes for visual 
> tweaking),
> + *                     2 - add new Driver FCurve (with generator, for script 
> backwards compatability)
>   *                     -1 - add new Driver FCurve without driver stuff (for 
> pasting)
>   */
>  FCurve *verify_driver_fcurve(ID *id, const char rna_path[], const int 
> array_index, short add)
> @@ -114,11 +115,38 @@
>
>                 /* if add is negative, don't init this data yet, since it 
> will be filled in by the pasted driver */
>                 if (add > 0) {
> +                       BezTriple *bezt;
> +                       size_t i;
> +
>                         /* add some new driver data */
>                         fcu->driver = MEM_callocN(sizeof(ChannelDriver), 
> "ChannelDriver");
> +                       fcu->driver->flag |= DRIVER_FLAG_SHOWDEBUG;
>
> -                       /* add simple generator modifier for driver so that 
> there is some visible representation */
> -                       add_fmodifier(&fcu->modifiers, 
> FMODIFIER_TYPE_GENERATOR);
> +                       /* F-Modifier or Keyframes? */
> +                       // FIXME: replace these magic numbers with defines
> +                       if (add == 2) {
> +                               /* Python API Backwards compatability hack:
> +                                * Create FModifier so that old scripts won't 
> break
> +                                * for now before 2.7 series -- (September 4, 
> 2013)
> +                                */
> +                               add_fmodifier(&fcu->modifiers, 
> FMODIFIER_TYPE_GENERATOR);
> +                       }
> +                       else {
> +                               /* add 2 keyframes so that user has something 
> to work with
> +                                * - These are configured to 0,0 and 1,1 to 
> give a 1-1 mapping
> +                                *   which can be easily tweaked from there.
> +                                */
> +                               insert_vert_fcurve(fcu, 0.0f, 0.0f, 
> INSERTKEY_FAST);
> +                               insert_vert_fcurve(fcu, 1.0f, 1.0f, 
> INSERTKEY_FAST);
> +
> +                               /* configure this curve to extrapolate */
> +                               for (i = 0, bezt = fcu->bezt;  (i < 
> fcu->totvert) && bezt;  i++, bezt++) {
> +                                       bezt->h1 = bezt->h2 = HD_VECT;
> +                               }
> +
> +                               fcu->extend = FCURVE_EXTRAPOLATE_LINEAR;
> +                               calchandles_fcurve(fcu);
> +                       }
>                 }
>
>                 /* just add F-Curve to end of driver list */
> @@ -166,8 +194,10 @@
>
>         /* will only loop once unless the array index was -1 */
>         for (; array_index < array_index_max; array_index++) {
> +               short add_mode = (flag & CREATEDRIVER_WITH_FMODIFIER) ? 2 : 1;
> +
>                 /* create F-Curve with Driver */
> -               fcu = verify_driver_fcurve(id, rna_path, array_index, 1);
> +               fcu = verify_driver_fcurve(id, rna_path, array_index, 
> add_mode);
>
>                 if (fcu && fcu->driver) {
>                         ChannelDriver *driver = fcu->driver;
>
> Modified: trunk/blender/source/blender/editors/animation/keyframing.c
> ===================================================================
> --- trunk/blender/source/blender/editors/animation/keyframing.c 2013-09-02 
> 23:32:21 UTC (rev 59756)
> +++ trunk/blender/source/blender/editors/animation/keyframing.c 2013-09-03 
> 00:28:23 UTC (rev 59757)
> @@ -256,7 +256,7 @@
>                                 dst->f1 = bezt->f1;
>                                 dst->f2 = bezt->f2;
>                                 dst->f3 = bezt->f3;
> -
> +
>                                 /* TODO: perform some other operations? */
>                         }
>                 }
>
> Modified: trunk/blender/source/blender/editors/include/ED_keyframing.h
> ===================================================================
> --- trunk/blender/source/blender/editors/include/ED_keyframing.h        
> 2013-09-02 23:32:21 UTC (rev 59756)
> +++ trunk/blender/source/blender/editors/include/ED_keyframing.h        
> 2013-09-03 00:28:23 UTC (rev 59757)
> @@ -222,6 +222,7 @@
>  /* Flags for use by driver creation calls */
>  typedef enum eCreateDriverFlags {
>         CREATEDRIVER_WITH_DEFAULT_DVAR  = (1 << 0),   /* create drivers with 
> a default variable for nicer UI */
> +       CREATEDRIVER_WITH_FMODIFIER     = (1 << 1),   /* create drivers with 
> Generator FModifier (for backwards compat) */
>  } eCreateDriverFlags;
>
>  /* -------- */
>
> Modified: trunk/blender/source/blender/python/intern/bpy_rna_anim.c
> ===================================================================
> --- trunk/blender/source/blender/python/intern/bpy_rna_anim.c   2013-09-02 
> 23:32:21 UTC (rev 59756)
> +++ trunk/blender/source/blender/python/intern/bpy_rna_anim.c   2013-09-03 
> 00:28:23 UTC (rev 59757)
> @@ -312,7 +312,8 @@
>
>                 BKE_reports_init(&reports, RPT_STORE);
>
> -               result = ANIM_add_driver(&reports, (ID *)self->ptr.id.data, 
> path_full, index, 0, DRIVER_TYPE_PYTHON);
> +               result = ANIM_add_driver(&reports, (ID *)self->ptr.id.data, 
> path_full, index,
> +                                        CREATEDRIVER_WITH_FMODIFIER, 
> DRIVER_TYPE_PYTHON);
>
>                 if (BPy_reports_to_error(&reports, PyExc_RuntimeError, true) 
> == -1)
>                         return NULL;
>
> _______________________________________________
> Bf-blender-cvs mailing list
> bf-blender-...@blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
_______________________________________________
Bf-committers mailing list
Bf-committers@blender.org
http://lists.blender.org/mailman/listinfo/bf-committers

Reply via email to