Touch Screen Sensitivity

I added a new feature to my application where you can touch and hold ( or a desktop right-click ) on an scene object and it fires a specific event. On a desktop with a mouse, this of course works as expected but on mobile device not at all. If the scene is being panned, then it should cancel out a touch and hold event using code similar to what is shown below:

UniversalOrbitControls.addEventListener("change", function () {
     // assume the user is panning and not just holding a finger down...

However, it appears that the touch is very sensitive and unless your are a stone statue, the scene detects it as a constant “change” because of the very subtle but still detectable finger movement/pulses.

Is there a setting in Three.js / Orbit Controls that you can define/set a value/threshold in which the scene should distinguish between a touch and hold event versus touch and pan event? Basically, once the finger has moved so far away from the initial point of contact, it should considered it to be a touch and pan and not a touch and hold action?


No, there is no configuration option for something like that.

This would be pretty useful, as there is always some glitchy movement when you zoom and interact with 2 fingers for dolly/pan as well.

When I try this touch controls on a big touchscreen, I found it to be even worse as users have the fingers much closer together in respect to the pixels, and it’s easier to ‘misinterpret’ a zoom as a pan. This might be the second next thing I’m going to work on. However, I found that even google has no real threshold on maps.

The ‘center_changed’ event with a threshold could determine more precisely if the user tries to zoom or to pan. However, too much will lead to delayed interaction, which is also not desirable :confused: