Over the last few weeks we’ve been joined here in the studio by talented game/mobile designer-developer extrordinaire Jamie Roe. While on placement he’s been exploring a task we set him to develop an app that blends some simple user interaction with 3D modelling. With the easy job over, we then asked him to write about it for our blog!

The Concept

Having used Unity3D before during my time at university, I can vouch for how easy it is to create amazing games and mobile apps in a short amount of time. Many companies are now using Unity as their main development tool thus it was time to create a proof of concept to determine whether it would be a viable approach for Createful to develop apps.

It was decided to keep the app simple but fun. Toby had an idea for an application where a robot would be on the screen if the phone was held up portrait; as if a child was holding a toy figure. When the screen is tilted landscape the robot would transform into a plane or spaceship-like vehicle.

Research

robot-researchI began researching different styles of robots that would look cool but not be too taxing in terms of modelling and animating. After some initial sketches to try and picture how the model would look inside the screen constraints of my phone (Samsung Galaxy S5 Neo) I settled on a mech that resembled an old WWII fighter plane for the simple reasons that I liked the style and I got a “Oh I like that” from Toby when he saw the mech in my montage of research images.

As this was just a proof of concept I decided to keep the model simple with not much in the way of detail. This not only reduced my workload but also would prove to be less taxing on Unity when importing the object into the scene.

The Software

Unfortunately, due to my lack of university student status, I was no longer eligible to use the free version of 3DSMax. So it was to Blender that I turned to create the models. The modelling process was straight forward enough; a lot of the time was spent creating the individual arm segments that I had intended to animate into a wing shape using the Unity3D animating tools. I’m sure a qualified 3D artist would have produced a greater piece of work in half the time but luckily this was just a proof of concept.

unity2The arms segments were created to be independent of each other so I could rotate them freely within the Unity animator tools. A useful aspect of using Blender models for Unity developments is that Unity can import Blender save files straight into the scene without needing to export. This can save a lot of time when you have highly detailed objects or a lot of objects to bring into Unity.

Unity 3D accepts two programming languages – C# and Unity’s own version of Javascript. My weapon of choice is C# due to its uses outside of Unity and its ease of use. One of the main concerns for this project was determining how to animate the model based on the orientation of the mobile device. Turns out the code needed for detecting device orientation is very simple and easy to implement. Remember folks: forum.unity3d.com is your friend.

unityThen the fun started. When trying to animate using the Unity animator tool I encountered a series of problems which ranged from parts of the model rotating in strange ways to other parts just not animating at all. After some time, and a lot of pulling out my own hair, I remembered that this was a proof of concept and came to the conclusion that the time spent trying to fix this problem was not worth the outcome it would have produced. So I created the simple solution of deactivating the original model, once the screen had been turned, and activating a second model in its place. This second model was of an already transformed plane and still produced the sought after result, just not in as pretty a way as originally hoped.

After which it was a simple case of adding some UI buttons to act as a menu system, a skybox to make the background slightly prettier and the ability to spin the robot, using a touch input, when in standing mode, again thank you Unity forums. Something to note is the ease of registering touch input on a mobile device using Unity’s Event System which is added to the scene when you add a UI button. After I added some music, button noises and a way to exit out of the application it was ready.

The Finished Product

unity3

Imagine this but with nicer graphics and some animations thrown in there. Think you’d download something like this onto your device? Do you think Unity is the way forward for app design or should it just stick to making video games? You can download Unity from their website here and Blender from their website here. I highly recommend picking them up and having a go.


Thank you Jamie! I think you’ll agree looking at the screenshots above that Jamie has done a great job with the vague task we gave him, given the timescale he had. Reflecting on the whole process, I think the most interesting thing he said was this:

“After some time, and a lot of pulling out my own hair, I remembered that this was a proof of concept and came to the conclusion that the time spent trying to fix this problem was not worth the outcome it would have produced.”

That for me is really the take-away from all this, regardless of what product we end up with, you shouldn’t waste precious time and energy on a proof of concept, because you may well prove to yourself that it’s simply not viable for a number of reasons.

We have to do this alot in our line of work – often clients will ask us to design and build an app, and sometimes we’ll need to invest time in researching the concept, testing it and building a mockup, prototype or proof of concept like Jamie did. As a result of that we might decide that it’s worth continuing, but occasionally, while building just about any app idea is possible, the process of getting there might be prohibitively expensive for the client.