Adventures in low poly Blender modeling
Creating low poly board game models for AR & VR
For a while now I’ve been working on getting comfortable building virtual, augmented and mixed reality apps and games in Unity. That has been going very well (tip of the hat to Ben Tristem’s awesome Unity course on Udemy), resulting in me passing the Unity Certified Developer exam a few weeks ago!
While working with Unity, I came to the conclusion early on that although you can get a lot done with pre-made assets from the Unity Asset Store or other 3D marketplaces, you will eventually run into the need to do custom modeling, texturing, rigging and animating if you want to create anything specific, for which you can’t find what you need from third parties.
After some research into the tools most commonly used for such tasks, I decided to dive into Blender, the most popular free and open source 3D creation software. Here another tip of the hat is in order, this time to Michael Bridges’ excellent Blender course on Udemy.
A quick side note about Udemy: never ever ever ever pay the default price of a Udemy course. Do a quick Google search for Udemy coupon codes and you should almost always be able to find codes to get the price down to the $10 to $20 range.
Once I was comfortable with the basics of Blender, I needed something to practice my skills on, so I settled on recreating the miniature figures from HeroQuest, an old board game I still had on a shelve. If you’re not familiar with the game or don’t know why it’s epic, be sure to check out the instructional video below.
Further on in this article I’ll go into more detail on the process and lessons learned, but let’s see how it turned out first!
Low poly
My main goal is to use these models in virtual, augmented and mixed reality Unity apps. On some of the devices involved, especially smartphone-based VR or AR, power is limited so highly detailed models can cause performance problems. Therefore a low poly style was the approach best suited to what I needed.
It also placed a sensible limit on the amount of effort to put into each model. It’s easy when playing around with something like this to make things overly detailed, taking a lot of time in the process, while it is actually possible to create something slightly more basic which still properly captures the spirit of the full detail model.
Blender lists the number of triangles in each model, which I’ve put in the tables below, sorted by name and by count. Naturally the furniture is the least complex, consisting mostly of basic geometric shapes, while the more organic character models quickly increase in triangle count.
The triangle count corresponds quite well to the amount of time spent on a model and also the quality feeling of the final result, especially when looking at the organic models. For example the difference between the mummy at 584 triangles and the Gargoyle at 2778 is very noticeable when you put them next to each other.
Blender
In Blender I used quite a few of the basic techniques to put this together, including UV mapping, linking and appending data from shared files for the materials and common shapes such as the footplate of the characters, mirror modifiers for the limbs of symmetrical characters, boolean modifiers for cutouts of the eyes and many others.
The average time spent per model was around two to three hours, with a spike in the beginning when part of the time was still spent on learning and a spike at the end when I was tackling the most complex character models. It does tend to become a bit of a grind once you’ve done a few and have 25 to do in total. ;-)
A good choice was starting with the non-organic furniture models, because those were a lot easier to do. Once I got started on the organic character models, I was familiar enough with the basics to be able to take that step confidently.
The scale used is 1 Blender/Unity unit = 1 centimeter. This means that when using them at real size, they need to be scaled down a 100 times. The benefit of using this scale was that it worked much easier in the tools, because the default Blender settings for camera movement speed, clipping distances and such are tweaked for that type of scale.
Blender to Unity
To get the models into Unity, I experimented with using the Blender files directly, but settled on exporting to .fbx files manually and importing those into Unity, to strip out some of the unneeded Blender bits. After importing all the models in Unity, I put together a Unity Asset Package so I can now use them easily in future Unity projects.
The trickiest part of getting the models into Unity has been the differences in how the materials and lighting work in Unity. Models which looked fine in Blender, sometimes turned out much too bright or with colours looking off in Unity after a default import. The image textures on the furniture also have a tendency to look a bit washed out by default. Experimenting with different settings of the materials and the scene lighting has improved this quite a bit, but it’s definitely something I will be trying to improve further.
To create the movie earlier in this article, I used Unity’s Timeline functionality to move the camera and RockVR’s Video Capture from the Unity Asset Store to capture the video output.
Looking back…
Considering the whole process, learning Blender has been simpler than learning Unity. Although Blender as a tool can be a bit intimidating at the start, the actual concepts are not difficult, if you have a good sense of spatial awareness.
In my experience Unity is a lot more complex and multi-faceted, so if you’ve managed to learn using that, I would highly recommend also spending the time to build up basic skills in Blender or similar tools like 3ds Max.
… and forward
It will be fun using the models in future VR, AR and MR projects, especially after putting in a lot of hours to get the whole set complete. Keep an eye out for more articles when I do! Eventually I might create the fully functional board game, but that will definitely take quite a bit more work. ;-)
About me: I’m freelancer based at VRBASE in Amsterdam working on VR/AR/MR projects, sometimes as a developer, sometimes as a technical project manager. If you want to get in touch, drop me an email at technology@siekerman.nl or contact me through LinkedIn.