I’ve been writing a lot about the software engineering side of game development recently, and today, I decided to write about the art side. For my next game, I’m aiming for a lighthearted “cartoony” look, while capturing the adventurous fantasy theme that’s fairly prevalent in the games industry today. These were my first few drawings of the first hero character. I plan to have others, but you have to start somewhere.
It eventually settled into looking like this:
Here are some things to note about these two images. Over the course of iteratively drawing the same character, the character progressively receives an identity. The key is to keep on throwing things on the page until you capture a rhythm to discover what your mind wants, as well as what looks good. You can also tell that the last image is a lot more dynamic than the statically standing mockups in the first image. This probably contributes a little to a biased decision as to “what looks better”, but realistically, that’s the sort of stance the character would take in interactive software. He’s not going to be just standing around. You can also get a sense of the proportions that the character naturally looks better in. The proportion of head to body is just about right for a cartoon, being 3 heads tall. However, I’m drawn towards the slightly more bulky look of the hero at the bottom of the first image. It’s something that I’ll have to play around with.
Once you nail down an identity for the character, in order to absolutely get the proportions right, it helps to sketch the character in a model sheet. This is simply the character standing in a T-pose, from the different orthogonal viewpoints (front, side, back). In 3D modeling and animation, this pose is ideal for supporting the different ranges of movement for each joint.
Once you have a model sheet sketched out, you can scan it or take a picture with a smart phone or digital camera, to bring it onto the computer. Before scanning it, I outlined the figure with solid black, so that the form is more definitive.
You could also erase the remaining pencil marks before scanning, but I got lazy. Instead, you can get lucky by adjusting the brightness and contrast of the image in a paint program. Then, the inks show up by themselves. Another trick is to use non-photo blue pencil instead of a straight dark gray pencil, which will more easily be removed by the image adjustments I mentioned above.
After cleaning up the model sheet, you can crop the front and side views such that they’re their own image files. It’s important to note that when cropping the images, the front and side images need to:
- Match in pixel size
- Match the character’s height and base position of the feet.
It’s also recommended to align the front image such that the character is divided equally down the center.
Once the images are cropped appropriately, they can be loaded into Blender (or your 3D modeling package of choice) as background images.
Once they’re positioned properly, you can start modeling the character using the images as a guide. I start out with a cube and extrude the faces until I get a form that fits roughly around the background images.
You’ll notice that from the front view, the model is perfectly mirrored across the X axis. That’s not just me being careful. It’s actually half of a model with a Mirror modifier applied. This way, you only have to modify one side, and the other side is automatically manipulated for you.
After extruding out a basic blocky form, you can apply a subdivision surface modifier (available in almost all 3D modeling packages) to smooth out the mesh.
At this point, I was happy with how the base model looks, so I applied the subsurface modifier as well as the mirror modifier to convert the model into a single editable mesh. The next step after that is marking the seams of the model. I’m not sure if Maya or 3ds Max has introduced seams, since I haven’t used those packages for several years now. I was introduced to the concept of seams in Blender.
Basically, marking edges of a model as “seams” denotes those edges as boundaries for “unwrapping” the model to apply textures. Imagine wearing a jacket and then taking it off and laying it on a flat surface to “unwrap” it for, say, sewing a piece of cloth on it. Since textures (images) are two-dimensional, a model has to be unwrapped to place those textures onto the model. This is known as UV mapping. Marking seams simply indicates where flat sections are located, to reduce any weird distortions from occurring, and to group those sections into logical, contiguous pieces.
And here’s the unwrapped UVs mapped onto a flat texture. The texture contains all the pieces of the model and keeps the UV coordinates organized. I do need to mention that your UV coordinates won’t immediately be mapped as nicely as I have in the picture below. I had to rotate and move the pieces to keep them arranged nicely. However, Blender has a way of selecting all of the polys that are bound by a closed seam loop to make manipulation a lot easier.
As you can see, the texture only has base colors applied to the sections, so I still have to put in the details, which you can actually add with texture painting directly in Blender. The way that works is you can draw directly on the texture in the 3D viewport, as if you were painting designs on a real sculpture.
The head is actually a separate model, but honestly, right now it’s just a low-poly sphere that was squished a little. Also, the hair can definitely use a lot more work, but that’s a completely separate discussion.
Well, that’s about it. When I started this new project, I actually wasn’t planning to do all the intermediate steps between concept and modeling. I thought I could just jump into Blender and start. While there are probably plenty of 3D artists that can do this, I am not one of them =). The problem really wasn’t that I wouldn’t finish; it’s that I wasn’t sure if what I modeled would have matched well with my concept. Doing the intermediate steps helps to translate the concept into 3D with a lot more precision, takes out a lot of the guesswork and uncovers any potential challenges in building the 3D model.