We took Great Barrier Reef depth data and used it to model a terrain in Unity3D. We then added Oculus support allowing the user to explore the seafloor as if they were really there.
We took the High-resolution depth model for the Great Barrier Reef provided by GeoScience Australia. This dataset was extremely large (>42GB) and it had data points every 30 metres.
Strangely, this data also included many readings that were on land (with negative depth values) so we made sure to exclude these irrelevant values. The dataset was still so huge and unwieldy, so for our project we narrowed it down to particular longitude and latitude range (still representing thousands of square kilometers). We then stripped out the longitude and latitude values and provided a CSV file of depth values to be parsed by C# code running in the Unity Editor. Our Unity script would then encode these depth values into a square texture, which can be read by Unity's terrain system as a heightmap. Vertices on a plane would be raised or lowered based on the heightmap data, giving us an easy way to replicate the seafloor depth data in-engine. There was a resolution limit of 4096x4096, meaning we could represent 16777216 data points from the original dataset using one Unity terrain object. The dataset had well over a billion data points but this is plenty for the Unity engine to handle. We used a 2048x2048 heightmap texture for our demo video. If we were to expand on this, we could theoretically represent the entire Great Barrier Reef in-engine, just not all at once due to memory limitations. This project was a fun technical challenge and gave us a fascinating new way to look at mapping data.
Evidence of Work
High-resolution depth model for the Great Barrier Reef - 30 m
Description of Use: We took the ASCII version of this dataset and parsed out all unneeded land data. We then narrowed it down to a region of 2 decimal degrees across and up and down, and we parsed it into CSV file containing only the depth data that we were interested in. We then loaded this CSV into the Unity game engine, where we parsed the depth values and encoded it into a raw image texture of size 4096x4096, where each pixel represents a depth reading at 30 metre intervals. We plugged this texture into Unity's terrain system, which automatically raises or lowers the vertices on a plane according to the height data in the texture. We then made this model of the reef seafloor viewable in VR.
Australia@Sea: what is our future relationship with the ocean environment?