Theo Mills from Ubisoft Toronto talked about the way he and his team work on the production of incredible game assets for games like Far Cry 5.
My name is Theo Mills. I am originally from Toronto, Ontario but grew up in a small town near Vancouver, British Columbia. I went to school at Sheridan College for traditional art and then attended George Brown College for Game Development. After graduating in 2014, I worked in the animation industry for a few years eventually arriving at Ubisoft Toronto where I’ve been a Model Artist for the last year and a half. I’ve worked on children’s TV shows such as Rusty Rivets and Max Steel and most recently finished working on Far Cry 5 and Starlink: Battle for Atlas here at Ubisoft.
My general modeling approach for games starts with gathering a ton of reference. You’re never guaranteed concept art, and if you are given a concept piece you still need to gather as much reference as possible from as many angles as possible. This ranges from a simple Google image search to looking around my actual environment. This process can vary depending on the projects’ art style and settings.
Beyond gathering reference, it’s important to understand the technical restraints on any given project such as polycount, texture budget (unique or tiling) and whether it’s a background or hero asset. I think it’s important to start with as much information as possible to ensure you can work efficiently and cut down on iteration time.
As with all of the world art on Far Cry 5, it is an extremely collaborative effort. As a modeler I’m tasked with creating the models and UVs, apply decals where needed and creating masks to blend between materials from our material library. On larger structures the decals and blending masks are done by our texture team.
Working with references
As a modeler on Far Cry 5, I’m given a description of the asset along with a few reference images. I then spend time gathering more reference that generally matches the original reference.
Trying to avoid a «generic» look can be tricky especially on a game like FC5. A lot of times we actually try and create more generic looks as the assets get used throughout the game world. Often the same assets appear side by side, and if they have a really unique look it can quickly seem repetitive to the player. While gathering reference I try and choose a few ones that have unique shapes or aspects and make them my «key references», then use the rest of the references to fill in the remaining detail on the asset.
I was lucky enough to model all of the animal pens in the FANG Center outpost as well as Cheeseburgers den and the “Admin Building”. My thanks to the Level Art and Texturing teams, specifically Sarah Cole-Megaro, Billy Matjiunis and Jasmine Wong who was the texture artist on these structures!
The scale may be one of the most important factors for creating models that look realistic. On Far Cry 5, we use a fairly close to real-world scale. I usually have 3ds Max set to centimeters where each grid line is 10cm. While the overall scale is important, and we have in-game metrics (gameplay specific measurements) that dictate things such as the dimensions on doors, windows, stairs etc., I think the most important thing to learn is what I call relative scale. By relative, I mean the scale of parts of an asset relative to other parts of the asset. If you are making a door, you may have the overall scale correct but if the door handle is too small or the paneling detail too big it can make the asset look wrong. It’s a hard skill to master, but it makes a big difference when you are trying to keep the player immersed in the game world.
This can be especially difficult when making real-world assets. People subconsciously notice that the object’s scale is a bit off when they’re looking at the game assets that are meant to replicate something from real life. Always use other assets (assuming they are scaled correctly) from the game to keep your scale consistent. Finding references that have people or very distinct objects in them will help you get a sense of scale as well.
The process of texturing varies depending on the asset. The majority of the time we may not create a unique texture for every asset. In this case, I start with a placeholder mesh that was built by the level art team and use it as a general guide for scale and shape. We go through a couple of levels of polish/iteration while checking in with my lead periodically.
While we may not get a unique texture on a lot of assets, we are usually able to add in some of the detail by using decals rendered with an alpha transparency to create cut-ins/grooves and details like nuts and bolts, worn edges etc.
Check this video by James Arndt to find out more about making decals with an alpha transparency:
During those different polish stages we create our UVs, one channel for the tiling textures to use and the other is used for a blending mask if the asset is using a layered material in the engine. They key is optimization – knowing where to spend geo and where not to waste it is really important. Our engine has a tool that shows us a density number. We use this as a general guide as to how much geo an asset can have relative to its size in the game.
Making high poly meshes
When I do make a high poly mesh for baking down to a unique texture, the majority of that high poly detail gets added in Substance Painter. Depending on the shape of the asset, I usually create what will be about 80-90% of a finished low poly model. Then I will take it into ZBrush and use a combination of polygroups, the crease tool, DynaMesh, ZRemesher and the polish/smooth tools to achieve a soft, ready to bake version of my low poly. Then I’ll take it into the Substance Painter to bake my maps and add all the unique detail. It’s generally much easier and efficient to add these kinds of details in Substance Painter.
This low poly to high poly approach using ZBrush has been one of my favorite ways of working lately. There are certain kinds of shapes that are easy to build the low poly version of, but can be really tedious when using 3ds Max to make the high poly the traditional way (supporting edge loops/TurboSmooth). Using ZBrushes boolean tools to create complex shapes can save you a ton of time.
One of the key aspects of keeping your assets reusable is building them as non-destructively as possible, both from a modeling and a texture standpoint. Building model kits that can be combined in multiple ways and using textures customizable in the engine will help with reuse.
A good example would be the base albedo textures we use at the studio. These textures are colored greyscale/white and get tinted in the material, which lets us achieve different looks without needing a unique texture. This can be helpful when using specific colors to indicate gameplay elements to the player.
For modularity, it’s always important to stick to specific metrics and scale, so when you combine different assets such as building parts, they have a consistent scale no matter how you combine them. Which is why nailing the scale down before you start creating is very important.
Importance of the trim sheets
I never created trim sheets myself, but I do use them on a regular basis. We have a handful of various texture sheets which consist of different decals such as nails, bolts, stickers, and tape as well as sheets for metal trim details and worn/broken wood. These sheets are extremely important in an open world game as they allow us to add a lot of detail to assets that we can’t afford to model in or bake into the textures. They help us break up the feeling of repetition when using a lot of tiling textures as well. In a game as big as Far Cry 5 it’s really important to have consistency across the world. By having the whole art team use a collection of decals and trim sheets it helps us keep a cohesive look in the game.
Check out this short video about trim sheets from Shenious.
Iteration and scope are two of the most important aspects of creating assets and games overall. Every aspect of making games is an iterative process, constantly creating and improving is really important. Using software such as Substance Designer is one of my favorite things to do because it’s non-destructive, quick and easy to iterate on. You can create something and learn from it very quickly. Try not to over scope when starting a project, this not only applies to creating games as a whole but also concerns a small scale like personal projects and smaller parts of a game. Probably every artist has a folder with the projects they started and didn’t finish because they over scoped and burned out. Starting small and iterating will help you improve your quality of work, while also giving you an idea what actual game production can be like.