[Bf-committers] Trackpad multi-touch gestures (scroll/pinch/rotate) handling patch

Damien Plisson damien.plisson at yahoo.fr
Tue Jan 5 18:33:19 CET 2010

Hi William,

All two fingers API return float incremental values that can be quite precise.
That's why you can zoom in tiny increments.
Following Shaul feedback, I've decrease by a factor of 4 the zoom speed.

The issue is with panning which has an idle threshold that may be too high, and that explains the jerkiness you observed. To try to lessen this effect, I've implemented (in the updated patch) a quadratic acceleration. Tell me what you think of it !

I don't get exactly suggestion for rotation, as orbital rotation is available through Alt+panning when in "turntable" mode.

BTW, a funny thing is that thx to obj-C runtime binding, even if Blender is compiled for ppc 10.4 (systems way before multitouch trackpads), multitouch works fine on a recent mbp !

I've updated the patch, but if it seems ok, I'll commit it soon...


Le 4 janv. 2010 à 16:56, William Reynish a écrit :

> Hi Damien,
> I've tested your patch today - works really nicely. I was even surprised to see how the zooming is butter smooth - either it's implemented in a different way, or it moves in very tiny, unnoticable increments. Regular panning and orbiting is more jerky though. I agree with others that the zooming is a bit too sensitive, and there seems to be a tiny amount of lag before the pinch gesture starts to react, after which it's perfectly smooth and responsive.
> The controls are quite nice, though you seldom want to rotate around the view plane. I'd prefer if it rotated around the y axis when using the rotate gesture. Either that or the two finger scrolling should default to orbiting, which is after all the most common movement you'll want to do in 3d. 
> Yes, I think it should be kept as auto, detecting whether the user is using a mouse, or trackpad. Laptop users attach or detach mice frequently and it would be a hassle to manually set it up each time.
> Thanks a bunch for this work. I'll definitely propose that we include this.
> William
> On 3 Jan, 2010, at 6:59 PM, Damien Plisson wrote:
>> Hi all,
>> During the vacation time, I was stuck in an Internet-free place (an issue), but without a mouse (more serious issue), so to keep my Blender experience as good as possible, I needed to get these shiny trackpad multitouch features operational !
>> So, based on trackpad pan work initiated by James Deery [his mail of Nov 5th 2009], I've implemented the handling of the trackpad 2-fingers gestures :
>> - 2 fingers scroll (MOUSEPAN / GHOST_kTrackpadEventScroll event) pans the view
>> - 2 fingers pinch (MOUSEZOOM / GHOST_kTrackpadEventMagnify event) zooms the view
>> And in 3D view:
>> - alt + 2 fingers scroll rotates the view
>> - 2 fingers rotation (MOUSEROTATE / GHOST_kTrackpadEventRotate) rotates the view around the axis orthogonal to the screen (the 3rd axis !)
>> This is currently fully implemented for OSX (GHOST Cocoa fires the new events), but there must be some PC laptops with similar features that'll take advantage of this... PC users, can you confirm ? (I remember using a laptop with the 2D scroll features on its trackpad).
>> FYI, OSX implementation compiles from 10.4, though the 
>> In Ghost, I've currently implemented an auto-detection of the source peripheral, so that a regular mouse still sends MOUSEWHEEL events.
>> Apple special mice behave like trackpad (not configurable from documented API), so the mighty mouse trackball sends 2D scroll events. And the magic mouse touch gestures must be like trackpad's.
>> Do you think it should be kept in "auto" mode (wheel events for regular mouse, scroll/zoom/rotate events for trackpad/special mouse), or be an option user configurable ?
>> I've posted this as patch #20555 in the patch tracker : https://projects.blender.org/tracker/index.php?func=detail&aid=20555&group_id=9&atid=127
>> for your reviews, comments & suggestions.
>> Damien
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers

More information about the Bf-committers mailing list