Animation Bugfixes - Noise Modifier + Graph Editor:
authorJoshua Leung <aligorith@gmail.com>
Mon, 26 Oct 2009 11:10:04 +0000 (11:10 +0000)
committerJoshua Leung <aligorith@gmail.com>
Mon, 26 Oct 2009 11:10:04 +0000 (11:10 +0000)
* #19727: Noise modifier does nothing with size 1.0
When the 'Size' and 'Phase' parameters were both 1.0 exactly, and evaltime was an integer (as is the case when doing animation evaluation but not for Graph Editor drawing), the noise calculation function was bailing out. Now, the 'z' component supplied to this function is a decimal value (hardcoded to 0.1 after experimentation) to try and avoid this situation.

* Graph Editor 'Bake' operator was using wrong poll callback, making it useless when trying to use it on a F-Curve that only has modifiers on it (i.e. the main use case of the operator!)

source/blender/blenkernel/intern/fmodifier.c
source/blender/editors/space_graph/graph_edit.c

index 64558d0b4567303fcac9a474e96ed79f29c9c206..4e79f6238b51e1653ec171785aeb0bed18a7088b 100644 (file)
@@ -715,8 +715,13 @@ static void fcm_noise_evaluate (FCurve *fcu, FModifier *fcm, float *cvalue, floa
        FMod_Noise *data= (FMod_Noise *)fcm->data;
        float noise;
        
-       noise = BLI_turbulence(data->size, evaltime, data->phase, 0.f, data->depth);
+       /* generate noise using good ol' Blender Noise
+        *      - 0.1 is passed as the 'z' value, otherwise evaluation fails for size = phase = 1
+        *        with evaltime being an integer (which happens when evaluating on frame by frame basis)
+        */
+       noise = BLI_turbulence(data->size, evaltime, data->phase, 0.1f, data->depth);
        
+       /* combine the noise with existing motion data */
        switch (data->modification) {
                case FCM_NOISE_MODIF_ADD:
                        *cvalue= *cvalue + noise * data->strength;
index 442b44bb482c14c2c213f72e5863b99b0ed34987..b467d7b4ca0611379e028df3556cfb582b572186 100644 (file)
@@ -976,7 +976,7 @@ void GRAPH_OT_bake (wmOperatorType *ot)
        /* api callbacks */
        ot->invoke= WM_operator_confirm; // FIXME...
        ot->exec= graphkeys_bake_exec;
-       ot->poll= graphop_editable_keyframes_poll;
+       ot->poll= graphop_selected_fcurve_poll; 
        
        /* flags */
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;