Skip to main content
Participant
April 7, 2013

Some observations

Hi there! Just passing on my observations after spending a few days integrating the Rift into our game.

Observation one: the current Unity plugin implementation briefly threw me for a loop. I'm of the opinion that any controller or peripheral should try and follow Unity's input manager model as closely as possible, since that would make a proper integration much easier. The groundwork I had laid in preparation for integrating the Rift assumed I would be treating the Rift sensor data as controller input axes, polling the HMD for the orientation every frame, and in general just treating whatever Rift object/prefab was supplied as just a straightforward camera replacement. It took me a little while to figure it out, but I got it working in the end.

(We're using Mecanim and IK with a full body avatar system, and our entire motion control scheme was based around polling new peripherals for positional and/or rotational input and either applying those directly to the affected bones or using them to drive IK effectors. In this case, the expected implementation assumed that the HMD would only be supplying its look rotation and the skeletal IK would have taken care of orienting and positioning the cameras.)

Observation two: Rotational drift isn't that noticeable without an avatar body or a pair of hands in the scene, but once you have it hooked up to a body, you can see quite a bit of drift in the Y axis that accumulates over time. I have to hit the B button to reset it about once every couple of minutes. Any advice on minimizing or mitigating that would be welcome.

Observation three: Some visual elements that our art director loves are broken, like realtime shadows and skyboxes. Light cookies are also semi-broken. This...is not good. I really don't want to have to fork things all over the place to ensure that things look good on both monitors and the Rift, 'cause things are complicated enough as it is. Advice and any news of pending fixes/reworks are most welcome.

Observation four: Unity is...a bit awkward when it comes to trying to launch games on the Rift. Sometimes the "-adapter N" command line trick works, sometimes it doesn't, and I end up having to clone the Rift with my primary display to make it work reliably. This brought on a sudden attack of curiosity about how to handle this sort of issue on the user side of things--does anyone here have any practical tips for making Unity standalone builds play nice without having to explain to them how to screw around with their display settings and whatnot?

Observation five: With a full body avatar system, the lack of position tracking for the HMD becomes a noticeable issue at certain points in the game. In our case, the avatar's wearing a headlamp that's turned on by reaching up to your head and pulling the trigger on a Hydra controller, and sometimes the head/hand relationship isn't 1:1 at all. It's sort of dealable with, but it would be way better if it wasn't an issue in the first place. This isn't so much an Unity integration thing as much as something general that came up while I was integrating it, and I wanted to mention it before I forgot. So if there's anyplace where I can cast my vote for an add-on position tracker or to have positional tracking added to the consumer version, point me there so I can toss my 2 cents in. :)
    This topic has been closed for replies.

    14 replies

    Participant
    April 8, 2013
    Sorry, I'm used to expressing axes in XYZ style, it's an artifact of my 15+ years as a 3D modeler and 3D programmer and a really hard habit to break. I'll be sure to use the proper VR terminology here going forward. :)

    So deferred lighting being broken really is a problem with Unity itself, after all. Well, I'll be. Any way I can help poke Unity into the right direction? Not that I have any pull with them or anything like that, but you know what they say about straws and camel's backs.
    Inspiring
    April 8, 2013
    This thread on the Unity forum has more info about the problem:

    http://forum.unity3d.com/threads/152428 ... ?p=1073898

    Might be worth a look. I guess it's possible there could be a workaround.
    AMD Ryzen 7 1800X | MSI X370 Titanium | G.Skill 16GB DDR4 3200 | EVGA SuperNOVA 1000 | Corsair Hydro H110i Gigabyte RX Vega 64 x2 | Samsung 960 Evo M.2 500GB | Seagate FireCuda SSHD 2TB | Phanteks ENTHOO EVOLV
    Up and Coming
    April 8, 2013
    @ChristopherRoe: Pitch, roll, and yaw is also standard terminology, coming originally from the aviation industry but broadly applied when there is a view axis and often a gravity axis. Wikipedia has a good description:
    http://en.wikipedia.org/wiki/Aircraft_principal_axes

    In the VR case, consider your head the airplane.

    This terminology works better than rX, rY, rZ when rotations only are concerned because it doesn't depend on the coordinate system choice. Otherwise, both Z and Y are commonly used for the vertical axis, causing confusion.
    Participant
    April 9, 2013
    @cybereality: Thanks for the link! I'll look into it some more tonight.

    @rmcclelland: Never said they weren't standard terminology, nor did I say they were incorrect. I simply said that I was accustomed to expressing coordinates and rotations in XYZ style out of habit because that's how the tools I work with express them. :)