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

James Deery james.deery at jadex.org
Wed Jan 6 01:56:22 CET 2010

Hi Damien,

I'm glad something came this, it looks really good. The zoom sensitivity in the newer patch is definitely better, it was a bit out of control before. The acceleration on the pan works well, but I think it could do with a limit on the size of dx and dy of about 100. I could be wrong but I think that if there's a slight delay in processing the events, the delta just grows; I had some views fly off incredibly far a couple of times.

I prefer orbiting for the rotation since my pinches often turn into rotations and it was rather annoying having the view rotate in the way it did. 

There are a few things I would tweak for 2D views. The zoom is reversed for most 2D views and doesn't work in some of them. Also, the image editor pans rather than scrolls (I think that 2D views should always scroll) so I would change that.

Something that would also be good is a non-proportional scroll for the VSE and the Graph Editor, to work the same way as Ctrl+MiddleClick. I think Ctrl+Pan would make sense here.

I'll have a go at these and try to get a patch together.


On 5 Jan 2010, at 20:10, Damien Plisson wrote:

> It uses the keymap, but MOUSEROTATE is hard coded to the third axis.
> So I've made a quick update to the patch : trackpad_multitouch_orbit.patch
> Cheers,
> Damien
> Le 5 janv. 2010 à 20:19, William Reynish a écrit :
>> Hi Damien,
>> I'll test the patch soon. Thanks for the awesome work.
>> What I meant about the controls was this: I love that you've included  
>> support for the rotate gesture, but rotating around the view plane  
>> isn't very useful. Alt+scrolling works for orbiting, but is a bit  
>> cumbersome compared to simpler gestures sans modifier. Since orbiting  
>> is a very common action I'd advise that it be mapped to the rotate  
>> gesture, replacing the view plane rotation.
>> Though I wonder if all of this is customisable through the input  
>> editor? Or is it hard coded?
>> Cheers
>> William Reynish
>> On 05/01/2010, at 18.33, Damien Plisson <damien.plisson at yahoo.fr> wrote:
>>> 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...
>>> Cheers,
>>> Damien
>>> 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
>>> _______________________________________________
>>> 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
> _______________________________________________
> 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