Bug 279442 - Speed sensor works strange
Summary: Speed sensor works strange
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Brush engines (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-05 12:08 UTC by Dmitry Kazakov
Modified: 2013-08-03 20:45 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitry Kazakov 2011-08-05 12:08:12 UTC
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.
Comment 1 LukasT 2011-08-08 09:01:06 UTC
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.
Comment 2 Dmitry Kazakov 2011-08-08 09:27:58 UTC
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.
Comment 3 vanyossi 2013-05-08 02:09:45 UTC
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.
Comment 4 Dmitry Kazakov 2013-07-31 11:07:52 UTC
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.
Comment 5 Dmitry Kazakov 2013-08-03 20:45:13 UTC
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