Drawings - Register all mouse positions

Having a question regarding drawing with Vuo.

In whatever drawing program on the mac or on the iPad, if I draw fast, there is a slight delay between the pen / finger and the draw to follow, but all positions register.

In Vuo, if I draw fast, some gaps appear, even if I set the mouse event handling to Enqueue instead of Drop Events.

Is that related to the screen or composition frame rate ?

In fact could this be solved ? What feature request would it take ?

@Bodysoulspirit, could you post a composition? I’d like to see how often the composition is checking the mouse position (every display refresh or what).

1 Like

Well I guess I could mention any drawing composition, Steve’s Paint With Brush for example, or the “Draw Graph With Mouse” in Jersmi’s recent discussion, if one moves the mouse too fast, the graph will not be updated for some points.

But I just made a small composition + 2 vids of what I mean, one drawing with the mouse in Photoshop, one with Vuo.

Thanks

Draw Test.vuo (4.23 KB)

Oh, I think it’s because a drawing app like Photoshop is programmed to draw lines between adjacent mouse positions instead of drawing points/ovals at the mouse positions. The same can be programmed in Vuo — see attached composition.

PaintWithLines.vuo (5.33 KB)

1 Like

As much as I appreciate seeing your comp, Jaymie, I do think there’s a relevant unanswered question here. With a comp like the one @Bodysoulspirit posted in the “Draw Graph with Mouse” thread,
Draw Mouse Graph 1.1.vuo (6.38 KB)
, is there a method for drawing quickly across the viewer and making sure all points animate and none get skipped? I imagine it sorta like drawing a boundary that points move towards but cannot pass.  

Mmm. but if drawings usually use lines, how would that apply to brushes ?

  • Would I need to subdivide the lines into points for brush points ?

  • But what about the curves then ? It seems the curves in Adobe are rounder then those in the Vuo composition. I can imagine a smoothing angle process with some curves behind the code, but if that was the case, the curve would smooth the angle but not represent the mouse path ?!

I don’t know. As a non coder I always have to move carefully and rely on my tests and thoughts.
Is there really not a way to enqueue way more mouse positions ? At what frame does the mouse send positions to the computer (an usb mouse f.e.).
Here the samples are about drawing, or in Jersmi’s case about drawing a graph, but I can imagine a scene scenario where the hands are kinect used to draw, at what frame rate would that play ? Same, better or worse then mouse ?

Made some additional tests.

Here is a screenshot with fast drawing circles with the above “Paint With Lines” composition. Notice the rough angles between the lines.

Here in Photoshop, a circle drawing using a regular smoothed oval brush

Here is a zoom of that circles with brush, it seems you can notice very close points next to each other

Some more complex brushes act very well too ! Very close points next to each other !


Some other more complex brushes do add more space between the brushes, but the curves are smooth



In this video you can clearly see some enqueue process with a complex brush

And here how close the points are next to each other and how smooth the curves are and really represent the mouse path

Brushes.psd_.zip (2 MB)

@jersmi, another option would be to use the Receive HID Controls node. Whereas the Receive Mouse Drags node outputs mouse data that has been processed by macOS, which reduces the event rate, the Receive HID Controls node gives you the raw mouse data at the device’s original rate. See the “Move Dots with Two Mice” example composition.

@Bodysoulspirit, Photoshop probably has a lot of source code devoted to all the various brushes and whatnot, so there would be a lot to reconstruct if you were trying to duplicate the behavior (whether in Vuo or in another programming environment). For the smooth curves, you might be able to get equivalent behavior using splines.

Another option would be to use the Receive HID Controls node

Mmm.
I tried to adapt the “Move Dots with Two Mice” and use the mouse via HID to draw. Clearly a better rate !
Looks way closer too the rate of Photoshop IMHO.

Movie :

However I can’t scale the point to move at the real mouse position :(

HID Draw.vuo (5.33 KB)

HID, good to know! But yeah, need a way to scale the point…  

Oh right, the raw HID data is not easy to work with. The operating system does a ton of post-processing on the HID data (acceleration curves, etc.) to compute the position of the mouse pointer. Short of reverse-engineering all that, you can kinda fake it by making the composition fullscreen and hiding the mouse cursor (see attached composition).

Anyway, I would guess that Photoshop is using the OS-processed mouse data plus splines or something like that, not the HID data.

HID Draw2.vuo (7.67 KB)

I see the pointer acceleration output, ok. What else is it outputting?

Wondering about the Macbook Pro trackpad, shouldn’t that be the same as a mouse? I get no output.

Edit: Jaymie – looked at your comp after, I see, that is a fudge.