Lance Wilkinson did a fantastic job on the production of his fantastic animated 3d character. He showed the modeling, texturing, animation and rendering.
My names Lance Wilkinson and I’m from Manchester, England. I’m currently working as a Lead Character Artist at Climax Studios in Portsmouth. I’ve been in the games industry for just over 4 years now after graduating from University of Bolton with a BA in Games Art. I’ve worked on a few projects in that time which include LEGO:Jurassic World, Star Citizen, Sniper Elite 4 and the upcoming Adventure time:Pirates of the Enchiridion game. I’m currently contributing to a couple of unannounced projects and always working on something in my spare time. Finally I’m a huge gamer, I love everything Blizzard, especially World of Warcraft, which was one of the things that prompted me to leave my old career in retail to pursue work in the gaming industry.
I saw an image by the talented Lynn Chen on Artstation called ‘Bacon Toll’ and fell in love with it. My original intent was to just do a fun sculpt during my lunch hours but the deeper I got into it the more I wanted to take it all the way as I was just enjoying it way too much. I also only wanted to make the Corgi character in isolation and not replicate the entire scene, saying that I wanted to still encapsulate the humour in the illustration and that’s what prompted me to implement the fishing rod with the bacon rasher as a means of motivation. The dog bowl and sacks seemed like good additions to round off the Corgi traveller theme.
I guess the biggest difference between doing a sculpt and doing something that will eventually go into a game is the planning. With most game models the player can potentially see something from many angles, for that reason you have to try your utmost to make the model as sound as possible from many viewpoints. You also want to develop the sculpt in a way that makes retopology and baking easy, so you’re constantly thinking about how the element you’re sculpting will translate to a low poly model. Another thing, which sounds trivial but can save some headache later is making sure your model is a good scale, an error I used to make when I started out was just going at a sculpt in Zbrush but neglecting to check it’s size, before you know it, I’d have loads of subtools all of which were either massive or miniscule and required resizing.
It wasn’t really necessary in this instance but if a character looks pretty complicated with plenty of layers or a lot of detail, it’s a good habit to take the concept or reference and dissect it a bit, break it down into more digestible chunks, maybe think about the techniques required to make a specific item or gather additional reference if what you have is a bit ambiguous.
That said you should always have at least a concept or plenty of reference before making something that is intended to go into a game, sculpting something from your head for fun is all well and good but when in a production environment it can be a massive time sink trying to figure out the details, however your sculpt could become your concept, in that case just be sure to have a good idea and plenty of reference for what you’re doing.
I nearly always start working on a character’s model in Zbrush. I’ll sometimes try and grab some reusable parts from past projects for a base, if not, as was the case with this character, I’ll just start from a sphere and add more and more just as you would do with traditional clay until I get something resembling what I’m going for.
With a sculpt taking shape I had to start making decisions on certain elements to make them viable to eventually become a game resolution character. So I started replacing the rough blockout parts with some cleaner proxy meshes made in Maya, I could then manipulate them with ease to get something compositionally looking better as well as being neater to shape in Zbrush. I used to always try and stay in Zbrush and fettle everything I made, however as I became more experienced I’ve found that it’s sometimes better to just build a proxy in something like Maya.
Cleaner Mesh to refine some shapes
So my process usually goes like this:
- Rough everything out in ZBrush, make it pretty tidy
- Retopologise pieces for cleaner sculptable meshes
- With the new proxies, tweak until I’m happy with proportions etc…
- Start subdividing up and detailing
- Lay down some polypaint to get a sense of how things might look when textured.
- Once I’m happy with it, export decimated reference meshes for retopology in 3D-Coat/Maya
Cleaned up Zbrush model
Like most artists I build my characters in chunks mainly for ease of isolation but it can also serve ultimately for gameplay purposes. In this instance my imagining was that I could replace the basic character (in this case the Corgi) or his accessories (so the backpack etc…) with other variants in future.
Corgi Traveller with travelling accessories
Pug Rocketeer variant with rocket pack and accessories
So with that in mind I had some clear divides of how the character was going to be broken up, each accessory became their own separated object whilst modelling which was eventually merged down to larger chunks. I tend to always have things like eyes and tongue un-combined from all else, again mainly for ease of isolation up until the point I’m exporting for engine use.
Ultimately this character was very simplistic when compared to other things I have created personally or in production, in fact it’s one of the reasons as to why I decided to make this character in the first place. I sometimes find that if you tackle something really complicated as a personal project, something that can span a decent amount of time to create, you can risk burnout or running out of motivation, so with this character I thought it would be pretty quick and fun to put together but also simple enough for me to experiment with things usually outside of my remit, like rigging and animations.
I’m not a rigger, in the past I’ve typically posed my characters with either ZBrush or very simplistic rigs. However I do like to broaden my knowledge a little bit with every new project so I thought it was time to dive a bit deeper into the world of rigging. I used what skills I already had and then went online and to friends to do some research.
I had a good chunk of help from a colleague called Rufus Flack at Climax Studios, he helped me decipher/fix the small issues that seem to appear when implementing something new, things that only someone with experience in the subject can give you good answers to.
Like the model, the rig is modular, so I can detach all accessories and replace them with another rigged set of assets which is what I eventually did with the Pug Rocketeer model.
Like rigging, I’m no expert when it comes to animation and I had a couple of animations I wanted to try and make. I went in with a specific camera angle/distance in mind, it’s good to impose these types of limits at times as they can insure you don’t over detail something to the point it will never be seen. Using the Walk/Run animation as an example, again which is divided into steps, the main walk cycle on the Corgi and then secondary motions on objects like the bacon rasher and bone keychain.
Due to the self imposed camera limitations, some objects didn’t have to have super smooth motions/transitions, in-fact the bouncing of the sacks and the bacon rasher lent itself to stepped tangents resulting in that more jittery motion, up close it might look a bit unsightly but at the intended distance it works well.
I essentially tackled the animation like a painting, I built it up in layers, starting with basic keyframes to get the overall feel of the animation, then adding more frames and movements on top once I was happy to eventually get a result I was pleased with.
When texturing characters like this the first thing I do is bake an object space normal map and use the green channel from it to form the base for painting. I could go deeper and use gradient bakes and so on but for this particular character I wanted to keep it mostly painted by hand.
Once I have some simple lighting provided by the object space normal I’ll lay down some base colours (usually multiplying over everything else) and then transfer to 3D-Coat.
3DCoat is an amazing painting tool, combined with Photoshop, making textures like these is loads of fun. Once in 3DCoat I’ll bake an occlusion layer and from there it’s just painting into the model. Colour dodge layers are great for laying down highlights and softlight/multiply layers are great for adding shadows and colour into darker areas.
As for the fur, I paint it in pretty well defined, leaving it like this though typically makes it look a bit dead and uninteresting, I then like to soften it up a bit and make it read more like fur. To do this I sync the texture with Photoshop and use the smudge brush in the directional flow of the fur, this should make it look a lot softer and give a more fur-like impression.
Adapting the project for the use in a game
One of the great things about hand painted characters is even when the texture is done you can still make mesh changes without the need to massively revisit work as you’re not relying on normal maps for your details.
With this in mind I always check the model over and see if I can optimise in any way once the texture is done, I’ll typically brush over the mesh checking it from all angles and collapsing any edges I feel I can get away with, if it doesn’t work I can always undo.
This is essentially the same process as would utilise for LODs also, in this particular instance LODs were not needed as the camera would never leave focus from this character.
Another thing to do before taking a rigged/skinned character into engine is to cull any influences that have zero weights assigned to a mesh, it doesn’t save much from a memory standpoint but can help avoid some unintended effects engine side, it’s very easy to do in Maya, select an object and navigate to Animation>Skin>Edit Influences>Remove Unused Influences.
Once I think everything is ready to be exported, I’ll combine all the meshes (whilst maintaining skinning) and be sure that it doesn’t have any unwanted nodes or history attached, by doing this you can minimise the amount of drawcalls once rendered in-engine, again probably not a massive saving on just one character, but in a game where many characters get displayed at once it can soon escalate, that and nothing is worse then having to go back and revisit work because the tech artists/programmers want to claw back some memory/fps.
Once everything is in-engine I’ll check the texture at the intended player view and size it down/compress it to save memory but only as long as it still looks good. Finally I’ll play around with the character in-game and see if I can see anything amiss, if all is good then it’s job done.
Running around in Unreal