cancel
Showing results for 
Search instead for 
Did you mean: 

A different approach for 1st person controls in VR (demo)

spyro
Level 4
Hi there,

I spend the past days fiddeling around with Unreal Engine 4. I testet several new control schemes for VR (mouse & keyboard + controller) and came up with a experimental solution which I call 'Valerie controls' (not really original, I know):

Download: https://mega.co.nz/#!LcJGzbhY!pxGiHKejBAVHbVBUGiuLJM88rjckFWH7JVFxp5jthjY (Version 0.2)

The demo itself is based on Epic's Mobile Temple sample project. There are several changes how to control the character compared to traditional solutions to avoid motion sickness:

1.) Basic controls:

If you are using a controller, left/right on the LEFT STICK simply turns your character around instead of strafing. This is mostly to avoid circle strafing with leads to motion sickness when combined with counteracting head movement. In short: You always walk/turn in the direction where the left stick is heading, just like in 3rd person games or in Metroid Prime on GCN.

2.) Axis / movement lock:

If you PRESS the RIGHT STICK or SHIFT while walking, you can freely look around without affecting the direction of the movement. Release, and your character will follow your look again. If you are using a controller, in this mode left/right means strafing (but not in circles).

3.) Targeted Recentering:

You know this: If you look around and find something interesing you probably want to walk there. In real life you would leave your head in this direction and just turning your body below your head in the same direction while you start walking. In VR, this isn't possible because you are sitting on a chair (which isn't tracked at all). Traditionally, you had two possibilities:

a) Turn back your head into your neutral pose, then turn your whole character in the direction you want to walk (slow and unnatural)

b) Do the same as in a) and counteract the movement of your head by turning your character in the opposite direction to shorten the way. This is almost a guarantee for motion sickness because the 'movement of the world' doesn't match the movement of your head.

With Valerie controls it's different: If you spot something interesting and have your head turned to the side, just PRESS the LEFT THUMBSTICK / R (recenter view) and keep it pressed while you returning your head to your neutral pose. Release the stick/button and voilá, you are facing into the 'right' direction. The screen will turn to black in the meanwile so you don't get any irritating visual information while 'pulling the world with you'. If you are doing this fast after a little bit of practice, the short black phase feels like a blink with the eye while moving the head (which was in fact something I did in some demos before to avoid motion sickness).

4.) Instant View:

Turning around with a control pad seems also very uncomfortable in VR. That's because you have to 'integrate over time' to reach your target position and stop then. You don't do that in reality. Instead you do a combined motion (turn your head, then rotate your body unter the head afterwards). While doing this, your brain is sort of 'masking' your view as your eyes haven't found their desired position so you don't see a blurry mess while your head rotates. That's why simply looking around in VR is no problem while using a controller while still watching the same spot on a VR display makes you sick after a while.

With a mouse, you can reach your target position with a single wipe of your hand quite comfortable if you are an experienced gamer. On a controller, you can now simply 'aim' to your target direction with the RIGHT STICK. You don't have to stop for that, just keep walking if you want or make small corrections. If you RELEASE the stick, your view will instantaneously snap in the direction where it was pointing last. This will only trigger when you point the right stick quite to the edge (for better accuracy).

Here is the full list of controls (see README.TXT):

Toggles:

  • M: Mirror OFF/ON
  • T: Disable/Enable Temporal Anti-Aliasing
  • F: Show current fps and frame times
  • U: Show statistics
  • G: Show fps graph and statistics
  • Num +/-: Increase/Decrease internal resolution (currently DEACTIVATED, because of reported UE4 bug)
  • ESC: Quit demo


Mouse + keyboard controls:

  • WASD: Move
  • Mouse: Look around
  • R: Targeted recentering (keep pressed, move head into neutral pose, release)
  • Shift: Movement lock (look around while moving without affecting direction)


Control pad controls:

  • Left stick: Move around (like in third person)
  • PRESS left stick: Targeted recentering (keep pressed, move head back into neutral pose, release)
  • Right stick: Push in any direction, view will change instantly on release
  • PRESS right stick: Movement lock (strafe with left thumbstick and/or look around while moving without affecting direction)


Please tell me, what you think. I know, at the beginning it feels really strange but maybe we can find the perfect solution together. 🙂

tldr; Try the demo, then tell me why it's awful. 😉

spyro

PS: The demo runs with a screen percentage (internal rendering resolution) of 100%. Compared with 130% (which is the standard setting in UE4) this runs considerable faster, but costs a little bit of sharpness. You can increase/decrease the resolution with NUM +/-, but because of a bug in the engine/runtime, this will currently crash the game. I will fix this, as soon as it's possible.

PPS: For those with low fps: Try to disable mirroring (M) and/or deactivate Temporal Anti-Aliasing (T).
18 REPLIES 18

drash
Level 7
I enjoyed this very much. I spent several minutes playing around with the controls and seeing how I felt about them. Plus the temple is beautiful to look at.

I think being able to walk around purely with one thumbstick is pretty nice, actually. It simplifies things a bit for those unfamiliar with the FPS setup.

The instant view using the right thumbstick is cool too, and it became a game to see if I could accurately point in the direction I wanted to go with that single flick of the thumbstick. And of course, this means quick 180's are easy to do, and far less difficult to remember how to do them.

