DinoVR vs. Unity for CollaborativePoint Cloud Data Visualization
By: Mandy He (2022)
For my in-class activity, I essentially visualized the same set of data using DinoVR and Unity3D + XR Interaction Toolkit + Normcore. Below I will describe the pros and cons of using each for point cloud visualization. (See my in-class activity for downloadable links and instructions on how to see each experience in a Quest 2 headset).
DinoVR
(David and Ross screenshot)
Unity + XR Interaction Toolkit + Normcore
(Beatrice's screenshot)
Developer Comparison:
Setup Requirements
Winner: Unity
Unity can be run from Windows, MacOS, and Linux. Potentially the most irritating part would be enabling developer mode for your Oculus Quest 2. To run the .apk built from Unity on your headset, you would only need to build the .apk onto your headset once.
DinoVR only runs on Windows. Also, if you want to actually rebuild the project to do any actual development beyond replacing your data and editing the config file (see Using DinoVR for Point Cloud Data), you would need to download MinVR and Visual Studio Editor (or a similar IDE). To run DinoVR on your headset, you would need to install Steam, SteamVR and Virtual Desktop.
Ease of Use
Winner: Depends
Unity + XR Interaction Toolkit + Normcore:
Having never used unity before, I followed all tutorials at a snail's pace and had to do a lot of research whenever anything broke and I had no idea why. I was eventually able to get the data visualization to display with minor collaboration. However, when at one point I had to restart from scratch, I completed essentially what I had done in 3 days in the span of an hour and a half. TLDR: Unity + XR Interaction Toolkit + Normcore might be easier to use if you have had experience with VR development using Unity or maybe even just experience with Unity itself.
DinoVR:
At first, when attempting to use DinoVR to visualize my data, I thought that I had to rebuild the project in order to replace the data and references to the data successfully. Installing MinVR and ensuring that it worked was a pain. Even after realizing I could just edit files from the .zip file in the DinoVR Tutorial , I needed guidance to know how to format the data, which files to change, etc.. DinoVR is quite niche and lacks documentation. Hence, it's very easy to get stuck and helpless when working with it. Unlike Unity where there are likely many sources online that could potentially help you debug issues, DinoVR has no such sources online.
User Experience Comparison:
Here are the results of a survey people in class filled out after completing my in-class activity:
Summary
Winner: Depends
Setting up: Users had trouble with both.
Either SteamVR failed to work for them when launching DinoVR or they struggled to build the Unity app using SideQuest or enabling developer mode.
Lag: DinoVR wins. The Unity .apk definitely had more lag.
For large sets of data, DinoVR definitely wins in terms of having less lag.
Collaboration Features: Normcore (Unity) wins.
Despite not being able to see when other people move points (this was likely due to the fact that I had two different builds and I wasn't able to test this aspect before the in-class activity), the class unanimously agreed that the multiplayer features that Normcore made possible were preferred over DinoVR's collaborative features.
Conclusion: DinoVR is certainly good at what it was made to do: visualizing large sets of point cloud data with some collaboration. However, Unity + XR Interaction Toolkit + Normcore has some great potential for incorporating more intuitive user controls and navigation, more deliberate color maps, and more engaging collaboration features. In other words, in terms of customization, Unity + XR Interaction Toolkit + Normcore is definitely work taking a shot at.
Sidenote: Why DinoVR vs Unity?
Originally, I wanted to compare Unity+IATK toolkit, Virtualitics and D6VR since they were made for data visualization. However, I soon realized that IATK only ran on Windows and I had a Mac, D6VR never got back to me after I requested a demo in order to use their software, and a classmate had issues with the collaboration aspect of Virtualitics due to licensing issues.
Having never done VR development before this course, I wanted to try a software that was open source (since I wanted a wide array of free tutorials), heavily documented and something that could be used on a Mac since I would lose access to my Windows virtual machine once this course ended. Hence, I stuck with Unity. After realizing that DinoVR was essentially made for point cloud visualizations, I decided that it would be interesting to compare both my experience "developing" with the two software, as well as general user experience seeing the same visualization in both software.