Our inspiration came from just wanting to experiment with VR for the first time and build something at VTHacks 7. We also just thought ray tracing and realistic rendering technologies were cool, and wanted to see what rendering in VR would look like. Interacting with in game objects would be equivalent to interior design, and this could be applicable to the real estate industry - and thus the idea for SwapVR was born.
What it does
SwapVR allows the user to look around a virtual environment of a home. Home builders and interior designers can create 3D models before starting construction work, and potential customers can customize their homes by mix and matching different available options in the house by pointing and clicking with the VR remote. The program can then output the data of what users prefer in their house, and these collected data sets can be used in the future to better cater to customer needs and preferences.
How we built it
We built the program in Unity since it has VR support, and because we could quickly make a 3D model and import it in. After making a model of a home interior and decorating it, we added materials (including textures and normal mapping), lighting (light sources, ambient occlusion, shadows, light baking, and skybox), and a player script later discussed. On the data analytics side of things, we used Microsoft Excel to list different categories and options for each category that customers could use, and generated some sample program data with it.
Challenges we ran into
One major challenge we ran into was that the Oculus rift needs a dedicated graphics card to run, and neither of us had access to one (and the Alienware laptops that were available to rent were not working). To solve this, we added an object into the Unity project to represent a person walking, and added two cameras at the top spaced approximately the same distance as human eyes would be. We then mapped the camera displays to two separate displays and opened them both at the same time in two tabs. Since we couldn't connect with the Oculus, it just worked as a second display and both halfs of our main screen merged into one image in the Rift. Since we couldn't use the Oculus sensors either, we made a basic movement script using keyboard inputs and allowed the user to rotate around using mouse inputs. On the plus side, this gives a good alternative to those with weaker computers, and can also be modified easily to work with Google cardboard VR API's. We tried working with Microstrategies for data analytics, but due to our data being mainly qualitative (ex: wall color or countertop stone type), we weren't able to display the data in meaningful enough infographics. We also tried to make the house a raycast target (meaning you can point and click at a wall to change the color), but since we designed it as a single model, we weren't able to choose a specific part of the house. Due to time constraints, we weren't able to split the house up into subsections either. Lastly, we tried adding volumetric lighting in our Unity scenes but that was just too much to ask of our laptops that were about to melt down.
What we are proud of
We are proud that this was our first hackathon, and our first time Working with VR. We didn't have much skill in programming C# either, but we were able to find a workaround that worked surprisingly well. We feel like our idea can still be improved upon and has some potential in actual markets.
What we learned
We learned that not everything can go according to plan, but given the time span and expertise available to us, finding an alternative workaround isn't impossible. Seeing the VR API's was a first for us as well as trying to create photorealistic renders. Lastly, we found out more about how in depth Unity goes and the possibilities of what people can make with it.
What is next
Next up: splitting the house model and using Unity event triggers with raycast targets so that users can interact with the house in VR and change aspects of it. We also want to make a standardized system or format for collecting the data since houses can be personalized in depth. Improving the run time performance of the program is also something we considered, but it can greatly vary based on the computer setup available.