Posted in: Developing for VR

The locomotion problem in Virtual Reality

(Seriously, I hesitated some time between this version and the original, but that’s not the point of this article, and I kinda like the 80’s vibe anyway…)

I think we can all agree here, Virtual Reality (VR) is now, and not science-fiction anymore. “Accessible” (not cheap by any stretch of the imagination) hardware is available for costumers to buy and enjoy. Now you can experience being immersed in virtual worlds generated in real time by a gaming computer and feel presence in it.

The subject that I’m about to address doesn’t really apply to mobile (smartphone powered) VR since theses experiences tend to be static ones. Mobile VR will need to have reliable positional tracking of the user’s head before hitting this issue… We will limit the discussion on actual computer-based VR

One problem still bother me, and the whole VR community as well is: In order to explore a virtual world, you have to, well, walk inside the virtual world. And doing this comfortably for the user is, interestingly, more complex that you can think.

You will allways have a limited space for your VR play room. You can’t physically walk from one town to another in Skyrim inside your living room, the open world of that game is a bit bigger than a few square meters.

The case of cockpit games like Elite:Dangerous aside, simulating locomotion is tricky. Any situation where you’re moving can induce nausea.

Cockpit-based game grounds you in the fact that you’re seated somewhere and “not moving” because most of the object around you don’t move (the inside of the spaceship/car/plane). This make it mostly a no problem, you can do barrel rolls and looping all day long and keep your meal inside your stomach. And you have less chance to kill yourself than inside an actual fighter jet 😉

Simulator (VR) sickness is induced by a disparity between the visual cues of acceleration you get from your visual system, and what your vestibular system sense. The vestibular system is your equilibrium center, it’s a bit like a natural accelerometer located inside your inner ears.


For those that don’t remember physics class quite well, “acceleration” is, put simply, any kind of change of speed measured over time, generally wrote as m.s^-2 (meters per second, per second. Standard is metric, sorry fellow Americans!) if it’s linear or in rad.s^-2 (same but with an angle) if it’s around an axis. Any type of continuous change in the speed of an object will induce a non-zero acceleration.

When you change speed, your vestibular system should register an acceleration. The vestibular system is part of your inner ear. It’s basically the thing that tell your brain if your head is up or down, and permit you to sand and walk without falling all the time!

Internal ear diagram that show the semi-circular cannals where the acceleartion forces are sensed.
CC-BY-SA Patrick J. Lynch, numbers by Uwe Gille, Wikimedia. Cranial nerves VII and VIII and selected structures of the inner and middle ear. 1 Nervus vestibularis 2 Nervus cochlearis 3 Nervus intermediofacialis 4 Ganglion geniculi 5 Chorda tympani 6 Cochlea 7 Ductus semicirculares 8 Malleus 9 Membrana tympani 10 Tuba auditiva

What happens inside is pretty simple to visualize : moving fluid in your semicircular canals is measured and the information is communicated to your brain by the cranial nerves. You can think of this as how an accelerometer and a gyroscope works. (As far as I know, MEMS gyroscopes work by integrating acceleration over time, not by really using the gyroscopic effect)

Theses acceleration not only include linear acceleration (from translation in 3D space), but also when rotating, which induce angular acceleration, and empirically, it seems to be the worse kind in the matter of VR sickness… ^^”

“On foot” first person VR games, the ones that simulate you standing and walking in a virtual environment tend currently to implement a “VR comfort mode” where when the user want to turn his body, the game will do it by steps of fixed angles instead of continuously. This is not ideal because it doesn’t feel smooth, but at least the user did not see any angular acceleration change.

Translating you seems to be perfectly fine if done at constant speed with instantaneous acceleration (= going from 0 to 3 meters per second in an instant, not ramping the speed up), especially in a forward direction.

The root of the problem is when your brain get visual information that you’re accelerating (or decelerating, it works both ways), but your vestibular system says your head is not moving similarly, it doesn’t really know what’s happening, since this is not “normal” information from the exterior world.

It’s believed that a nausea/vomiting reflex evolved on humans (I’ll have to look if actual research is backing this, but I’m too lazy right now :p) in this situation because some poison found in some plants (think: bad mushrooms) can induce similar “hallucination” that have disparity between the visual and vestibular system. And the body want to get rid of the content of your stomach before you actually die from them.

