I recently presented at Ignite Australia on Lessons from Hollywood: Building the interactions of tomorrow today . For that talk and for fun I wanted to create something from scratch rather than use assets someone else made. Now I have 0 graphical ability but fortunately my brother Adrian did get those genes instead.
My brief was I wanted a model I could use in HoloLens. Something a bit different to the cat, dog, ballerina etc that you see all the time. Would also be nice to have an Australian theme to it incase I want to show this overseas there’s an extra element of Aussie about it
He suggested a Diprotodon (essentially a giant prehistoric wombat) which is the largest known marsupial ever to have lived.
Stage 1 – The Model.
First he built the model and exported it with a decent poly count as an fbx. I import that to my unity project, pick a point in space to place it and ta-da diprotodon model. At this point I thought he looked pretty good and it was time to name him (the hardest thing in software development) so what’s more Aussie than shortening his title – so we went with Dippy
Stage 2 – Textured Model.
He looked pretty good and I sent through some pics I took from the HoloLens so then Adrian went away and created a textured version – you can see fur and nose texture here but no colour etc.
Stage 3 – Adding some colour
Next we wanted to make him look like a wombat so Adrian created the “maps”. 4 files that I had no idea what to do with (cause I’m a dev not a designer).
I went through a few different shaders and with some chat help we decided the most appropriate was the Standard (Specular)
and then matched them up to the maps he’d given me
I had to cheat and look up what some of these meant to help with the guess work but here’s my non-designer summary:
Albedo – base colour or diffuse map. Defines the colour of diffused light. This one I matched up to the dip_diffuse or as I like to call it the coloured fur map.
Specular – for shininess and highlight colour. I used his naming to initially match this one to dip_specular.
Occlusion – greyscale or as i call it the black and white dippy which matched to dip_ao.
Normal – allows you add some detail like bumps, scratches etc. This matched up to dip_normal
My final shader looked like this.
He looked pretty cool at this point but there was a bit of a shimmer. We tried a few things like dropping poly count but then i noticed it on most holograms – even the simple cat in the Holograms app. So I left it for a bit.
Stage 4 – Scanlines
For my demo, I wanted to show 2 different ways of using the same model but with different “definition”. In this case I wanted the same polycount but different maps – 1 with detailed fur and another will something simpler so you knew it was a diprotodon but didn’t need the detailed colour.
This time I used the HoloToolkit Standard Fast Shader and dropped the dip_scan_line map onto albedo, emission and detail.
Stage 5 – Fixing the shimmer
Presentation done but the shimmer was still bugging me. Took me a bunch of goes to capture it but you can see it on a few of the pics above but I think this one highlights it best. The Dippy on the left to me really stands out with the edges.
So I took advantage of the Unity guys being at Ignite and showed them. I really wanted to know if it’s something we should have done at the model level, the Unity level or even a code level. John suggested the Anti-Aliasing settings for the project.
Normally all the doco points to picking “Fastest” / “worst” and nothing else and anti aliasing is set to Disabled by default.
We made the simple change to set Anti Aliasing to 4x Multi Sampling. Re-deployed that and wow what a difference that made
That shimmer is gone!