Building Virtual Worlds
Thermae: Roman Bathhouse
A cross-disciplinary VR experience built in Unity for the Oculus Quest 2.
Project Overview
Immersive Histories: A Roman Thermae Virtual Reality Experience lets users step into ancient Roman life, exploring the social and functional aspects of the bathhouse. Visitors can enter the frigidarium to learn about its art and heating and cooling systems, then wander the open-air palestra courtyard—where exercise and socializing took place—while overhearing conversations and enjoying a minstrel’s music.
Teaming up with art history students, we had just three weeks to develop a functional virtual reality experience.
Project Walkthrough
Interactions
What Can You Experience?
When designing this experience, the team wanted the end user to feel fully immersed in the environment, as if they had travelled back in time to be amongst the people and culture.
To pull this off we created the following key interactions:
- Animated Characters
- 360 degree audio with triggers for educational content
- Convenient user interfaces to provide guidance and transport the user to specific areas of the experience
- Crossfading between scenes for a better user experience
Technical Implementation
Specific scripts were developed to enhance the user interface and immersion. For example, the Logo Scale Script allowed for dynamic resizing of UI elements on the canvas.
Another challenge was the main menu, which featured a 3D unrolling scroll. I implemented a Button Appearance Delay script to ensure the interactive buttons only appeared after the scroll animation had completed, preserving the physical realism of the UI.
Challenges & Complications
Optimization: The biggest hurdle was file size management. The project ballooned to a whopping 29GB, making collaboration difficult. I had to aggressively scavenge the project for unused assets and worked with the animator to reduce polygon counts.
VR Discrepancies: The preview window in Unity did not correlate 1:1 with the Oculus headset view. UI elements and player height felt different in-headset, requiring constant "build and test" cycles.
The "One-Eyed" Shader: Our water shader—integral to a bathhouse—would only render in the left eye on the Quest! As a workaround, I swapped it for a simpler, non-moving shader to maintain immersion across both eyes.
The Virtual Experience
Despite the challenges, we created a rich environment where users can teleport between different chambers of the bathhouse, learn about Roman culture through interactive pop-ups, and observe animated characters inhabiting the space.
My Role & Development
My primary role as the project lead was to ensure that the team of 3 developers worked towards the same vision and to directing their specific skills and to bring together all the assets for a uniform final product. In addition, I served as the technical integrator, responsible for designing the terrain, laying out game objects, implementing spatial audio, and troubleshooting errors.
Additionally, I wrote the C# scripts that triggered key interactions within the experience:
- Teleporting players to specific areas of the bathhouse.
- Revealing and hiding historical information panels.
- Playing specific animation "takes" created by our animator, Ace.
- Designing menu interactions and UI flow.
Conclusion
This collaboration allowed my team to readily jump into the technical aspects of a project without having to worry about the research phase, as the Art History students provided the context. It was a rigorous test of our ability to produce a uniform, functional VR application in a short timeframe.