Omni keystrokes rotation


Was just looking at the Omni and considering potentially getting one. I'm aware that it works with most VR enabled games by using keystrokes. I was just wondering do those keystrokes purely work on movement, i.e. walking forward back left and right or does it take rotation into account as well? For example if I was to rotate left, is that interpreted as a left mouse movement(or pressing left on the right stick of an xbox controller) or is that ignored?



  • giroudfgiroudf Posts: 127
    Well , in VR rotation should be supported by some sensor (on the VR headset) or on the player, since the rift support WASD (and possibly other way of changing direction) it should be ok.
    In fact it depends of the game, some are using mouse, other are using arrow keys, some WASD, some a joystick.
  • giroudfgiroudf Posts: 127
    edited February 2015
    in fact it would be useful to know how the omni is working.
    Simple assumption would be that the trackers give a set of position (foot forward, foot backward) that can be used to define a vector (direction and lenght).
    The direction can be used then to calculate a treshold that define the trigger of a direction change.
    than can be tricky since you need to synchronize the game and the device,
    For example, a game can use arrow key to turn, but each keystroke give you 5 deg.
    This must be reflected by the omni, so the threshold is set to say: every 5 deg change, send a keystroke.
    This can be considerably different if the game use joystick, mouse or keyboard,
    The accuracy does not need to be excellent (just realistic) if you wear VR headset since you will not be able to know if you exactly make a full turn or not.
    This could be more annoying if you play with big screen, because any drift will soon make you loose the front direction.
    The solution would be to get some GUI that allow you to create a profile for each application where you can set these parameters, emulation type ( mouse, keyboard, joystick),
    sensitivity (number of occurence for a full 360 turn), speed etc...
    the problem is tricky because for example it is easy to quantify the response of a keyboard (you just have keystroke) while it is more difficult for a joystick or a mouse.
    You have to reperesent that by a circle. center of circle is no direction, no speed. Then, when you move, there is an arrow growing from the center of the circle (length of arrow is speed, direction of arrow is heading). Then you just need to map the device you want to emulate to the circle.
    for example, for a keyboard, each increment is speed will generate a W keystroke, decrement, generate a S keystroke. the number of keystroke generated is set by how many steps you divide the radius of the circle. if you got only 3 speed in the game (stop, walk and run) you divide the radius in 3 parts (center=stop, first third=walk, remaining=run). the same for direction, where you play with circonference of circle.
    This way you can also easily emulate a joystick or a mouse.
    The tricky part is since you can jump in the omni and drastically change speed and direction, you need to generate ramp between position.
    For example if you press 4 time the W key to run, you need to press 4 time the S key to slowdown and stop. Since in the omni you can easily go from STOP to RUN, without
    passing by the WALK state, you need to generate the rapid stroke sequence to emulate this.
    Same for direction, since you can jump and make a 180 deg turn. That is the difficultiy of matching a linear device (passing from one state to another one require to pass by all the states in between) with a direct access device (passing from one state to another can be done by simply juymping at).
    It would be great if the omni provides some way of visualize this.
  • It's an interesting question and having a casual background as a developer, I can't work out if they can manage to do this at a 1:1 ratio without native support. Especially with a joystick, if you emulate a rotation as a joystick command, your rotation could actually be too small and be in the deadzone of a joystick meaning you could infinitely rotate (if you're rotating very slowly the entire time). Even with keystrokes you have the same issue. Obviously movement is much simpler as you know the max and min ranges. It seems like it'll be very difficult to support long term without dedicated people playing the latest releases and finding the right values.
  • giroudfgiroudf Posts: 127
    yes, developper definitely need to get a hand on the device to start playing with and find the right way to use it.
    that is a pity that they did not deliver a few items to developpers (like oculus do). We do not really care it the thing looks great or if it is the latest version.
    we just need to discover how it works, what are the issues etc...
  • JorgenJorgen Posts: 108
    edited February 2015
    Virtuix certainly have to improve it communication toward developers.

    They stated a few times that they avoid unveiling too much technical data to prevent it being used by other companies.

    But yes, it is a bit hard to understand which movements can efficiently be captured and how their algorithms are able to turn it into keystrokes.
  • @giroudf - thanks for the comment. However, I do believe developers care about the way it looks. The Omni is a big item. We want our backers, whether a developer or not, to be very happy with the Omni for a long time. If we asked developers to bear with us through Omni DK1, Omni DK2 and finally Omni CV1, you would tell us we're crazy...

    We will be releasing the Omni ahead of the rumoured Oculus CV1 dates, and hopefully this will give developers some time to work with the Omni, their preferred HMD, and be able to capture some of the momentum when the rest of the world catches on all this VR awesomeness.

    I would also like to point out that we are releasing the Omni before everything will be fully baked in the motion library. Developers will be asked for feedback so that we may improve the tracking and get out updates quickly.
  • And as far as "how the omni is working" question @giroudf , your visualization of a circle is spot on. Output from the Omni comes in the form of a vector. A value for X and Y, much like the axes of a joystick. The values determine the direction the player is headed in addition how fast they are traveling. Values will range between -1 and 1. With a fairly continuous number of values between. In fact, inside Unity for example, you are able to map the Omni as a joystick in the input manager. The game developer will then need to determine how they utilize the values.

    The comment of a dead zone is also interesting. In our case, the dead zone ends up being how reactive the Omni is to your steps, both starting and stopping. Very challenging stuff...
Sign In or Register to comment.