Creating an entire experience with animated characters in a real-time engine by yourself is pretty daunting, even if you like challenges as much as I do. Old Friend came out this month, a critically acclaimed, award winning room scale VR music video for the song by Future Islands that Premiered at Tribeca Film Festival 2016. I was a team of one on this project. When I started I only had a small amount of Unity knowledge from my first VR project, a 2 minute short film called "BUTTS", but what I learned from that experience was that as a long time Animator/Character TD/Tech Artist (I've done my share of scripting for rigging and animation tools/pipelines) with Unity I was capable of tackling any complex feature I wanted in my project, and I knew I could build a lot of things from scratch that I didn't think I was previously capable of building. Well it all worked out, and here are some of the reasons why...
It's near impossible for me to retain anything from reading a book on how to do things on a computer, I learn by doing, trial and error is the only way for me to get anywhere, stubbornly banging my head against the wall until it's perfect. Because Unity makes that trial and error cycle so speedy with their automatic importing/reloading I was able to learn quickly, take on things I had never done, and still complete Old Friend in a reasonable amount of time. I could bang my head against the wall fast enough that I got things working before exhausting myself and giving up.
As a Character TD/Tech Artist at Double Fine Productions I did a lot of Maya tools development in MEL & Python, like a full suite of character rigging and animation tools. It's pretty easy to jump from MEL/Python to CSharp syntax, and one of the things I kept running into was things running way faster than I'm used to. Coming from the Maya tools world I was hesitant to do anything, thinking it wouldn't run at 90fps, but I was proven wrong over and over again. This is pretty obvious for someone with a computer sciense background with C++, but for a tech artist with an animation background this was very empowering, and I like I said I was able to build so many things from scratch that were performant.
In order to leverage my years of Maya experience I developed a custom pipeline to sequence character animations in Maya, export that data to JSON via Python, and then rebuild those sequences in Unity using a delightful little tool from the Unity Asset Store called Cinema Director. As a Tech Artist you often need to be able to pass custom data between programs, and Unity's API and scripts available in the community made this complex task quite manageable.
I don't need to to tell you that whenever you want know how to do something the first place you go is Google. These days the Unity community has gotten so large and contributed so many questions and answers that the majority of the time you can easily learn from an answer to someone else's question. I'm amazed some times that with such a specific goal that I can find the answer so quickly.
Obviously one of the biggest advantages of using Unity is the multi-platform support, and this was particularly helpful in a budding industry like VR. It's hard to imagine being exclusive to a single platform right now, when there are so many headsets and platforms available that it was extremely helpful that porting was pretty straightforward and manageable.
Because of the design and workflow of Unity I was able to tackle the work of an entire team as just one person on Old Friend, and of course it with the guidance of the online community and some very smart and talented friends of mine. Countless individuals can now joyfully dance like idiots in VR! Wheee! I'll admit I was behind schedule and it was a bit of a tough road, but as any developer knows that's pretty standard... and I will say that without Unity wouldn't even have attempted it in the first place.