Blitzcrank – Character Breakdown – Mario Greci
Hello everyone! My name is Mario Greci, and I’m an aspiring 3D artist from Valencia, Spain, mainly focused on Hard Surface and Prop Art. However, in the future I would like to learn about Environment Art and to create scenarios for AAA games.
In this article, I’ll be talking about my latest piece; Blitzcrank – The Great Steam Golem, my interpretation of the League of Legends champ from the Blockout process to the final render.
As I was working on my first environment, the popular animation series known as Arcane, created by Riot Games and Fortiche, was released on Netflix, and I absolutely fell in love with it. League of Legends has been one of my favourite games and Blitzcrank was one of the champs I liked the most, so watching the show motivated me to start this project.
Modeling Blitzcrank was a very fun challenge and it helped me to improve my Hard Surface skills, practice some techniques that I learned on Zbrush, and also test my skills on texturing metallic and old surfaces.
For this project, I started gathering as many Blitzcrank references as I could. There are a lot of them to choose from, but these were the main references that I used the most, (there are plenty more) especially the official splash art from League of Legends and the 2D concept down below, that define the main shapes and forms that were reflected afterward in the 3D model.
Regarding material references, Pinterest is a gold mine. You can find plenty of different surfaces and materials and they are extremely useful when you are trying to replicate some of those screenshots on your model. Old engines, pipelines or planes are very good references to achieve a realistic rusty effect.
Good research can save you a lot of time and effort when you are modeling and texturing, so for me, it’s one of the most important stages of any project.
Throughout the project, I used Maya at first to create the blockout and the main forms of the model by sub-D modeling. However, I mostly used Zbrush to add extra details, for designing some complex shapes and to test different ideas. I used Zbrush for the high poly, but some simpler pieces were made on Maya by using Supporting loops. When I had my high poly, I did the retopo on Maya, to get my low poly version of the model. UVs on Maya, textured in Substance Painter, Rig + Animation on Maya, and then Marmoset for the final renders.
Blockout and High Poly
Whenever I start a new project, I make sure that the working units are meters, to ensure that I’m working on real units and I’m having a correct Texel Density if I do UVs.
Afterwards, I take a human mesh, which in this case is 180cm tall, to get a visual reference of how big my character will be and how it will look in the real world. Googleing some Blitzcrank information, I found that he is 270cm tall, so knowing this, it was really easy to determine the size of the model. However, I reduced his height a bit, because it seemed to big for me.
Once everything is ready, I can start blocking out the first shapes of the model by only using primitives. This is the most basic stage, but it’s the one that will define the global shape of the model.
Having a clear concept of where to start is key, especially because if you realize that the measures are not the right ones when you’re already adding more details, it can be frustrating and even more time consuming, so it’s better to spend more time on this stage before taking the next step.
When I’m happy with the basic shape and I’ve made sure that the blockout is right, I establish the form with the baseline of the concept, using Sub-d modeling. Here’s a screenshot of how the leg looked when I imported I was about to export it from Maya to Zbrush.
This is how the mesh is imported into Zbrush. I export the mesh divided by parts, so on Zbrush I can split them by groups and work individually on every piece.
In case you don’t know how to do this, in Subtool>Split>Groups Split. If your model is exported as one individual piece, you can go to the Polygroup shelf and click group by normals, this usually works and is a fast and handy way to establish polygroups.
As you can see in the next picture, if I try to activate the Dynamic Subdiv at first, my model becomes very soft and there are no hard edges because it doesn’t have supporting loops.
Therefore, to keep my loops hard without supporting loops, I use creases to define the main shape. You can find them on the Geometry Shelf; Geometry>Crease. I usually let the CTolerance at 45, the default value, and if I need to add some extra creases I use the Zmodeler brush and select edges individually. Afterward, when I have my creases, I apply the Dynamic Subdivision and then Dynamesh it, so I have more freedom whenever I want to design and try out different forms.
In this picture, you can see the workflow and tools that I used during the whole process of modeling the leg. I used ClipCurve and booleans to play around with the shape and try out different designs and silhouettes. Then, using the Smooth stronger brush, which is on Lightbox>Brush>Smooth, I cleaned up the dirty surfaces, and smoothed the hard edges by using the polish features on the deformation shelf.
Basically, that was the whole process for modeling the leg. This was repeated during the project to design the arms and fists. I consider it a very easy and fast way to conceptualize and visualize ideas.
This was the main workflow I used during the whole project. However I did some pieces of the body extracting them directly from the base mesh on Zbrush.
I did a quite simple explanation here on how I did some of the main parts of the body, using extract and Zremesher.
For the Low Poly version of the mesh, I used the quad draw from Maya and the base mesh model that I imported to Zbrush at the beginning, to have a clearly defined mesh from where to start.
I could have optimized the mesh, but as this was a portfolio piece, I wanted to reach the best quality possible. The final low poly model had around 115k-120k tris. Furthermore, there are some parts that I might have cleaned up a little, but as long as it worked and did not have weird artifacts while baking, It was fine for me.
For the UV process, I used Maya but then I used Rizom UV’s for the packaging. I could have kept using Maya for it, but I saw that Rizom packages them way better and I decided to use it to optimize my UV space.
For this project, I tried to stack the maximum number of shells possible, and optimize the UV space as much as I could. For example, it was a bit difficult with the body because a decent amount of its lower parts are not symmetrical, so it was a challenge to organize it correctly.
On the other hand, legs, arms and fists are the same on both sides, so it was easy to mirror them and stack the shells. Here’s an example of one of the UV SETS.
I have used 3 Texture sets, I think that I could have optimized quite more, but as this was a portfolio piece, I wanted to get the more quality and TD possible.
For the baking process, I used Marmoset Toolbag 3. I like to use this program because I have more control of the baking process due to the paint offset and skew. It’s a very handy tool to fix baking issues.
During this process, I always make sure that every low poly piece is named with the _low suffix and that it matches the high poly piece as well (the high poly version must have his _high suffix too). This way the program bakes each piece individually and it doesn’t overlap with the other ones.
I usually use the Quick Loader for baking. If everything is correctly named, it will bake everything individually. Then I use 16x on Samples, 0.2 on Soften, and bake the Normals + AO maps in 4K. For the curvature and the rest of the maps, I prefer to bake them on Substance.
For texturing, I always adjust some parameters of the project.
I like to work with Tomoco Studio because it’s a very simple but effective HDRi with lights on just one side of the model.
I also like to reassign the Field of view.
Furthermore, I like to use the basic colours of the model and then start adding colour variations and little details. In this part, the references are crucial and will help to get more realistic results.
I leave you here a little timelapse of how the fist texture was done.
Here’s the base color of the model.
Rig and animation
I’m not the best rigger or animator, so I tried to do a simple animation, simulating the Blitzcrank idle on the game.
Here’s the reference I used for it. I just recorded my screen while playing.
To create rigs, I usually use the QuickRig tool on Maya, but this was not a human character and it didn’t fit very well when I was working on the guides for the bones, so I had to create the rig from 0.
Here’s how the outliner looked when I finished the rig.
Blitzcrank is a robot, so defining the weights of the bones was very easy, because none of the pieces has to bend or to stretch, so I just painted the mesh that affects the bone that is connected to, and it worked just fine.
Having the joints, the weights and the controllers, I just had to animate the model trying to replicate the reference as closely as I could. Even though I’m not the best animator I tried my best and I’m very happy with the results!
I won’t expand on this part that much because the render and presentation were a very basic setup. Just and HDRi, some extra lights to get reflexes and on the roughness of some surfaces and a shadow catcher to replicate the floor.
This is the end of my breakdown. Thank you to every reader that has reached the end of this article, I really appreciate it! I hope that you enjoyed it and that some of the tips that I shared with you were useful for your future projects.
I wanted to give a huge Thank you to the Games Artist team for this opportunity to write about my latest project. It was a fun experience!
And lastly, I also wanted to give special thanks to every artist who helped me during the project by giving me feedback about texturing and rendering. I’ll let their portfolios down here!