25 Oct 2019 | Sujay
I got a chance to talk about this project in Unite India 2018!!!
After spending quite a lot of time on a bunch of VR headsets (Oculus, GearVR, Vive and Samsung Odyssey), I finally got to work on a different kind of VR setup. The CAVE VR setup felt like a different experience.
The purpose of the project was to demonstrate the failure cases that can cause a nuclear reactor meltdown and the contingency measures that are implemented to avoid a catastrophe. The experience was to be shown in the CAVE setup. My task was to build the VR experience in Unity. The team onsite was handling the deployment and hence I didn’t really have to bother about hardware and deployment specific problems.
Over a period of 8 weeks, I worked on building the interactive experience, including gameplay, scene development, shader development, lighting, programming, UI, optimizing, profiling, and testing. I collaborated with several 3D artists who developed the necessary assets, while my mentor and colleague Vivek provided valuable feedback throughout the development process.
During the development of this project, I implemented several interesting solutions to overcome technical challenges:
One requirement was to create dynamic pipes that connect two components over time. I developed a linear pipe system with a two-step process: first defining the pipe’s path points, then dynamically generating the pipe geometry. This allowed for real-time pipe creation during the simulation.
GitHub Repository - Procedural Pipes Unity
This was a editor script that can combine multiple small game objects into a single gameobject. Goal was to reduce the drawcalls. The limitation was that i could only combine the objects that had same materials. This is similar to static batching. But what happens when these Gameobjects (with same materials) are spread across a large area? Then we will have 1 draw call, but that drawcall will be a very expensive one with way too many polygons. To solve this, I combined the meshes that are in one area into a single mesh. I made this script to combine similar objects that are nearby into a single mesh. That way I could find a good middleground between occlusion culling and static batching and get good performance. You can checkout this script here.
This was an editor script that would flip the normals of an existing asset and generate an inner side of an asset. This was just a hack for me to generate interiors of the facility, without having to go through the whole asset creation process. Here is the script.