So I finished the last post by declaring that the BVN visualization team had settled on creating 360 degree pre-rendered mobile experiences with the Samsung GearVR as our preferred approach to getting involved in virtual reality. For anyone who hasn’t tried to create these type of renders yet its worth pointing out just how easy it is. Like the majority of visualization people I use predominantly 3Ds Max and Vray and it involves about 5 clicks more than a traditional high res image. However, the first time can still be pretty confusing, especially if you work in meters and the distance between the eyes defaults to 6 meters instead of centimeters – trippy as hell but quite effective if you want to try to make your colleagues vomit! I would highly recommend reading Chaos Groups Guide to Virtual Reality even if you don’t use Vray – great mix of theory and instruction – and I would have saved myself weeks of fumbling around the internet if I had known about this last year. Neil (scary BVN guy from previous posts) assures me that producing VR renders in Corona is also pretty straight forward. So there you have it – VR for visualization is really easy – job done! Well not really, booooooooooooo.
If you only have one VR space that you want to showcase then you might get away with loading the render onto the Oculus 360 Photo app, navigating into the space in advance, and then passing the headset over to your viewer and boom – they are in the VR space. However, if you have done this a number of times you will probably have heard your viewers say something along the lines of “wahey, now i’m in Nepal” or some other awe-inspiring far away place. Don’t get me wrong, the viewers usually really enjoy ending up in a completely different virtual environment that is, lets face it, probably more exciting than what you have designed, but your presentation is pretty much screwed. And this is the major problem with all of the 360 viewers that I have tried – it’s impossible to lock the viewer into your VR experience! The buttons on the Samsung GearVR are very easily pressed by accident and often they will get pressed when the user is just putting on the headset. What generally happens next is a less than fun game of “pass the headset” between you and your potential viewer which often ends without anyone actually experiencing what you have produced. Now lets consider that the primary use case for this form of VR is usually obtaining client buy in for your shiny/awesome/game-changing/really expensive design, or convincing a large group of VIP’s that your competition entry is obviously way better than all those other jerks that have already presented. I think it’s fair to say that presenting your VR environments in this way is simply not an option for most scenarios and we will revisit the huge issue of the user experience outside of the virtual environment again in later posts.
The aforementioned cringe inducing nightmare scenarios don’t even take into consideration the fact that, unless you are really lazy/cheap, you have probably created more than one environment for your viewers to marvel at. Not only do you need to lock them into your space but you need to find a suitable way for them to get from one locked down space to another. You need to create some kind of customized virtual tour, and if you have come into visualization from an artistic background brace yourself – VR just got difficult! Actually scratch that – I have a computer science degree and I have programmed games before and the next part was still really bloody hard. Your going to need a game engine and chances are your going to have to write some code. Now before you take out a hammer and start smashing your GearVR to pieces (I recommend removing the $1000 phone first) it’s worth noting that the main reason that I struggled was the lack of documentation that was available six months ago (and the fact that after 8 years of making pretty pictures I’ve probably become quite stupid). VR was still pretty new 6 months ago – VR is still pretty new now – but the number of resources available to help you are increasing daily. It’s also worth noting that if you are happy with the quality of experience that you get from using a Google Cardboard, or if you are using non-mobile headset at a computer, then you have a few more options for creating tours. Another great article on Ronen Bekermans blog about creating 360 tours will have you up and running pretty quickly. But if you’re like me and you want the maximum possible visual quality combined with the best user experience then I would stick with the GearVR for now and create your own custom tours. I say “for now” because the best thing about creating VR experiences right now is also the most frustrating – it changes constantly – and I mean constantly. As soon as you even dare to think that you have something sussed it will change.
So if your willing to get intimate with a game engine you have 2 main choices – Epic Games Unreal Engine and Unity3D. There are countless articles available online about which one is better but I have very little interest in getting involved in this pissing contest so I’ll keep this short. Both are free (amazing!) if you are just getting started and both enable you to create interactive real-time environments and games! I am using now using Unity. I started out using Unreal and switched quite quickly to Unity for the following reasons:
- More mobile content is created using Unity so there is way more documentation about creating mobile content available.
- Most VR content currently available is created using Unity so there is more documentation.
- I couldn’t do what I wanted to do in Unreal. Not saying it can’t be done – I just wasn’t able to do it.
What I actually needed to do with a game engine was ridiculously straight forward. I needed to take my high res stereo renders (one for the right eye and one for the left) into the game engine, apply the left eye image to a left eye camera, apply the right eye image to the a right eye camera, and add some basic navigation between scenes. Now given the fact that I have a computer science degree and experience developing simple games the amount of time that it took me to make this work was an absolute disgrace. I am way too embarrassed to reveal just how long this took but it’s safe to say that it was weeks not days. I am willing to place a substantial portion of blame for this on my personal lack of intelligence but at the same time it really felt like nobody had ever done exactly what I was trying to do before (in reality I’m sure that they have but it was probably too simplistic to bother documenting). But just in case anyone else is struggling in the same way that I was I will dedicate the next post to explaining my solution and you can see for yourself how simple it is (I’m getting cold sweats just thinking about reliving this pain). Maybe someone can even show me how to do it in Unreal.