Emerging Technologies Development Diary: entry six

14 April 2018

Categories: C# | Unity | XR | Design | Research

  • Enlarge image

During this development session we fixed a number of bugs and implemented a couple of features. It was mostly a session to polish off what we have, ticking stuff on our todo list.

There was a bug where UI elements would have a particular z-order no matter what their z-position is. This was caused because all of our UI elements were a child of a canvas and each canvas has its own sorting order, so we fixed it by giving each UI element its own canvas. This seems a little awkward but that’s Unity for you, it wouldn’t be an issue in most situations but for our particular demo we need each element to be ordered based on its z position, not a predetermined order the canvas decides on.

We had scaling implemented with one particular joystick on one particular hand, now each hand uses its own joystick which controls the scaling of the element being held in that particular hand.

When we first started the project we implemented a feature that would lock UI elements so they couldn’t be grabbed. We mistook this as a bug when a play tester accidentally pressed this button and caused elements to appear to be stuck. This feature to lock UI elements was something we had on our list to implement so the fact it had already been done was a nice surprise.

We added some nice touches to our glasses, by adding in music that plays when they’re equipped. This does have issues if you equip multiple glasses, but equipping multiple glasses was never meant to be an intended part of the prototype anyway. We also added more UI elements to some glasses and moved some to others

We added a limit to how far you can drag a UI element to be within a specific angle, so now UI elements shouldn’t be able to be placed too far to your right or left, and thus become unreachable and unseeable.

We discovered we had issues with how Unity was handling euler angles, where looking up was based on 360-180 and looking down was 0-180. This wasn’t discovered when implementing the angle limit to moving UI elements since that was based on the angle between the camera’s forward vector and the vector towards the UI element. Instead we implemented an angle limit to the billboarding so that as you look really far down or really far up it won’t rotate wildly; it took longer to implement than expected because of the euler angle issue.

All of the text elements had their resolution fixed so they were no longer blurry. We also modified the position of all UI elements so that they spawn a certain distance from the player and within their view, just a minor thing but it makes it so much more comfortable to use.

We discussed having the UI locked to the view vs locked to the player, so that when you rotate the elements don’t rotate with your view and you have to turn around to see them. We believe this would complicate our elements too much and doesn’t really suit our purpose where all the UI elements should be visible at the same time. It might be a neat feature to implement in the future for specific games and situations though, such as keeping all of your menus to your right while you focus on what is in front of you.

One playtester gave us feedback that he would’ve liked an indicator for the distance limit on how far UI can be dragged close to your view and how far it can be dragged away. We decided this isn’t really necessary due to no other playtesters mentioning it and the implementation cluttering the view. Instead we decided to adjust the limits so that they were more natural, so we increased the far-distance limit by 20%, and the close-distance limit by 25%

Playtesters sometimes hit their oculus when taking off their glasses. We discovered that the colliders on the glasses were slightly off, so when you attempted to take them off with your right hand it wouldn’t be in the correct location. We moved the colliders so they were recentered so hopefully any more playtesters won’t have that issue.

A playtester suggested having a position on the player where we could store or pull glasses from, while we thought that was a good idea we ultimately decided not to implement it. We’re mostly polishing off our prototype rather than implementing new features.

We found that because of how billboarding works and the difference sizes of UI elements it can be hard to align them as they rotate when you look around. Ideally we could somehow billboard the vertices of the UI elements themselves rather than just the center position of them so that aligning elements would be much more effective.

We found that the new angle-lock on UI elements so they stop rotating as you look up had issues when you were holding a UI element, so we excluded any UI elements that are currently being held and now it’s working great.

With this session done the only thing left on our todo list was to add interactive elements such as buttons or slides as how the player interacts with them in the different z-planes could be interesting, such as do they try and move their hand around an element close to them to get to an element hind that one, or do they just move the closer element out of the way first. We likely won’t have time to explore this, but it’s something to think about.