1) The first dab is much bigger than the others 2) There is no way to choose the scale of the speed (e.g. how it is done for Distance sensor), so the the curve saturates on really slow speeds. I mean to see the effect of the curve you need to move your pointer veeeery slooowly.
Related bugs: o 251374 o 234308 I work on this bugs. First part of the solution is to move the computation of the speed to the tool (out of sensor) and compute speed even in hover mode when the stroke is not painting. It is still unstable - the speed is not smooth even when doing something similar like mypaint does, so I will have to explore it in more depth.
Btw, i've changed KisToolFreehand, KisToolBrush and KisToolDyna very much in my branch. All the computation is moved to KisToolFreehandHelper. So i guess it would be better if you based your changes on the helper.
Any news on this? Im on 2.7 alpha still having some difficulties with speed. I'm trying to set up a nice brush with scattering and speed but it turns out to be impossible. Speed is very sensitive. Is it planned to add a slider or value box below the curve as it is already for time and distance? I made a short video. What I do in mypaint I try to replicate in Krita but speed sensitivity is an issue. http://youtu.be/jqjg5xVWb98 Mypaint dabs are cool, but gbr bitmap brushes with textures are much better.
The problem seems to be related to the fact that the speed is calculated using KisPaintInformation::movement() value, which gets inconsistent somewhere in the region of KisPaintOp::paintBezierCurve(). The resulting movement value gets wrong, that is why 'Speed' and 'Drawing Angle' sensors work insanely.
Git commit 1da74f325476c83b7db60dd39d1ce108a9f4d1d5 by Dmitry Kazakov. Committed on 03/08/2013 at 19:18. Pushed by dkazakov into branch 'master'. Fixed Speed, Distance and Drawing Angle sensors This patch makes the following user-visible changes: 1) Speed and Distance sensors are fixed 2) Drawing Angle sensor became much more stable and smooth 3) Drawing Angle sensor works right on the rotated canvas Technical details: This patch hugely refactors the distance information part of our painting system. The two most significant changes: 1) KisPaintInformation doesn't have movement() method, because it used to get inconsistent *very* fast when the lien was split into chunks in paintBezierCurve. The access to drawingDistance(), drawingAngle() and drawingSpeep() parameters is provided only by means of teh associated KisDistanceInformation. 2) (follows from the point 1) From now on paintAt() function also accepts KisDistanceInformation object, because otherwise it will not be able to access the calculated parameters. Related: bug 321771, bug 308408 M +3 -1 krita/benchmarks/kis_low_memory_benchmark.cpp M +25 -23 krita/benchmarks/kis_stroke_benchmark.cpp M +67 -30 krita/image/brushengine/kis_paint_information.cc M +27 -8 krita/image/brushengine/kis_paint_information.h M +34 -34 krita/image/brushengine/kis_paintop.cc M +18 -11 krita/image/brushengine/kis_paintop.h M +39 -10 krita/image/kis_distance_information.cpp M +11 -2 krita/image/kis_distance_information.h M +29 -0 krita/image/kis_global.h M +23 -23 krita/image/kis_painter.cc M +10 -9 krita/image/kis_painter.h M +4 -6 krita/image/recorder/kis_recorded_path_paint_action.cpp M +6 -4 krita/image/tests/kis_paint_information_test.cpp M +3 -7 krita/plugins/paintops/curvebrush/kis_curve_paintop.cpp M +1 -1 krita/plugins/paintops/curvebrush/kis_curve_paintop.h M +3 -4 krita/plugins/paintops/defaultpaintops/brush/kis_brushop.cpp M +1 -1 krita/plugins/paintops/defaultpaintops/brush/kis_brushop.h M +6 -6 krita/plugins/paintops/dynadraw/kis_dyna_paintop.cpp M +1 -1 krita/plugins/paintops/dynadraw/kis_dyna_paintop.h M +3 -4 krita/plugins/paintops/experiment/kis_experiment_paintop.cpp M +1 -1 krita/plugins/paintops/experiment/kis_experiment_paintop.h M +3 -7 krita/plugins/paintops/hairy/kis_hairy_paintop.cpp M +1 -1 krita/plugins/paintops/hairy/kis_hairy_paintop.h M +1 -1 krita/plugins/paintops/libbrush/kis_auto_brush.cpp M +2 -2 krita/plugins/paintops/libbrush/kis_brush.cpp M +5 -11 krita/plugins/paintops/libbrush/kis_imagepipe_brush.cpp M +1 -2 krita/plugins/paintops/libbrush/tests/kis_auto_brush_test.cpp M +8 -16 krita/plugins/paintops/libbrush/tests/kis_brush_test.cpp M +3 -6 krita/plugins/paintops/libbrush/tests/kis_imagepipe_brush_test.cpp M +5 -0 krita/plugins/paintops/libpaintop/kis_dynamic_sensor.cc M +1 -0 krita/plugins/paintops/libpaintop/kis_dynamic_sensor.h M +5 -2 krita/plugins/paintops/libpaintop/kis_pressure_rotation_option.cpp M +6 -10 krita/plugins/paintops/libpaintop/kis_pressure_scatter_option.cpp M +9 -13 krita/plugins/paintops/libpaintop/sensors/kis_dynamic_sensor_distance.cc M +1 -1 krita/plugins/paintops/libpaintop/sensors/kis_dynamic_sensor_distance.h M +9 -2 krita/plugins/paintops/libpaintop/sensors/kis_dynamic_sensor_list.cc M +2 -1 krita/plugins/paintops/libpaintop/sensors/kis_dynamic_sensor_list.h M +22 -12 krita/plugins/paintops/libpaintop/sensors/kis_dynamic_sensors.cc M +1 -0 krita/plugins/paintops/libpaintop/sensors/kis_dynamic_sensors.h M +8 -8 krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp M +3 -6 krita/plugins/paintops/mypaint/mypaint_paintop.cpp M +1 -1 krita/plugins/paintops/mypaint/mypaint_paintop.h M +6 -7 krita/plugins/paintops/particle/kis_particle_paintop.cpp M +1 -1 krita/plugins/paintops/particle/kis_particle_paintop.h M +7 -8 krita/plugins/paintops/sketch/kis_sketch_paintop.cpp M +1 -1 krita/plugins/paintops/sketch/kis_sketch_paintop.h M +1 -1 krita/plugins/paintops/spray/spray_brush.cpp M +0 -2 krita/plugins/tools/defaulttools/kis_tool_line.cc M +3 -11 krita/ui/tool/kis_painting_information_builder.cpp M +0 -2 krita/ui/tool/kis_painting_information_builder.h M +2 -3 krita/ui/tool/kis_tool_freehand.cc M +24 -12 krita/ui/tool/kis_tool_freehand_helper.cpp M +3 -1 krita/ui/tool/kis_tool_freehand_helper.h M +6 -2 krita/ui/tool/kis_tool_multihand_helper.cpp M +3 -1 krita/ui/tool/kis_tool_multihand_helper.h M +7 -10 krita/ui/tool/strokes/freehand_stroke.cpp http://commits.kde.org/calligra/1da74f325476c83b7db60dd39d1ce108a9f4d1d5