The Mixed Reality Forums here are no longer being used or maintained.
There are a few other places we would like to direct you to for support, both from Microsoft and from the community.
The first way we want to connect with you is our mixed reality developer program, which you can sign up for at https://aka.ms/IWantMR.
For technical questions, please use Stack Overflow, and tag your questions using either hololens or windows-mixed-reality.
If you want to join in discussions, please do so in the HoloDevelopers Slack, which you can join by going to https://aka.ms/holodevelopers, or in our Microsoft Tech Communities forums at https://techcommunity.microsoft.com/t5/mixed-reality/ct-p/MicrosoftMixedReality.
And always feel free to hit us up on Twitter @MxdRealityDev.
Difference between Navigation and Manipulation
Hi,
The question probably explains it all. I have seen these two input methods being used in HoloToolKit as well as the tutorials Holograms 210 & Holograms 211. Can someone explain what is the difference between navigation and manipulation. More specifically, the difference in how the HoloLens understands these commands and which gestures relate to these commands,
Thanks in advance,
Pranav
Best Answers
-
DavidKlineMS mod
I used to be confused about the differences when I started working with gestures. What worked for me was to equate the gestures to a physical input device.
Navigation is like a joystick. The data is always between -1 and 1 (inclusive), representing the position on each axis. For example, if you start the gesture and move to the right, the reading (NavigationUpdated event) of the X axis might be 0.5. Moving further left will eventually max at 1.0, regardless of how much further you move your hand.
Manipulation is similar to a mouse. The data returned is the cumulative distance travelled on each axis. The further your move your hand (ManiupulationUpdated event) to the right, the higher the X axis value will become.
The system interprets the gesture based on which one you request when you create your GestureRecognizer. Your application cannot request both Navigation and Manipulation simultaneously. This is why Holograms 211 uses a voice command to switch between rotating and moving the astronaut.
Hope this helps!
David6 -
DavidKlineMS mod
If you are looking for continuous rotation, I recommend using Navigation and taking a look at Holograms 211's astronaut rotation code.
If you want discrete rotation (only rotate when the hand is in motion), I would use Manipulation.
Thanks!
David5
Answers
@PranavGadamsetty,
I used to be confused about the differences when I started working with gestures. What worked for me was to equate the gestures to a physical input device.
Navigation is like a joystick. The data is always between -1 and 1 (inclusive), representing the position on each axis. For example, if you start the gesture and move to the right, the reading (NavigationUpdated event) of the X axis might be 0.5. Moving further left will eventually max at 1.0, regardless of how much further you move your hand.
Manipulation is similar to a mouse. The data returned is the cumulative distance travelled on each axis. The further your move your hand (ManiupulationUpdated event) to the right, the higher the X axis value will become.
The system interprets the gesture based on which one you request when you create your GestureRecognizer. Your application cannot request both Navigation and Manipulation simultaneously. This is why Holograms 211 uses a voice command to switch between rotating and moving the astronaut.
Hope this helps!
David
@DavidKlineMS ,
Thanks for that early and precise answer. I have a small detail which I would like to get clarified before I move forward with my project.
How do we know how much of the hand movement in case of NavigationUpdated corresponds to 0.5 or 1.
I ask this because, for my project, I need a method where the distance moved by my hand from the NavigationStart state (stationary state) should be directly proportional to amount of rotation ( and similarly the amount of scaling factor i.e, *1.1 or *1.2 etc) to be given to the gameobject.
Since the ManipulationUpdated is similar to a mouse as in the movement is directly proportional and the value can theoretically go up-to infinity, I guess manipulation is the better method for me. Am i understanding this correctly?
Thanks,
Pranav
@PranavGadamsetty,
If you are looking for continuous rotation, I recommend using Navigation and taking a look at Holograms 211's astronaut rotation code.
If you want discrete rotation (only rotate when the hand is in motion), I would use Manipulation.
Thanks!
David
@DavidKlineMS,
That's exactly what I was looking for. Thank you for that answer.
Regards,
Pranav
Thanks @DavidKlineMS , it was troubling for me that this distinction is not clearly described in Holograms 211.
I could not understand the rationale behind the use of the "navigation" keyword for a scaled and bounded manipulation. Navigation has a very different meaning in VR (locomotion) and it made its definition within Hololens libraries very confusing to me.
Another question, is the clicker movement input only functional with the "navigation" GestureRecognizer?
Thanks!
Henrique
Hi,
The difference between navigation and manipulation mode remains difficult for me. Navigation and Manipulation are resp. like a joystick and a mouse. Manipulation is rather for moving while the navigation is for rotating. We have a finest control with the manipulation mode.
But I do not succeed to put in evidence these differences in practise. Do you know where we can find a demo illustrating these points?
Another question is how to switch between these modes like in the script GestureManager of the academy tutorial 212?
Thanks.