In my never-ending quest to figure out the ‘best’ way to interact with the Leap Motion Controller, I find a lot of my thoughts focusing on camera movements. In the case of the Universe of Sound, this meant flying from galaxy to galaxy by holding your hand flat, but I also wanted to explore other methods of camera movements.

In this post, we’ll be looking at my Translation Camera experiment. As usual, please use Google Chrome to view this experiment. Try moving your hand around to change the field position, or if you want to think about it differently, change the camera position. To me, the controls seem simple enough, but try it out and let me know if it feels that way to you.

How It’s Done

The logic behind the camera controls is actually overwhelmingly simple. In fact, it’s done in only 4 lines of code.


The simplicity of this method is part of what makes it so viable to me. You are simply adding to a power of the velocity of the hand to the velocity of the field. What this means is that small hand movements will do basically nothing, and large hand movements will dramatically alter the position.

By doing this rather than a linear addition, it means that people can basically ‘throw’ the field forward or backwards. As long as they move their hand relatively slowly, they can reset their hand position by moving it to the other part of the field. It is also similar to cdGain, which I’ll talk about in an upcoming post.

Shortcomings and Advantages

Even though  I like the parts of the camera movement I just mentioned, there are a few things that make it rather unusable, at least for small movements. Because of the way the power function works, there will basically be a speed below which the movements are miniscule, and above which are massive.

This is great for massive movements, but when someone is trying to make precise controlled movements, it becomes rather useless. If you don’t believe me, try looking at a specific skull on the page, and then try to move inside of it. You will find that even if you get close, finding the exact speed at which to move your hand is near-impossible.

That being said, for moving through the endless field, I absolutely love this interaction model. It feels fluid, intuitive, and physical, which is basically all I could ask for in this type of setup.

My current theory is that this method of movement should be combined with another method – so that you would make movements through the field by throwing with your hand, but as soon as you wanted to move to a specific skull, you could use a different interaction method. One possibility would be to do something like ‘circle’ the specific skull you want to move towards. I’ll be researching this specific method more in the future, and promise that if it turns out to be useful, I’ll write a new post about it.

Please let me know what you think in the comments, on Twitter @cabbibo, or via email at Happy hacking!

A musician and creative researcher, Isaac explores the boundaries of space and sound with the Leap Motion JavaScript API. He has designed a variety of experimental interfaces that let you reach into music, big data, and even the fourth dimension.