At least for me, the 360 controller thumbsticks have always been a slight "chore" to press. But you have done a fine job of avoiding the need for the player to press + move the same thumbstick at the same time. 🙂

Thanks for sharing this!

Rirath
Level 2
Like the ideas put forth here, especially the instant-view stuff. Turning in first-person VR is very uncomfortable for me. I'll be trying this shortly but...

That's because you have to 'integrate over time' to reach your target position and stop then.


Did you mean "iterate over time"?

datenwolf
Level 2
"rirath" wrote:

That's because you have to 'integrate over time' to reach your target position and stop then.


Did you mean "iterate over time"?


No, spyro did mean integrate. Integrate as in "integration", the mathematical term. In layman terms it means, that you get some absolute time derivative input value (like a controller stick position) and if you want to turn this into some kind of movement you have to "add up" the stick position over time. In mathematical notation for example if you have some charactor rotation r for which you want to know the value at time T. To obtain this you have to "add up" (=integrate) all the turning rates the player has input into the game:

    
T
/
r(T) = | dt i(t)
/
0

spyro
Level 4
@datenwolf: Thanks for your explanation. I really suck at math. 😉

spyro

OculusRiftRocks
Level 3
Can I change the original temple demo to have the same movement speed that you have here.

it was the main issue with the original demo, or maybe there is a way to toggle your demo to the original controls?

I don't have my rift yet but I'll be sure to try this control scheme and let you know what I think.

Cactusblah
Level 2
I'll have to try this out later. First-person experiences with movement have made me sick so far, so I appreciate the effort to improve them.

spyro
Level 4
"OculusRiftRocks" wrote:
it was the main issue with the original demo, or maybe there is a way to toggle your demo to the original controls?


No, sorry. The axis configuration is not configurable at the moment as I don't know an elegant solution to provide different control schemes along with different controller code yet.

spyro

JimT
Level 2
Let’s try using ‘old school’ UI terminology:

"spyro" wrote:
4.) Instant View:

Turning around with a control pad seems also very uncomfortable in VR. That's because you have to 'integrate over time' to reach your target position and stop then. ...

The turning thumbstick on a gamepad is typically treated as a Rate Control: the position of input is mapped to the rate of motion of the output. In this case, the deflection of the stick to the side is mapped to the rate of turning.

"spyro" wrote:
With a mouse, you can reach your target position with a single wipe of your hand quite comfortable if you are an experienced gamer.

A mouse is a Positional Control: the position of input is mapped to the position of the output. Albeit it maps a transitional mouse movement to a angular directional turn of the avatar’s body.

"spyro" wrote:
On a controller, you can now simply 'aim' to your target direction with the RIGHT STICK. ... If you RELEASE the stick, your view will instantaneously snap in the direction where it was pointing last. This will only trigger when you point the right stick quite to the edge (for better accuracy).

Now you’re using the right thumbstick as a Positional Control!
In this case, the direction in which the stick is pushed is mapped to the directional turn.

Positional control affords open-loop control: you know how far you’re going even with your eyes closed. Rate controls require visual feedback to use. Giving the user greater control over his avatar’s motion (& ability to anticipate that motion) is likely to reduce sim-sickness.

As I like to say (see https://www.youtube.com/watch?v=rsEGcJummEw😞 With discrete or rate controls, you press a button or push a stick & the simulation plays out a canned motion sequence. But with positional control over the avatar’s posture the user moves the avatar by directly varying its posture and constantly feels avatar’s posture.

We did a good deal of work in developing directional controls over turning. However, we focused on making it compatible with using the left thumbstick for course control (& foot pedals for positional control over translation) because dismounted infantry simulation requires support for scanning motion (e.g., pie-ing around corners). A directional turning thumbstick can execute either a smoothly revolving turn by pushing the stick straight forward and then revolving it around the rim, or a direct angle turn to face in a desired direction by pushing the stick there directly from its neutral centered position.

Here are some references:
Templeman, J. N., Sibert, L. E., Page, R. C., & Denbrook, P. S. (2007, March). Pointman-A Device-Based Control for Realistic Tactical Movement. In 3D User Interfaces, 2007. 3DUI'07. IEEE Symposium on. IEEE.
&
Templeman, J. N., Sibert, L. E., Page, R. C., & Denbrook, P. S. (2006). Immersive simulation to train urban infantry combat. Naval Research Lab Washington DC Information Technology Div.
http://oai.dtic.mil/oai/oai?verb=getRecord&metadataPrefix=html&identifier=ADA473341

We found that directional control over the heading coordinated very well with (conventional) directional control over the course. An experienced user with directional controls could pie corners with greater facility than experienced user with conventional gamepad controls.

Users who had little prior experience with using a gamepad found directional control over turning at least as easy to use as conventional rate-based turning.

The problem was that hard-core console gamers found it difficult to unlearn the way they had been previously applying their right thumb. Since the USMC wanted something that was quick for Marines to pick up, we backed off from offering directional turning controls in the version of Pointman to be deployed, and provided them with the old familiar rate-based turning.

-JimT

Fredz
Level 3
Nice idea and implementation. You should post an update to the thread (not only in first post) when you update this demo so people can find out. I heard about the new version on reddit here.