Comparison OF Unity and Paraview - Geospatial Data
This is the result of my exploration of 3D visualization technologies. I specifically used geospatial data, with coordinates encoded in latitude and longitude.
Unity is best known as a game engine with a very low barrier of entry. It's easy to learn, easy to use, and fast prototyping. It also has great integration with VR, which was important for this project. I had some prior experience with it so decided to load the data and see what it can do.
Loading the data was surprisingly not well supported. Unity can deserialize .json files into Unity GameObject type and automatically populate its properties. It has no support for loading csv files or similar formats. I had two options. First was to split the data file into 50,000 files, one for each meteorite datapoint, and let Unity load them using its builtin functions. The other option was to write or find a csv parser and see what I can do with it. I went with the second option, and found a reasonably good parser that managed to process the file fast.
Creating objects in Unity is an expensive operation, and I expected this to be the hard step. To speed up the instantiation, I used spheres as they are some of the simplest objects. Overall, this operation took ~45 seconds on my laptop, and the resulting display wasn't very smooth.
The final step was adding rotation. The points rotated around an imaginary center, and this made it possible to see all points from one angle without asking the viewer to move around the object.
Overall, I found that Unity is good at the things it's made for - coloring the objects and scripting behaviors. However, it lacks the capability of showing many points at the same time (and I didn't even use a very large dataset), and had barely any support for loading in the dataset.
My opinion of ParaView greatly changed since the start of the semester. While the UI takes a bit of getting used to, under the hood it's extremely powerful. I had a small issue with recognizing the types of data attributes, but that was an easy fix with a python script (included in the tutorial). Otherwise, loading the data was just a matter of drag-and-dropping the csv file.
Displaying the data was fairly fast, and I didn't notice stutter when changing parameters or adding colors based on certain attributes. It was also great that the way data is displayed was a matter of updating a few dropdown menus instead of having to write and debug code.
Overall, ParaView was great at visualizing the data very fast and keeping up with updates to the viewing settings. While it has its limits, such as struggling to handle files over 2GB on my machine, it does its job very well.