Understanding The Basics of Virtual Reality

Marco Alejandro Chavez Santos
Yellowme
Published in
9 min readJul 8, 2020
Photo by NeONBRAND on Unsplash

Virtual reality is a technology that is present on movies like Matrix, Tron or Ready Player One, where it shows us an amazing world without limits, a world where you have everything that you dream and all of us want to have. I had to create one of those dream worlds in just 6 months 😨.

Scene from “Ready player one”

My story is the following: I was halfway through college and I was an intern in a software company. I was offered to work on a project creating an application using Unreal Engine (a video game engine) and Facebook’s Oculus Rift (a device to have an experience of virtual reality within the application).
Wow! It sounded great so I accepted right away with all the enthusiasm in the world. I was so excited… until they gave me the details: the project was due in 6 months 😧.

And what background did I have developing VR videogames?

I had no experience 😆.

In this post, I will talk about the concepts that I discovered and learned while designing and developing a VR application. This will be like a guide of everything you need to know to have a starting point. I really hope I can help you by sharing my knowledge.

1. Field of vision

Always keep in mind where the user’s attention is. Unlike a device such as a smartphone or a monitor, where the content is on the screen and the user must focus their eyes on it to consume the content, on a space of VR everything around the user can have their attention. VR has 360º of freedom to observe. The optimal area to present the main content will always be in front of the user and a certain degree of viewing angle that allows their peripheral vision. Also, there is the resource of the space just behind of the user, but the content in this place may not be reached by all users, unless you give some indication that it should be turned.

Source: IBM Design

Likewise, in VR the person’s field of vision is vertically extended. The user can be watching content above or below him, but keep in mind the angle of the person’s neck. You need to keep a comfortable viewing angle, because we need to avoid putting the user on uncomfortable positions that make their experience unpleasant.

Source: IBM Design

2. Distance of the content

After you define the location of the content to show, like in real life, you must balance the distance and size of the content for the user to read and appreciate without any annoyance. The content cannot be too close so that it invades their personal space and cannot be too far from the user, since not everyone has the same visual acuity. If you have the characteristics of the end users that will use the application, like their age, you can make more informed decisions.

Source: IBM Design

3. Input Methods

By input methods I mean the ways that the user can interact with our application. There are 3 ways that you can use.

Ray-based

Source: IBM Design

This method consists in constantly showing the user a kind of laser that begins from the control in his hand, similar to a laser pointer that we use to make a presentation in a room. With this laser you can select options on menus or even objects in the world. It is important to visually indicate which element the user is currently pointing at; highlighting the element’s outline is enough.

Gaze-based

This method is usually used when the device that the user has to consume VR content, does not have hand controls and only has the head mounted display (HMD). The solution for that is to do the interaction through the center position of the HMD, which is where the user looks at when he’s looking straight. When the gaze passes through different objects they are highlighted, and when holding the gaze on an object for a few seconds, this action acts as a “click”. Maybe this “click” activates either an action or opens a menu with other options that can also be selected by holding your gaze for a few seconds.

Source: VR Design Guidelines. Google Design.

Hand-based

In my opinion, this way of interacting with a virtual reality application is the one that offers the richest experience.

Source: LeapMotion

With this method the user can interact with the world with their own body. For example, you can press the buttons on a menu with your fingers, and we can also interact with the objects placed in the virtual world. Designing the method with which we can interact with objects is very interesting, because everyday we use objects for different purposes and they are designed in such a way that makes them easy to use even in an unconscious way, but when we actively think about how we use these objects, like holding a cup or opening a door and do the same on virtual reality, it is a lot of fun. I remember spending a whole week designing the action “open a door”. It sounds simple but it is complicated 😆. I recommend reading about “Norman’s doors”: this concept comes from Donald Norman. He is a professor of psychology and cognitive science, and wrote about this on his book “The Design of Everyday Things”. On his book, the first that he explains is how complicated a door can be. Some doors require printed instructions to operate, while others are so poorly designed that they lead people to do the exact opposite of what they need to in order to open them.

Source: Youtube channel Valem

4. Motion Sickness

