Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
bcoyle's avatar
bcoyle
Adventurer
12 years ago

Positional Tracking - Player Height

So now for a new debate about obtaining the correct player height with the DK2 :D

A few days ago I had some colleagues test a few Rift demos I had put together. Almost everyone mentioned that their view felt too high. The default profile I have is a 5'10" person. I even made a custom player profile for one person which still felt the height was off.

Is there anything with the OVRPlayerController that should be noodled to correct for a standing vs sitting experience?
Also, does the IR Camera play a role in the players height? If the camera is placed higher or lower, relative to the Rift on the viewer?

Anyone know where I can find more information about proper setup of the IR Camera? I thought I had seen diagrams of a sitting person, and also heard of 5ft being a good distance for the camera. But when I setup the demo using a tripod for the camera, having the camera 4-5ft away seemed to cause out of camera prompts on the rift. So we brought the camera much closer, about 2-3 ft which worked better.

thanks for any info & tips

8 Replies

Replies have been turned off for this discussion
  • Really is not the only thing the software needs to know is the height of the cameras position, from there the the eye height of any wearer can be calculated from the position tracking.

    There will always be a descrepency between standing avatars and sitting players perhaps most virtual avatars should be locked in a crouching position most of the time or have unnaturally short legs. For sitting use perhaps we should focus on dwarf and gnome simulators for non cockpit based games.
  • Thought I'd follow up on this after spending an evening testing various scenarios. I still can't believe this isn't a bigger issue for everyone.

    background data:
    . Player's height, 6'2" (ft)
    . Player's eye height, 5'9 (ft) - roughly measured with a measuring tape from the floor up
    . Running SDK v0.4.1

    First I looked at the OVRCameraController, which I don't use much at all
    . having 'use player eye height' ticked on, produces a camera that is given additional height for a seated view
    . so a OVRCameraController at 0,0,0 position (with use player eye height) will adjust and be at an actual viewing point of 2'10" (at least when given a player height of 6'2")
    . this personally feels about 5-6" too high from my actual seated height

    . turning off 'use player eye height' does what you think it would do, actually places the viewer at that camera position.
    . I'd be interested in having two options: sitting viewing height & standing viewing height. I mean those are options in the Config Demo Scene :)

    Second, I looked at the OVRPlayercontroller
    . I used a prefab measuring stick, with notches at every foot, and textured for 12 inches on every foot for my measuring :)
    . My player height is set to 6'2", in the demo my eye height registers as 1.776 m (or 5'8" ft)
    . Dropping a plain vanilla OVRPlayercontroller into the scene, my vision looking forward is at about 6'1"
    . I tried playing with the Height of the Character Controller within the prefab
    . each time I removed .5 m, my view dropped by about 9.5" to 10.5" inches. So messing with that setting does have an adverse affect
    . Setting the skin width to .001, from its default of .08, set my eye height at 5'9", basically nailing what my actual viewing height is [why has this settings default not been changed yet?]

    . Playing with the Character Controller radius has no affect on height, but does allow for fitting through tighter spaces

    . Pressing F2 will reset your view to the correct height. So camera position should not matter in relation to the Rift headset. But I found, at least in my demo that sometimes the positional tracking would lock up after pressing F2. Sometimes doing a bit of a movement, back and forth, the tracking seems to come back. Maybe it's just a matter of it taking it a few seconds to kick back in.

    So I'll need to demo this out with a few other people and see if this indeed does solve the problem, if not just make things a little bit better.
  • "bcoyle" wrote:
    Is there anything with the OVRPlayerController that should be noodled to correct for a standing vs sitting experience?

    Not yet. It basically assumes a standing experience, while OVRCameraController assumes a sitting experience.

    "bcoyle" wrote:
    Also, does the IR Camera play a role in the players height? If the camera is placed higher or lower, relative to the Rift on the viewer?

    This is something we will improve in the future. For now, I would recommend letting the user get seated and then pressing R. Or you could do something more sophisticated with OVRCameraController by getting the IR camera's transform as described here: https://developer.oculusvr.com/forums/viewtopic.php?f=37&t=11779&p=160605#p160605.

    "mrmonkeybat" wrote:
    For sitting use perhaps we should focus on dwarf and gnome simulators for non cockpit based games.

    It's true that a seated experience like a cockpit can feel more natural for a physically seated user. But we haven't seen comfort issues with avatars of a different height than the user. It's really up to you. However, if you choose a very short avatar and it causes the ground plane to fill most of the field of view, that could cause simulator sickness.

    "bcoyle" wrote:
    a OVRCameraController at 0,0,0 position (with use player eye height) will adjust and be at an actual viewing point of 2'10" (at least when given a player height of 6'2")

    By default, OVRCameraController assumes it's positioned roughly at the user's hip and that the user is sitting perfectly upright. You may need to move it up or down a bit depending on your posture.

    "bcoyle" wrote:
    Setting the skin width to .001, from its default of .08, set my eye height at 5'9", basically nailing what my actual viewing height is [why has this settings default not been changed yet?]

    Good idea. I've made the change and it will appear in a future release.

    "bcoyle" wrote:
    I found, at least in my demo that sometimes the positional tracking would lock up after pressing F2. Sometimes doing a bit of a movement, back and forth, the tracking seems to come back.

    In OVRMainMenu, F2 actually toggles positional tracking. Please press R instead.
  • thanks for the response vrdaveb!

    I need to start pressing R... doh!

    and stop slouching..

    hah

    It does seem that at the moment, the player should always do some sort of view reset when starting a demo/game. As soon as the game launches and the IR camera turns on, if the headset isn't seated correctly and the person isn't positioned in their posture they plan to stay in, there can be quite the discrepancy in the VR view. Even if it's small, many people easily notice it.

    I plan to require a person to stand or sit tall, press R, and then start the experience/game.

    cheers

    side note: another thing to mention is the Radius & Height of the OVRPlayerController. When building physically accurate spaces that have colliders on the walls, I've run into issues fitting through doorways. Using a Radius of 0.25 helps with the width. Height, since changing it affects the overall player height fed into the Config, has to stay the same. So I've had to adjust my geometry to disable above entry way geometry from being a collision object.
  • Just updated to v0.4.2

    Built my demo, but pressing R isn't doing anything for me...
    I'm still having to press/toggle F2 to get the view to reset properly
  • cwm9's avatar
    cwm9
    Honored Guest
    Got it.

    I managed to get my camera at my exact eye height.

    The camera is normally placed at the exact center of the collision capsule unless the OVRCameraController's "Use Player Eye Height" is ticked. The capsule is also raised by the Skin Width. So 1st, untick "Use Player Eye Height". Then, calculate the height of the capsule. The capsule size is the maximum of (twice the radius) and (height).

    capsuleHeight = max(OVRPlayerController.Radius * 2, OVRPlayerController.Height)

    Finally, change the Y Center offset to be 1/2 the capsule height PLUS the Skin Width MINUS the desired eye height. (Positive values shift the camera down.) Adding half the capsule height negates the default camera position, and subtracting the desired eye height puts the camera right where you want it.

    OVRPlayerController.Center.Y = Skin Width+capsuleHeight/2-desiredEyeHeight
  • "cwm9" wrote:
    Got it.

    I managed to get my camera at my exact eye height.

    The camera is normally placed at the exact center of the collision capsule unless the OVRCameraController's "Use Player Eye Height" is ticked. The capsule is also raised by the Skin Width. So 1st, untick "Use Player Eye Height". Then, calculate the height of the capsule. The capsule size is the maximum of (twice the radius) and (height).

    capsuleHeight = max(OVRPlayerController.Radius * 2, OVRPlayerController.Height)

    Finally, change the Y Center offset to be 1/2 the capsule height PLUS the Skin Width MINUS the desired eye height. (Positive values shift the camera down.) Adding half the capsule height negates the default camera position, and subtracting the desired eye height puts the camera right where you want it.

    OVRPlayerController.Center.Y = Skin Width+capsuleHeight/2-desiredEyeHeight


    Whoa. Nice! So would this be the ideal formula that the 'Use Player Eye Height' should use? I like the precision, but not that I lose the flexibility of using the 'Use Player Eye Height' - When I demo I like to plug in the person's height so they get the proper tailored experience to their height. If it's wrong, they seem to instantly notice that door frames are closer to them, or things feel further away from the floor.
  • May I add my humble reply..and it is that this thread is probably up there with the most valuable I've read.
    Thankyou bcoyle and cwm9 and vrdaveb and any others I've missed :)
    Great stuff. Easy to read and very topical.
    Thanks again for your hard work on this... and the outcomes !