Thursday, August 26, 2010

Virtual Reality User Interface

Quite recently I finished my Master thesis in Interaction Design together with Fredrik Wendt. Our project was performed at Dynagraph and the task was to create a user interface for a Virtual Reality application geared towards beginner users.

The development was performed in Unity3D, an environment mainly used for game development. Apart from the general features separating Unity from other similar software, one of the main benefits with using Unity for this project was that it uses an Immediate Mode Graphical User Interface. This allowed us to quickly create simple, fully functioning prototypes of the different designs we wanted to try. For anyone looking to make small games on his/her free time, I highly recommend having a look at Unity.

The final result of the project is a set of navigation controls and a menu system with a number of functions available to the user. The navigation system has been designed to be usable for people with very little experience with computers in general. While testing, one of the biggest problems for inexperienced computer users turned out to be the inability to use both hands simultaneously to control the camera. The system therefore has to be controllable using only one hand. Our solution to this problem was to implement a navigation system based on a simple idea: the camera goes where the user points. If the user holds the right mouse button, the camera will move towards the surface the mouse is pointing at. The speed of the movement depends on the distance to the target surface.

The interface contains a number of solutions like the one discussed above, all explained in the master thesis report. The report is available in the Chalmers Publication Library in full for anyone who wants to read it.

Until then, you can have a look at the interface by checking these three videos. The 3D environment used in the videos is an example project that comes with the Unity editor and can also be downloaded here. The first video shows the general navigation while the other two videos show the GUI. I'm sorry about the stressed pace in the videos, but I was having some issues with the capturing software which meant I had to decrease the video file sizes.



The main navigation controls, including moving forwards, backwards, panning, rotating and using hover-camera. The main navigation can be done in two ways:

  • The user can move forwards, backwards and strafe by using the WASD-keys while rotating the camera by holding the left mouse button and moving the mouse, or
  • The user can move towards a target by holding the right mouse button and pointing towards the desired destination. The user cannot move backwards without using the keys (which we found very few users tried to do anyway).

In both modes the speed of the movement is automatically set depending on the distance to the target allowing the user to move at street level as easily as fly between mountain tops. In the video the second mode is used to move around.

The user can also pan the view by holding both mouse buttons and moving the mouse. And finally, the user can enter the hover-camera mode by holding the space bar and left mouse button and move the mouse around. A blue marker shows the center of the hover-camera movement when in this mode.





The interface windows and their functionality are hopefully fairly easy to understand in the video. It should be noted that the example project we use in this demo has no dynamic shadows, which is why very little changes when the user sets a new date and time. The light source is moved accordingly in the sky, but it is hard to see in the demo. For more details on the functionality in the interface I refer you to the project report.

2 comments:

  1. Hi, awsome job!

    Can we download and use your UI for Unity3d??

    That would be very great!

    Greatings, MAts

    ReplyDelete
  2. please is there a way to get it :)

    ReplyDelete