LABOUR VR
Role: VR Developer / Research Assistant
Company: Victoria University of Wellington
Engine: Unity
Platform: Meta Quest 3
Labour VR is a virtual reality experience designed to support women in labour by providing calming, immersive environments that help reduce pain and anxiety. The project includes interactive scenarios and guided breathwork that aim to enhance relaxation and patient comfort during labour.
In this role, I worked alongside designers, healthcare professionals, and another developer to build immersive environments, engaging interactions, and optimise performance for smooth VR experience. My contributions helped create a cohesive, realistic, and polished experience that supports users’ comfort while demonstrating effective collaboration and problem-solving within the team.
September 2025 - October 2025
KEY CONTRIBUTIONS
Underwater Scene Composition
My key contribution to this project was the composition of a calming underwater scene. I aimed to create a semi-realistic underwater environment complete with plants, shells, rocks, sea creatures, and realistic lighting. Below is a breakdown of my key contributions and how I achieved each one.
Water Caustics
I used a URP Decal Projector to create dynamic water and light effects on the seafloor, adding depth and movement that significantly enhanced the realism of the environment. The decal uses a custom material created using a Shader Graph, featuring a Voronoi node to produce shifting, organic patterns that mimic underwater caustics. This setup allowed me to adjust the speed, intensity, and distortion of the effect, giving the underwater scene a natural, visually engaging look.

Giant Kelp
I created a simple kelp asset for the background to enhance the scene’s depth. Using a basic colored cylinder, I implemented a Shader Graph to simulate realistic underwater movement. The shader uses parameters for wave height, frequency, speed, amplitude, and depth, allowing precise control over the kelp’s motion. Movement is weighted so that the base remains mostly stationary while the upper sections sway more prominently, creating dynamic, natural seaweed that can be easily reused and adjusted across the environment.

God Rays
Using Unity’s particle system, I created a light ray effect that simulates the way light travels through water. I used transparency to blend the light rays naturally into the surrounding environment, ensuring they appeared soft and diffused. By refining emission angles, lifetime, and applying noise to the particle system, I created subtle, dynamic rays that shift gradually over time, enhancing the sense of movement and depth. This approach improved the environment’s realism while maintaining strong performance and avoiding visual overstimulation.

Sea Animals
To enhance environmental interactivity, I introduced a dolphin and two sea turtles with spline-based movement paths. Each spline was configured to align the animals’ travel speed with their animation cycles for realistic motion. The dolphin features a 3D audio source that dynamically adjusts based on distance and visibility. No audio was added to the turtles, reflecting the inaudible low-frequency sounds they produce in real life.


Plant, Shell and Stone Placement
To achieve a realistic underwater scene, I distributed plants, shells, and rocks procedurally using Unity’s spline package. This approach significantly reduced manual placement time and helped maintain an optimised, organised project hierarchy.




Optimisation in Unreal Engine 5
When I first joined the Labour VR project, the team was operating a dual-engine setup and evaluating whether to continue in Unity or switch to Unreal Engine 5. Over the course of a couple of week, I assessed Unreal Engine’s performance potential, including the time, resources, and technical expertise required to achieve smooth performance. I conducted rigorous benchmarking and optimisation tests, examining CPU/GPU performance, memory usage, and asset polygon count. Based on my findings, I determined that achieving comparable performance in Unreal Engine would require substantial development time and effort. Since the Unity version was already running smoothly, I recommended proceeding with Unity, allowing the team to focus on production and feature development rather than engine migration.