It’ll Be Fun They Said
One of my friends sent me a link to a sketchfab contest that challenged creators to make a VR-ready model inspired by the Legend of Zelda. I’m a big fan of the series, and I have been dying for an opportunity to port one of the MANY Game of Hyrule models I made into virtual reality. The project seemed like a perfect fit…
And it many ways it was, although in practice it was also a harrowing exercise in extreme tedium and madness.
The original map was painstakingly built up using manually drawn splines, extrusions and box modeling for each of the 50+ unique objects in the set. There might be a few errors, but nearly every element on the overworld map has been recreated and placed in 3D space. While this process was laborious, it doesn’t even compare with the optimization process. Well, I say that because I built the map a year ago and the pain is mostly gone. Mostly.
I got the impression that having over 5 thousand individual models, grouped under a multitude of nulls and hiearchies would probably kill real-time performance (gotta hit that 90 fps), so I decided to merge all the geometry that shared a common texture. This way, retexturing the model would also be way easier to do in subsequent engines, as you only had to apply one material per piece of geometry.
It turned out to be a huge ordeal to combine the thousands of individual meshes as some of my models had their own hierarchy, or polygon selections that applied two different materials to one object (perish the thought). In the end I had to manually combine, change texture tags, and clean individual objects for a full day. Luckily some of the objects were instances, so I could fix up and ungroup the original model, but even still there was a mountain of mind-numbing monotony ahead.
Even getting the file size down to the Sketchfab basic (‘I haz no monies’ version) requirement of below 50mbs was a horrifying task. I found that deleting some of my textures and UVs freed up just enough space for me to get a barely passable version up on Sketchfab. N-gons (polygons with more than 4 verticies) saved space, but became digital nightmare shards in my uploads to the site, so I had to convert critical objects to tris.
But hell, I slogged through hours of optimization and tidying, and I wanted to see it in it’s full VR glory. Unity to the rescue.
Help me Unity3D, you’re my only hope
I was able to rebuild the textures from my original Game of Hyrule map intro using the incredible UBER shader by Tomasz. I was expecting a performance hit from the complex, multi-texture shaders I built, but everything worked flawlessly… so I wasn’t satisfied until I threw as much post processing/image effects onto the camera as possible. I used the godlike Volumetric Fog & Mist by Kronnect to create some atmospheric perspective and even a subtle amount of sunshafts (dare I say ‘tasteful amount’). I added filmic post-processing from Scion to the camera, and found the performance hit acceptable for how cool it made everything look. Oh yeah, and I added AO because bitches love AO.
As far as the ‘coding’ I used VRTK for teleportation and Playmaker for the player scaling. I’ve been spending so much time working on learning ‘code’ and game logic for other projects that it was a welcome excursion to just make something look good (often the only requirement in 90% of my freelance work). Coming from a VFX background, I am still shocked at the real time performance of modern game engines. 1-3 hours per frame? What is this, 2015? I’ll render in Unity, thank you (well, Unity or Octane, OR BOTH #LaterThisYear #OctaneInUnityForever).
Anyways, all the boring, mindnumbing work was worth it if you guys enjoy playing around with the map! I hope I can export some other models for you to play around in soon… I just hope someone invents some crazy, flawless texturing baking solution for C4D/Octane in the meantime.
The final product
You can download the small Zelda map experience on itch.io, or navigate to the Downloads section. In the meantime, here’s a quick look: