We wanted to create a system that taught users how to echolocate through the use of motion tracking capabilities of a VR headset. Unfortunately, this turned out to be far more complicated than we expected, so we settled for an equally immersive, yet slightly more realistic project to undertake. That's where resonate was born.
What it does
Using VR, we immerse the user in a room with a visual representation of sound waves interacting with the walls and objects in the room. With fully computer simulated data, the user gets to see sound waves constructively and destructively interfering with one another. The user can move around the space with the Oculus Touch controllers, giving them total freedom to explore regions of interest in the dataset.
How we built it
We ran a wave propagation simulation in MATLAB using a pre built package with a custom constructed room. The data from this simulation was then converted to a Unity friendly data format for interpreting. In Unity, the data is translated into a voxel representation of the room, with the intensity and transparency of the colours of each voxel chosen to reflect the simulated data and produce an intuitively understandable (and beautiful!) visualization.
Challenges we ran into
We had to write our own custom data format that could be exported from MATLAB, and then read into Unity because of the file size constraints of our simulation. We had simulation files of many GB that would completely lock up computers if not processed smartly.
Also, having never done Unity development before, both our team members to get familiar with the dev environment before building anything truly interactive.
Accomplishments that we're proud of
Our hand written data format that allowed for efficient transfer of the many GBs of simulation data. We're also pretty proud of the beautiful and immersive representation of the data!
What we learned
- VR dev in Unity
- How to get finicky datasets to be cross compatible
- Numerical solution of the wave equation (<3 partial derivatives)
What's next for resonate
We would like to further refine our custom data format to increase the speed at which data can be loaded into Unity. This would allow larger and more fluid simulation data to be visualized in VR, making even more impressive experiences for users.
Also, we would like to increase the interactivity of the simulation, giving users control over the speed of the visualization.