VR delivers a sense of presence unparalleled by any other experiential technology. This has a very obvious application in video gaming, but VR can also greatly enhance productivity tasks. Architecture has become heavily linked with CAD software, and VR allows for computerized building designs to be toured as if you're really there. This could be incredibly useful for prospective home-owners or architects trying to review their work from the perspective of the people who will be using it.
What it does
CADTour allows for an arbitrary number of CAD files in specified formats to be reviewed, explored, and interacted with in virtual reality. All parts of buildings are accessible and collision-mapped, so users can check out everything from the front door to the top of the roof. CAD files stored in a local folder can be instantly imported at runtime, and can also be pulled down from online servers for easy sharing and collaboration.
How I built it
My team built this project in the Unity game engine, using the SteamVR plugin. Extensive scripting was done using both Unity's GUI and C#. SteamVR's built-in scripts and materials were also modified to better suit the needs of the project. An AWS S3 bucket was used to remotely store CAD files to test the networked features. Development was done on an HTC Vive headset, but any SteamVR-compatible device should work.
Challenges I ran into
Unity has many limitations about what can and can't be done during runtime, and also has very complicated hierarchies and object relationships. Brushing back up on that technology took a significant amount of time, as did scripting our way around the limitations. In particular, Unity's network features were difficult to use, and required pulled files to be formatted very specifically.
Similarly, Valve has recently changed the SteamVR plugin significantly, leaving behind very little useful documentation. My teammate and I had to quickly adapt to new and sometimes unintuitive methods of input, with the time spent catching up nearly approaching the time saved by the plugin's useful features.
Accomplishments that I'm proud of
I'm proud that the project accomplishes almost everything that it was meant to. Arbitrary numbers of .skp files can be easily loaded, and files can even be downloaded from the internet. Additionally, I'm proud of the presentation, which, with the help of the plugins, is very polished.
What I learned
I learned that many frameworks will have restrictions that make them (perhaps even unnecessarily) difficult to use, and that there's a point where it's worth just moving on and implementing necessary features on your own. I also learned a lot about C# and its typing, loop structures, and general features.
What's next for CADTour
There are a ton of places where CADTour could go. UIs can always use polishing, and the network support could be expanded to allow for in-game surfing of new models. Additionally, graphical fidelity could be improved with time (and money). Most importantly, I'll probably return to make an even better solution for teleportation soon. Letting everything be valid for teleportation leads to a lot of strange standing on walls, so I need to find out a nice way to programmatically generate special teleportation points on the interesting spots of buildings.