In previous blog-post I’ve shown concept art for the main character and his special abilities. Now it’s time to see how it looks in 3D.
Humanoid character template
For the first I decided to make a generic humanoid model that can be used as a template for all other anthropomorphic characters in the game.
After digging into polycount wiki I found good modeling references and also some useful articles about mesh topology.
Another interesting challenge for me was Blender. Around 10 years ago, when I just started learning 3D-modeling, Blender was… let’s say, weird (compared to other 3D-modeling software at that time). Then I took a long break from this hobby, but with the release of Blender version 2.8 I was tempted to give it a try.
After a couple of evenings messing with vertices I ended up with this:
Not very impressive, but good enough for the template.
Main character model
Next logical step would be creating main character model based on that template. My goal was to stay below 10k tris budget.
So, I almost did it. But I believe in that particular case 150 extra tris won’t make any difference.
Unwrapping and texturing
When we create models for games the significant amount of memory is consumed by textures. It’s a common practice in AAA-pipeline to use several textures of 2k or 4k size (Diffuse map, Normal map, Specular map, etc.). I set the goal to use the least possible amount of textures of the minimum possible size.
Because of the main character is going to occupy just a small portion of the screen (1⁄8 of height more or less) and also because I chose cel-shading for the visual style it made this task a bit easier. First of all we don’t need very high level of details on textures, nobody will see them anyway. Second, cel-shading implies having “flat” light and shadow without gradients.
I decided not to use Normal maps and Specular maps at all and achieve desired result by using vertex colors and my own custom shader. I wrote an article about this shader with the examples and source code included.
To avoid complete loss of details on the texture I used the trick from the GDC talk where technical artist of Guilty Gear series explains their character creation pipeline. He made the texture and unwrap in a way to have crisp sharp black lines on the model to emphasize shaded areas, folds, seams and “internal outline”.
My last consideration was about using the same material for the main character, his weapon and all his special abilities. With this approach the whole character can be rendered in just 1 draw call. In fact there are 3 draw calls: main model, outline and shadow caster, but still…
So, basically I was creating texture atlas instead of a single texture. I ended up with 1 texture, 8x16 pixels, 384 Bytes.
Here you see the texture with 30x zoom. In reality each square is just 1 pixel.
There a several clusters on this texture. Left column is main character “palette”. In the middle column there are 4 clusters - “palettes” for the character’s abilities, the column on the right is for the weapon. Black pixels in-between needed to be able to create these sharp black lines on the model.
All the models below use the same material with just 1 single texture.
Weapon - Talon Blade
Bat wings - double jump ability
Spider legs - wall crawling ability
Tentacle - grappling hook ability
Snake - dash ability
Now I can say that modeling phase for the main character is over. Next big step will be rigging and skinning to see all of these in action. Yep, gameplay videos and GIFs are coming soon :)