For obvious reasons, we want to avoid triggering this reflex.

Different users have different degrees of resistance to this. Personally, unless there’s something really wrong with the headset tracking or the program running, I never experienced VR induced nausea, or at least not much. Other people reported me they were feeling weird after I was demoing things on an Oculus Rift development kit. Actual consumer-level hardware is better in that regard.

Most Vive experiences you can find on Steam don’t suffer from this problem because they never actually attempt move you. The only movement your avatar is submitted to is how you move your head inside your tracking space (in the best case scenario, a small room.)

There are things we can do to mitigate this, here’s a not exhaustive list of things I’ve seen and/or tried:

  • Making the user remaining at constant speed. if you’re moving at 3 meters/seconds, switching directly from 0 to 3 m/s without ramping the speed gives the best result. Immediate (= not continuous) are unnatural but don’t create visual linear acceleration. This is good for “walking” in a space with a controller and is quite comfortable
  • Permitting the user to turn itself by “step” of ~10° instead of continuously with a joystick, as stated above, 1st person experiences like Minecraft for the Oculus Rift work like this, and it seems to work quite well.
  • Wheel mode rotation“: there’s an odd phenomenon. When you’re in the control of the angle of rotation you’ll endure, the effect of the motion sickness seems to be reduced. Using a thumb-stick to rotate when moving it left/right is really bad, because it’s not the movement of your thumb that controll how much you turn, but how long you hold the stick that do. Strangely, this is not the case when moving with a mouse like a PC FPS or by moving the thumb-stick in circles, clockwise or counter clockwise. If you have a direct rapport movement = angle, the brain kinda accept the disparity between vestibular and ocular information.
  • Not translating/rotating the player at all. Some game uses only teleportation mechanics, and works quite well. This is especially good if you can walk in the space. This is the preferred solution of many HTC Vive demos. This mechanics can even be intradiegetic (= is part of the game setting, like in Budget cuts, you’re a spy with a gadget that permit you to teleport a few feet from your current position)
  • Walking in the real world. With the HTC Vive (and the Oculus Rift with 3 sensors) you can do “room scale” VR. This permit the user to move in a space of a few square meters. This is not much but it’s already interesting, and is well compatible with teleportation mechanics.
  • Redirected walking. This needs probably a bit larger space than the current consumer is willing (or able) to dedicate at a VR setup, but it’s possible, during the turns, to trick the user into making it believe he’s walking inside a larger space that he’s really. This has been experimented with and seems to give good result, but AFAIK there’s no out of the box implementation of this that is available to VR developers, and I’m not sure it can be adapted to every configurations as I’ve seen it demoed in labs, but not in any “consumer” VR system yet.
  • Omnidirectional treadmill. I’m not a fan of the idea, but the concept is to use a “treadmill” that permit you to walk, but in any direction (hence the name). This will permit you to actual walk (like in a roomscale tracked system), without actually moving much inside your tracked area, and never hitting a wall. Some companies are developing theses things since, well, years. And there’s nothing convincing, that works, that you can buy AFAIK. Plus, they seems to be heavy, big bulky things that are expensive, so don’t cont on many users to get those.
  • Alternative moving mechanics. If you played CryTek game The Climb with touch controllers, you see what I’m talking about. Sometimes, moving yourself in space is not something “conventional” like walking. I’m also thinking about ADR1FT, a game where you’re floating in space and using a jet pack.

Nobody’s cracked the problem still, and theses solutions are based in compromises. The best thing would be to be able to drive the vestibular system of the user from the computer, with something like “galvanic vestibular stimulation” but it’s probably not going to happen, at least in the short term.


Comments (2) on "The locomotion problem in Virtual Reality"

  1. I’ve been researching an alternative solution that might be interesting for certain use-cases based on orbital motion.
    It couples rotation with linear motion to exploit our ability to make sense of when we rotate our heads, but for movement as well. Check it out!

    1. Hi!

      This looks interesting in the scenario of a 3rd person view around a subject. It’s not really the kind of “movement” I was talking about it the article, but I can see a lot of use case for something like what you have prototyped! 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.