I think what I'm missing the most in every OR game/demo is..

User avatar
serrarens
One Eyed Hopeful
Posts: 6
Joined: Tue Oct 15, 2013 4:37 am
Location: The Netherlands
Contact:

Re: I think what I'm missing the most in every OR game/demo

Post by serrarens »

Last night I had an idea how to solve the 'walk straightforward and shoot to the right' challenge.

When you turn right, the body turns around the central vertical axis of you body, but when you shoot right with both hand and keep you body oriented forward, there are two axis: one for each shoulder.
The effect is that when you shoot right, the hand are offset to each other (left hand is in front of your body and the right hand is an arm length away). When you turn right, both hand are aligned.
The offset is about the distance between the two shoulders. This gives are workable rule:

Body orientation = (average hands Y angle) - ((hand1 X - hand2 X) / shoulder distance) * 90 degrees.

I haven't implemented this therefore I do not know what the side-effects are. An example is when you grab something in front of you with one hand, your shoulders and body turn around. But as you are probably standing still, this may not be an issue.

It is likely I will make an implementation at some point in time, but I cannot tell when yet.

Pascal.
daveo2013
One Eyed Hopeful
Posts: 27
Joined: Fri Mar 29, 2013 1:16 pm

Re: I think what I'm missing the most in every OR game/demo

Post by daveo2013 »

I totally agree that turning without moving the head is one of the factors that causes motion sickness. I'm working on a game that I'm not quite ready to show you guys yet (soon though, alpha demo is very close to ready... so annoying having to hold down a day job!) - with my control method you rotate using the head only, but you have a joypad button that accelerates head rotation, and another that locks it so you can ratchet your head position for comfort. It's similar to the way the trackIR would magnify your head rotation so that you didn't end up facing away from the sensor. It's very natural and comfortable, and I can play it for ages where something with traditional joypad rotation will make me sick very quickly. The worst option is the 'keyhole' mouse/hydra control many FPS games are using - that's just impossible for my brain to deal with, instant nausea!
User avatar
serrarens
One Eyed Hopeful
Posts: 6
Joined: Tue Oct 15, 2013 4:37 am
Location: The Netherlands
Contact:

Re: I think what I'm missing the most in every OR game/demo

Post by serrarens »

I made a first implementation of the 'walk straight, shoot right (or left)' functionality I described earlier. The concept works, but the straightforward implementation makes walking straight very difficult. When shooting right, the distance between the hands changes often, which has a direct effect on the direction which you are walking. The concept is therefore not usable yet, some stabilizing mechanism needs to be added. To be continued...

FYI: this is the current implementation:

// use one hand when we only have one hand enabled
orientation = controllerL.Rotation.eulerAngles.y;
if (controllerR != null && controllerR.Enabled) {
// use both hands when both are enabled
float orientation2 = controllerR.Rotation.eulerAngles.y;
// calculate the angle difference between te hands
float delta = Mathf.DeltaAngle(orientation, orientation2);
// set orientation to the average angle
orientation = modulo(orientation + delta / 2, 360);
}

// shoulder orientation
float offset = 0;
if (shoulderOrientation) {
float shoulderWidth = .4f; // just an approximation
// determine the distance between the hands in X and Z direction
// factor 1000 is needed as the Razer position is measured in millimeters
float zDiff = (controllerL.Position.z / 1000) - (controllerR.Position.z / 1000);
float xDiff = (controllerL.Position.x / 1000) - (controllerR.Position.x / 1000);
// calculate sideways distance taking the orientation into account
float diff = xDiff * Mathf.Sin (orientation * Mathf.Deg2Rad) + zDiff * Mathf.Cos (orientation * Mathf.Deg2Rad);
// the angle offset is derived from the sideways distance, angle between 0 - 90 degrees
offset = (diff / shoulderWidth) * 90;
}

// limit the orientation angle to the 0 - 360 degrees domain
orientation = modulo(startOrientation + orientation + offset, 360);
// and set the Y rotation of the transform
transform.rotation = Quaternion.AngleAxis(orientation, Vector3.up);

