Bug 325423 - speed dynamic doesn't work
Summary: speed dynamic doesn't work
Alias: None
Product: krita
Classification: Applications
Component: Brush engines (show other bugs)
Version: git master (please specify the git hash!)
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
Depends on:
Reported: 2013-09-29 14:23 UTC by Bollebib
Modified: 2015-06-22 13:27 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Note You need to log in before you can comment on or make changes to this bug.
Description Bollebib 2013-09-29 14:23:56 UTC
I'm trying to use the dynamic "speed" in some brushes but it doesn't seem to be doing anything,
the curve doesn't seem to be affecting it

speed is mainly used for pen-like brushes,I think
quick stroke ->thinner line (size)
slow stroke ->thicker line (size)

but it doesn't work.
Comment 1 Halla Rempt 2014-01-04 10:33:36 UTC
Yes, this definitely seems to be broken.
Comment 2 Halla Rempt 2014-01-28 11:27:58 UTC
Right, for 2.8 we'll have to disable it.
Comment 3 wolthera 2014-05-03 15:16:48 UTC
This bug is even worse now that the add-up of sensors actually works! Any brush that has speed ticked, now will barely input anything for that sensor.

I expect a lot of brushes to be broken with 2.9.
Comment 4 wolthera 2014-05-03 15:20:39 UTC
Oh, forgot to add, but this should be useful to know. The speed sensor does work on the calligraphy tool(accessed with the 'thinning' parameter), and the hairy-brush engine(where it's used in 'mouse-pressure').

So there's bits of Krita where the speed-sensor code does work, it just doesn't work in the most important part.
Comment 5 Dmitry Kazakov 2015-06-22 13:27:52 UTC
Git commit f3d76c6c37eb3be3a618eaf890a75586b4f2b9b4 by Dmitry Kazakov.
Committed on 22/06/2015 at 13:26.
Pushed by dkazakov into branch 'calligra/2.9'.

[FEATURE] Make brush 'speed' sensor work

Implemented a complex smoothing algorithm for speed sensor,
which makes Speed work almost perfectly.

The smoothing is two-stage:
1) Calculate the distance of the path connecting last 10 points
   (but not longer than 300px).
2) Divide the distance by time value and smooth the result further
   with 10 previous values

M  +90   -37   krita/image/brushengine/kis_paint_information.cc
M  +19   -9    krita/image/brushengine/kis_paint_information.h
M  +1    -1    krita/image/tests/kis_paint_information_test.cpp
M  +1    -1    krita/libbrush/kis_auto_brush.cpp
M  +1    -1    krita/libbrush/tests/kis_auto_brush_test.cpp
M  +8    -8    krita/libbrush/tests/kis_brush_test.cpp
M  +3    -3    krita/libbrush/tests/kis_imagepipe_brush_test.cpp
M  +8    -8    krita/plugins/paintops/libpaintop/tests/kis_sensors_test.cpp
M  +1    -0    krita/ui/CMakeLists.txt
M  +28   -2    krita/ui/tool/kis_painting_information_builder.cpp
M  +6    -1    krita/ui/tool/kis_painting_information_builder.h
A  +120  -0    krita/ui/tool/kis_speed_smoother.cpp     [License: GPL (v2+)]
A  +40   -0    krita/ui/tool/kis_speed_smoother.h     [License: GPL (v2+)]
M  +1    -1    krita/ui/tool/kis_tool_freehand.cc