CS528 Project 1

February 16, 2020

Made With


  1. The Application
  2. The Data
  3. Source & Installation
  4. CAVE2 vs. Vive vs. Reality

The Application

Interaction | Animation | Travelling | Top

My general philosophy when creating this virtual environment was to give a sense of the scene being well-inhabited while remaining organized and devoid of clutter internally. Model placement was chosen to be as natural and meaningful as possible. For example, much of the grassy area near the center of the grove remains empty; this makes sense as furniture like benches, tables, or swings are best utilized in the shade of the trees. I opted for a higher number of small models as opposed to larger models in an effort to maintain a realistic usage of the space. Additionally the use of vehicles around the grove, along with some being animated and having a localized sound, attempted to achieve this goal.


This VR world supports two explicit interactions with the controller (both using the X button in CAVE2, left click on PC, or equivalent on Vive).

Using The Grill
The grill with a ham on the left, currently in the ON state. The grill can be switched off through interaction. Other items highlighted in the image can be seen below

The first interaction turns on and off the grill. When the user interacts with the grill, the top opens and hangs on the side and a sound effect plays (Sound #5). Additionally, a red light shines on the grill and a red particle effect emulating fire plays along with an accompanying fire sound effect (Sound #6).

Sprinkler Control
The sprinkler control (right), currently in the ON state, with two sprinklers visible nearby (left).

The second interaction controls the sprinkler system. When a user interacts with the control box (above), all of the sprinklers across the Grove will turn on (seen below). Each sprinkler consists of a custom model, a particle system, and a sound effect (Sound #1).

Sprinklers Throughout the Grove
Sprinklers (highlighted) sprinkling throughout the entire grove (click to see in more detail).

The dog who is on high alert for criminals at night will watch you carefully as you move through the scene, barking if you get too close (Sound #10). Additionally, many People throughout the scene have audio triggers which will play a clip when you approach them.


To give the feeling of an active environment, the bus on Taylor St. (south side of grove) and two cars on Morgan St. (west side of grove) are animated to drive by periodically. The Morgan St. vehicles loop continously, while the bus stops at the intersection, then continues westbound on Taylor St. These vehicles all carry a spatialized sound effect which moves along with them during their animation (Sound #4).


Through Space ...

Through the Warp menu, the user can choose to jump to 4 different locations throughout the scene. The first location is the Center of the grove where the user starts. The user can also choose to warp next to the Fountain, the intersection of Taylor & Morgan, or to the Picnic Area.

... and Through Time

The position of the directional light in the scene is calculated for the current day that the application is running. For example, running the application on February 17th will start with the sun's position as it would be at around 1:30pm that day. The Time menu does not contain only day and night, but rather contains a time range. When the time is changed, the sun's position will update appropriately. The Day scene exists between 7am and 6pm and the Night scene exists the rest of the time: 6pm to 7am. When the time is changed, the scene will update appropriately.

I chose to include the solar position calculation in this application because it made the scene feel more realistic throughout the day. In reality, the grove feels different at 8am or 5pm, as well as during Summer or Winter. This attempts to emulate that feeling within the virtual world and allows a user to step through time and witness changes in the ambience of the area. Images at different times of the day can be seen below.

Code for sun position calculation adapted from suncalc.js

Morning Sun
Early morning with the sun starting to rise in the Grove.
Noon Sun
Around Noon in the grove with the sun overhead (and to the south because it is winter).
Afternoon Sun
Late afternoon in the grove with the sun starting to set.
Dusk or early evening in the Grove. The scene has changed to 'night'.
Midnight in the grove.

The Data

Models | People | Sounds | Models In Action | Top

Icon Legend

  • - Seen in Day
  • - Seen in Night
  • - Seen all Day
  • - Spatial
  • - Global/Ambient
  • - Proximity Activated Speech


Created Models

(All models are visible all day )

  1. Bench
  2. Light Pillars
  3. Ground Lights (between benches near center)
  4. Garbage Cans
  5. Sprinklers
  6. Sprinkler Control Box
  7. Picnic Table
  8. Grill
  9. Bike Rack
  10. Bird House

Downloaded Models

Note: List counts to 20 but total count is >30

  1. Stone Fountain |
  2. Soccer Ball |
  3. Traffic Lights |
  4. Pizza and Stand |
  5. Canned Food |
  6. Moped |
  7. Laptop |
  8. Flashlight |
  9. Dog |
  10. Book |
  11. Traffic Cones |
  12. Fire Hydrant |
  13. Swing |
  14. Phone Booth |
  15. Tricycle |
  16. Skateboards |
  17. Stones | 2+ Models Used |
  18. Tents | 2 Models Used |
  19. Assorted Food | 3 Models Used | 1 + 2
  20. Car Pack | 7 Models Used | +


Speech Clips created with ttsmp3.com

People Models Downloaded:

  • Normal People
    • 2 at Picnic Table | 1 + 1 + 2
    • 3 at Soccer |
    • 3 at Tents | +
    • 1 at Stones | +
    • 1 at Moped | +
    • 1 at Benches | +
    • 2 Skateboarding |
  • Police Officer +


  1. Sprinkler + when active
  2. City Ambience +
  3. Fountain +
  4. Car Driving +
  5. BBQ Lid + on interaction
  6. Fire Burning + when active
  7. Bird +
  8. Computer Beep +
  9. Cicadas +
  10. Dog Barking +

Models in Action

Left to Right: A Light Post, Bike Rack, Moped, Tricycle, and Bird House.

Left to Right: The Taylor St. bus, Phone Booth, Traffic Lights, and one Morgan St. car.

Left to Right: The open Grill with a Ham cooking, Garbage Can with Fish on top, Bench, Laptop, Swing, and Picnic Table.

Across the image are parked cars to relieve some of the emptiness when looking outward. Bottom center are a Sprinkler and Soccer Ball

Left to Right: A few Light Posts, a Fountain with custom Water effect, Garbage Can, Recessed Ground Light, and a Bench.

On the left you'll see a beautiful Stone formation art installation, and on the right a truck parked overnight. The Police Officer is also seen here keeping the peace.

The Taylor St. bus passes in the background, behind an ongoing picnic with a tower of Canned Food (particularly Pea Stew), Pizza, and Pie.

The view from the Taylor & Morgan intersection with a Fire Hydrant and Phone Booth visible.

Highly skilled Skateboarders using Traffic Cones as an obstacle. Also visible is a Bike Rack

Campers at night with a Police Car in the background. With them they brought their Dog, three Tents, a Flashlight, and their Books.

Source and Installation

The source code for the application can be found at:

GitHub @AndrewTBurks/528P1_Burks

To Install and Run the application, clone the repository locally and add the project to UnityHub or open it in Unity using Version 2019.2.11f.

By default, the project should be configured to run on Desktop using the CAVE2 Simulator from the omicron-unity module. To configure to run for Vive, go to the Omicron menu and select Configure for Vive. Similarly, to run in CAVE2, return to the same menu and select Configure for CAVE2 and follow the rest of the build/run steps.

All Assets and packages required are included in the repository, and the Library folder should rebuild when opened in Unity.

Note: to improve your experience, make sure that your build settings are set high enough so that the dynamic daylight shadows are visible.


CAVE2 | Vive | Reality | Top

In this section, I will discuss my impressions of and compare and contrast the various Virtual Reality platforms and how they compare to each other.


The CAVE2 allowed for a great balance of virtual and physical movement throughout the virtual world. The Wand could be used primarily to drive the CAVE2 while exploring the scene. Physical movement throughout the CAVE2 space allowed for localized exploration of the current area, and allowed others to join in that section of the virtual world with me. Additionally, tracking in the virtual environment hardly hinders movement. The tracked glasses and wand are very small and light and do not distract from the process.

The floor missing in the CAVE2 is helpful in mitigating motion-sickness while in VR. By remaining grounded (literally) to the real world, I also felt as if I was further removed from the virtual environment. This lapse of immersiveness did occasionally seem to pull me out of the virtual world. For some reason, since the picture was always as far away as the screens, I got the impression that every object was far away from me, but that the whole scene was smaller. It is possible that I would get better acclimated to using the CAVE2 after continued usage.

Another issue with the CAVE2 was speed of the graphics. My scene rendered consistently at ~45 FPS. However, the RPC calls would occasionally spike to >300/s and caused an effect similar to that of dropped frames. Admittedly, this could be a problem with the application rather than of the platform, but the random spikes of lag along with occasional head-tracking delays were definitely detrimental to the overall experience.


The Vive was a very immersive experience and was a high-fidelity representation of the Grove in reality. It felt nice to be able look around myself and see objects directly next to me. It was especially important to be able to look up and down -- this would have been out of the vertical field of view of the CAVE2. Unfortunately, high-fidelity does not equate to high-resolution in the case of the Vive. The resolution of the Vive was a drawback of the system -- part of the gained immersiveness from using an HMD was lost due to poor-quality graphics.

The Vive was a much more obtrusive system in my opinion, with a heavy headset that does not feel very securely mounted on your head, a tether to the computer which interrupts your movement, and controls with too few buttons to allow you to easily and effectively interact with the scene. This could possibly be alleviated with a better mapping of controls to the Vive controllers. However, for cross-platform support using the omicron-unity library, there are a lot of controls to map and it is difficult to do so with the amount of buttons.


VR versus Reality

When using the CAVE2 and Vive, I felt that the virtual environment was smaller than in reality. There could be a number of factors which could cause this. My first instinct is to assume that it could have something to do with the default navigation speed as well as the scale of the models.

When navigating in the virtual world, the path taken generally does not follow the path you would walk in reality. For example, fine-grained movement is more difficult in VR and that makes it very easy for your movement to devolve into straight lines between locations, whereas in reality you would be more likely to follow the winding sidewalks around the Grove. The sense of scale I got from the Vive seemed to be better than that of the CAVE2 and I would attribute some of that to being able to see the ground below you while you are moving.

The most recent few times I have walked through the Grove have been in Winter. Additionally, the grove is not very furnished. With the trees being empty as well as much of the common space, I felt that the grove was fairly large and empty. It is possible that the tree coverage of the virtual environment made environments feel smaller in comparison to reality, as well.

I understand the tradeoff between immersiveness and collaboration + resolution which can distinguish between the CAVE2 and Vive. The collaborative factor in using the CAVE2 was also a great strength of the system. With the CAVE2, I was able to load my application and discuss it with others, whereas the Vive is nearly completely isolated. An external screen can mirror what is seen in the Vive, but the users are not sharing the experience with you.

With that in mind, I prefer the CAVE2 over the Vive for this activity. Although the CAVE2 was less immersive than the Vive, the CAVE2 served as a better platform to explore the virtual environment. As mentioned in the previous sections, the CAVE2 was much less obtrusive with the equipment required than the Vive.