Pascal.
daveo2013
One Eyed Hopeful
Posts: 27
Joined: Fri Mar 29, 2013 1:16 pm

Re: I think what I'm missing the most in every OR game/demo

Post by daveo2013 »

(re my post above)
Having done some more honing of my control system I've found that using the right stick instead of a face button feels more natural - i.e. if you hold your RS in the direction your head is rotating, I accelerate the head movement (enough so that you can turn about 180 degrees in about 30 degrees or so of head movement, depending on how fast you move the head and how far over you're holding the stick); if you hold RS against the direction of head movement, head movement is negated. I also found that your FPS-trained brain wants some head-independent rotation around the up axis (i.e. left and right) - I'm now allowing slow movement using the stick alone, for fine-tuning of your view. It works well. My game isn't an FPS but I'd like to try the control method in one because I think it'd really work. I may throw something together. Anyway, I have a couple of days off work... if all continues to go well I could get my alpha 1 demo out by Tuesday night... if I stop procrastinating!
User avatar
PatimPatam
Binocular Vision CONFIRMED!
Posts: 214
Joined: Thu Jun 28, 2012 1:31 pm
Location: Barcelona

Re: I think what I'm missing the most in every OR game/demo

Post by PatimPatam »

Looking forward to your demo Daveo, sounds interesting.

I started playing a bit with the ideas mentioned in this thread (and some new ones) and it looks promising, but to do it properly i need to implement seeing your own body in game (a la TF2), so it's not as simple as a quick mod to the default Tuscany.. easier probably using UDK.

Unfortunately zero time for VR experiments atm and won't have at least for a few weeks (moving to a new flat).
User avatar
serrarens
One Eyed Hopeful
Posts: 6
Joined: Tue Oct 15, 2013 4:37 am
Location: The Netherlands
Contact:

Re: I think what I'm missing the most in every OR game/demo

Post by serrarens »

Hi Daveo,

I definately will try an implementation like yours in order to find the best experience. I do wonder how the solution behaves in practice. What happens if you use the right stick when the head is 'not rotating'. I put it between quotes because the head is always moving in reality. Also: I tend to look towards an object before deciding to go there. Like: 'he! that seems interesting, I want to look at it at close range' How should the player achieve that?

Pascal.
daveo2013
One Eyed Hopeful
Posts: 27
Joined: Fri Mar 29, 2013 1:16 pm

Re: I think what I'm missing the most in every OR game/demo

Post by daveo2013 »

@Pascal You're quite right, there was something that my brain just wasn't getting used about my controls, and it is that you want to look first and then move - impressive that you were able to intuit that from my terrible description! My solution was to let you 'ratchet back' after turning, but my brain wasn't really getting used it. I've just made another tweak, and it feels much more direct and 'arcadey' and is way simpler: I inverted the logic so that horizontal head rotation is always accelerated unless you're holding the A button, in which case it's normal (rather than frozen, which did feel a bit weird). You can 'ratchet' when you need to by holding the A button. The stick isn't really needed at all any more, but I've left it in so that you can super-rotate to pull a 180. If you're not moving your head, the stick does nothing at all (or moves your view slowly - I haven't decided yet which I prefer). In my game there's no separate head and body rotation - you move in the direction you're facing.

Only problem is, while it's not as bad as spinning with the stick, I think it's not as effective as a solution to rotation sickness as the old method :(

[edit] I've gone for a 'standing mode' in which rotation is 1:1 and can be accelerated with the stick, and a 'sitting mode' where rotation is about 2:1 (and can still be accelerated with the stick) and can be slowed down with stick/A button. Standing mode will be less vomit-enducing for sure. In both modes, the stick doesn't work by itself - I know I'm enforcing my philosophy there, but I want people to get a different experience than just an 'FPS glued to your face'.

Very excited to try your idea too Pascal :)
Post Reply

Return to “Oculus VR”