Life...

A Satirical Virtual Reality Experience

Screen recording of 'Life: A Satirical VR Experience'

  • Work Type: Narrative VR Course - Group Project
  • Duration: 7 Weeks
  • Categories: Virtual RealityInteraction DesignProcess

Project Background

This VR experience is a representation of different stages of life. There are three consecutive rooms as shown in the diagram below:

Three members worked on this project and each member was responsible for the complete design and development of one room. I was responsible for completing Room 1: The room of scares. Descriptions of each room is given below:

Room #1: Interactive

Represents: Early life challenges
Objective: Find a key to open second door
Objects: Drawers, chests, rocking chair, antique closets
Scares: Jack in the box, whispers, crawling hand, bugs
Spacial Audio: Whispering voices near the rocking chair and creepy background music

Room #2: Narrative/Interactive

Represents:
1. Midlife crisis: falling into a hole, but landing in a pleasant room
2. Old age: room shrinking down, tik-tok, running out of time to find the key to Nirvana
Setting: Participant falls into an abyss/ a hole but then lands softly in a library full of achievements
Objects: furniture, bookshelves, awards, diplomas
Interactions: Touches an object to open a secret door, gets message to find key
Spacial Audio:
calm classical music when landing in the library
Music stops, Tik-tok sound as room starts shrinking

Room #3: Narrative

Represents:
Nirvana – rebirthed as a butterfly in a beautiful field, only to be squashed by a giant hand.
Everything turns black.
Objects: field, trees, flowers, butterflies
Spacial Audio:
Sounds of nature
Wings flapping

Development

At the beginning of the experience the user will find him/herself in a dark room with a door in front of him/her. The first step was to add an interaction with the door.

A short video of this interaction is shown below:

I worked on the textures, materials, lighting and assets for this room. Some materials I created are shown below:

Old wall material:

I adjusted the lighting of the room and made it darker using post processing volume.

The assets I used to fill in the furniture for the room were downloaded from websites such as TurboSquid and Free3D.

Some furniture items were easily imported into Unreal Engine 4 since they were in .fbx format but I found a few in .obj format so for these I had to import the model separately and then import the texture files and create material out of those texture files. The material was then applied to the mesh models.

There are a few objects in the scene that the user will interact with for example a closet which opens up as user gets close to it. In order to make this interaction I opened the closet model in Maya and separated the closet doors from the rest of the closet and imported them as separate assets so that I can animate the opening of closet doors in Unreal’s Sequencer. I did the same process of detaching doors, lids and drawers for some of the furniture in the room.

Testing in VR

After placing a few items inside the room I tested it out in VR to see if the scale of the room was appropriate. Once I was happy with the scale of the room in VR I moved on to adding items inside the room to complete the setting.

I also added the VR pawn and checked how teleportation was working in VR mode. In order to move around using teleportation I added a navMeshBoundsVolume to the room however, I noticed that even though the navMeshBoundsVolume was within the room I was able to teleport outside through the door. The walls were blocking the teleportation since they were static but the door was set to movable so I could teleport outside of it. I did not want this to happen when the door is closed so I decided to add a wall behind the closed door to stop teleportation and remove this wall when the door opens.

Screenshots of the room:

Spacial Audio:

I downloaded a creepy whispering audio from Youtube: Link to Audio.

After normalizing it to -0.1db and converting it to mono I imported it into Unreal Engine 4 and made a sound cue for it. Below is a screenshot of the sound cue.

I then added this cue to the room near the rocking chair and adjusted some of its attenuation settings so that the user will hear the whispers only when s/he gets closer to the rocking chair. I also added a spotlight above the chair to invite the users towards it. Below is a screenshot of the attentuation settings I used.

Below is a video of the effect I was able to achieve (Note: I have disabled the post processing volume effects for this video).

Interactions

Next I worked on animating some furniture items in the Sequencer and then adding trigger boxes to activate those animations as the user gets close to a particular item. This will give the illusion that the user has activated those animations. I used level Blueprints and branches to achieve this.

Following are some interactions that have been completed for Room 1: the room of early life challenges.

Rocking chair:
I added a trigger box in front of the chair and toggled the sequencer for rocking chair when the user overlaps the trigger box. Below is the blueprint for the chair:

Red closet/Jeff the killer:
I used three different trigger boxes to create this interaction. One trigger box was used to trigger the opening of left closet door, one for triggering the right door and last one to trigger the animation of ‘jeff the killer’ coming out of the closet.

Below are blueprints for the two doors:

Jeff the Killer:
This mesh was imported as a skeleton mesh. I also imported three different animations for this mesh. The animations were created in Mixamo. The animations were put together and played through a level sequencer. In order to only play jeff’s interaction once during the game I used a variable called LeftDoorOpen which tells whether the door is open or closed. The sequencer is only triggered if this variable is false and once the door has been opened this variable turns to true and hence the animation does not trigger when the user overlaps the trigger box again.

Following is the blueprint for triggering jeff the killer animation:

Box/Pennywise clown:
I used a trigger box and its overlapping function to toggle the box's lid opening animation as well as pennywise the clown sequencer.

The blueprints are given below:

Below is a screen recording of the interactions.

Final Steps

Next I added animations for the spiders which are triggered when user gets close to the closet. The closet has a drawer which in turn has a key which opens the door. I also added animation for this key. Once the user opens this drawer s/he gets the key and s/he can then exit through the door. This is done by using a variable called 'hasKey' and setting this to true when the user triggers this sequencer. Door only opens when this variable is set to true.

A message saying 'You can go through the door' appears in front of the user. This message was added because during user testing some users could not see the key because of its dark color which blended against the dim lighting.

Another point that came up during user testing was that some users did not know which objects in the room were interactive and they wanted some cue for these interactive objects. In order to address this, I decided to add some pulsating spot lights on top of the interactive objects in order to invite the users towards them.

This completed the development of the first room. After my team members had completed their rooms we combined all our levels together. This was done by streaming new levels through the blueprint from a persistent level.

Screen recording of the complete experience (all three rooms) is given below: