June 25, 2019
Not surprisingly, nothing went as smoothly as I was hoping. Once I got into Unity and began the process of converting our current PC VR projects to Android, I was met with a mix of Unity bugs, bad setting configurations and just crashing for reasons that I have yet to figure out.
I only had a very short window to get something up and running on the Oculus Quest before I had to move on to other projects. I was looking for a quick turnaround so I attempted to convert our most basic package to the new platform. After waiting for what felt like hours for Unity to switch over to the Android platform, I removed all the old cameras from the scene and installed the latest Oculus SDK. I published it to the Quest and to no one’s surprise, it crashed! Instead of spending too long debugging this I decided to start fresh with a new Unity project, import the models and publish again.
While I was creating the new project, I noticed something new, Unity has a new render pipeline specifically designed for low powered devices. I did a little research into it and got really excited; they were promising up to 100% gains in performance. Knowing how unoptimized the current render pipeline is, I believed them. But of course, nothing is that easy. There seems to be a bug with the package when exporting it to Android. Right at the end of the build process an error would pop up, “Return of the style/VrActivityTheme not found in AndroidManifest.xml” great! I did a bit of research and came across this forum thread. The general consensus seems to be that it will get patched in future releases of Unity. As seems to be the theme of this post, I didn’t have time to look further into the issues and since it is not critical to what I am wanting to achieve, I’ll put the new pipeline on the back burner. I will definitely keep an eye on it though as I’m not one to ignore a free performance increase!
Back to just trying to get anything to run on the Quest. I created a new project and started with just a cube and the Oculus SDK. I published it to the Quest and I was a little surprised this time, it still crashed instantly. I expected that the default Unity configuration combined with the Oculus SDK would be enough to get it going, I guess I was mistaken. Back to google, and it looks like I’m not the only one having these issues. I found the answer in this thread. It turns out Unity defaults to an incompatible render API. I removed Vulkan from the list and it worked! Now all I needed to do was import my model into the scene and publish to the Quest. You can see the fruits of my labour below. It performed excellently! I’m very impressed.
Just to give you some context to how amazing this is, this model is a to scale 3D model of my house. The reason I am so blown away by the demo is that I am actually walking around my house when I recorded this video. The Oculus Quest tracking did not drift even the slightest bit. I managed to walk through every room in my house, while wearing the headset, without bumping into any walls! Just as another note, no I didn’t put any time into lighting the scene, I just used what I had set up in Cinema 4D. Ignoring that the scene is a little blown out, I am surprised how great the scene looks and how well it ran with these unoptimized models.
Connect with iTRA to discuss your next project.