Keep in mind that when we develop virtual reality, we must not lose the notion of the “reality” part. There are certain movements or visual and motor sensations that can affect us, and this may depend on each application. There are applications that give calm and relaxed experiences, and others that give something extreme.

VR may not be for everyone, so we have to be cautious about the target audience of our app. A couple of pointers about motion I can give you are:

Avoid moving the camera without consent

Always keep in mind that on VR the camera is the direct vision of the user. That is, if you make a movement of the camera, you are moving the user. Making these movements is very similar to seeing a landscape from inside a moving vehicle. Maybe you are or know someone who suffers dizziness in this scenario. This phenomenon is known as “motion sickness”, which occurs when two of the organs of equilibrium (sight, proprioception and inner ear) are in conflict. In this case they are sight and proprioception: physically you are standing at a point but visually you are moving, so even if the movements are made by the user, playing around for 1 hour may cause symptoms of dizziness.

Keep the user grounded

Source: IBM Design

Avoid placing the user in an unnatural situation, such as flying through the air, a place in the water or in space. It is always necessary to give a surface where users can stand. If the user is in a moving spaceship, add a fence to create a sense of security.

Performance

This was one of the last things that I discovered in the project: a video game should always have a good performance but getting it is a little difficult. It’s best to consider performance from the beginning of the project. I started considering performance when the project was almost done and I realized the application wasn’t working well. With some changes and optimizations, I improved the performance.

+90FPS

There is the concept of Frames per second (FPS), which is defined as the number of images that are displayed on the screen in just one second; in other words, it is the amount of updates you receive of a movement.
The head mounted display is a screen too, so it also has fps. A recommended amount of fps for an optimal experience is 90+, but 60 still works. A lesser amount than this can represent some discomfort after spending some time in the application. Just imagine seeing your surroundings and movements without the fluidity that it always has.

Optimization

To achieve the most optimal application that gives an acceptable amount of fps, there are some recommendations that I followed and they worked for me; they are all centered on the 3D objects and models that you present to the user.

  • Minimize the number of elements per object
  • Reduce polygons and triangles of objects
  • Avoid using dynamic lights
  • Avoid using difficult-to-process materials; for example those with reflections like mirrors and some kinds of metals.
  • Reduce the use of shadows on objects
  • Reduce the level of detail of less relevant objects

I leave you links to read more details about techniques to effectively optimize your application.

Where can I start?

The first thing I would recommend when exploring this area of technology is: feel the experience! If you want to develop for VR, you must experience it first. Nowadays it is very easy to access, since we only need our phone and cardboard (it’s not a joke).

Google Cardboard is the cheapest way to have a VR experience: this consists of a cardboard that folds into a container where you place your phone and a pair of special lenses.
On YouTube, just type “Videos 360” and a Google Cardboard icon should appear. Press it, place your phone in the center of the container and enjoy.

Video of a Roller Coaster on Youtube

Variety of devices

Additional to Google Cardboard, there are several options on the market to enjoy VR nowadays, some more expensive than others and that offer an even more complete experience with better immersion:

  • Oculus Rift
  • Oculus Quest
  • Valve Index
  • Google Daydream
  • Microsoft Odyssey
  • PlayStation VR

Some of these alternatives require a desktop PC or laptop powerful enough to run different applications/games, but they certainly offer better experiences.

Unreal Engine

Nowadays Unreal Engine 4 is one of the most popular video game engines. This was the video game engine that I used to develop my project. It offers a great integration for development in VR: the project templates that it offers even includes one that gives you all the basic configurations to be able to start, such as the setup for controlling hands, holding objects, moving around and even interacting with menus that you can modify.

Unreal Engine 4

Another resource that I used to develop the project was a set of custom menus; you can present content for the user to interact with quickly and easily. It is a paid resource but it is very worthwhile. This resource is for the Unreal Engine only.

Source: W3 Studios

¡Have fun and play video games!

Something important that undoubtedly helped me a lot and I enjoyed so much, is playing and learning with existing VR applications.
Benchmarking also helps create virtual reality applications; see how others have designed their application so that it is easy for you to understand the objectives that they have for you and how they help you reach them. See how the interfaces/menus are presented to you.
The are many stores that have a lot of free application/games which you can enjoy and experiment with.

--

--