# data[].attributes.attachment_link.title
Substance Designer Getting Started: 02 - Procedural Material Creation Workflows

# data[].attributes.attachment_link.readable_text
In this post, I'll outline the asset workflow that I use to model game props, like the old radio in the image below. If you're new to making games, you will gain an understanding of some of the major concepts involved in modeling art assets. And if you have some experience already, you might pick up a few tips and tricks.

This is the first post in a two part series; the next post will cover texture mapping and describe my workflow for importing an asset into a game engine.

In some game engines (like Unity or Unreal) the word "asset" has a technical definition, but when discussing game art or games in general, a game asset is a character or an object that's meant to appear in a video game. Most game assets are just humble props meant to fill in the background of a scene: A medieval wooden barrel, a sci-fi doorway, or a pirate treasure chest. These props might not seem that complex, but the steps between coming up with an idea for an asset and then placing it in the final game can be bewildering. There's a lot of different ways to make game assets and none of them are necessarily more correct than others - if something works well for a particular team or a particular game, then that's great - but in this post, I'll show you my typical asset workflow.

Please note that this post is not meant to be a step-by-step tutorial (if it were, this post would be a much longer of a read). Rather, what follows is a high level overview of my 3D modeling process along with a few specific tips.

Conceptualizing Assets

The motivation for creating a new game asset can come from a variety of sources. It might be that the game needs a specific quest item, or perhaps the game world needs more art direction. Sometimes, I just make assets for fun without any specific purpose at the time, knowing that I might use them in a game later.

The factors involved at this stage of asset creation can vary, depending on why the asset is being made. Here are some examples of the questions I'm thinking about:

How important is this asset to the game? Should I even spend time making this when I could be making something else with more of an impact? Sometimes an object might just be too small to be seen or noticed, or it's just not as important as polishing another "hero" asset the player will see a lot.

How big is this object compared to other objects in the game? Will the player spend time examining it close-up? The answer to these questions greatly influence the level of detail.

Does the player need to interact with this asset? If so, is it something the player will hold? Does it have moving buttons and switches they can activate? The answers here can help determine how the 3D model should be segmented into separate parts.

Before I jump into any software, I like to start by researching the idea that I have in mind. Typically I'll search Google Images and I may even do a few sketches of my own; although from the image above, you can probably pick out the one that I liked the most. I like to think about the different levels of abstract that could work in the game, which is usually somewhere between a cartoonish representation and a photo realistic rendering. This radio asset was just-for-fun, so I just found one that looked unique and tried to make it myself.

3D Modeling

Once I settle on the look and feel of an asset, I spend some time breaking it down into its basic 3D shapes using Maya LT. I like Maya LT because it suits many of my personal preferences, but alternatively, you could use any other 3D modeling app like Blender, 3Ds max, or zBrush.

The body of the radio is basically a box with a few extrusions and beveled corners. Because of this, I used a modeling technique called box modeling, which starts with a simple cube (or a box). From there, I added a few edge loops to define where the different insets and extrusions should be made. After I made the extrusions for large flat areas like the speaker, I beveled the edges to round out some of these boxy areas.

I thought it would be nice to be able to turn the knobs and adjust the antenna, so I modeled those as separate objects. The knobs are cylinders, and the antenna is also composed of long and thin cylinders stacked on top of each other. Modeling these items as separate 3D objects opens the possibility of a player character adjusting these items in the game. On the back there are some screws, but I don't anticipate a player looking there much, so they're just low-detail spheres cut in half.

The polycount for the radio is a little over 1500 triangles. The polycount for a 3D model can affect game performance depending on how many other assets are in the scene, how detailed they might be, and so forth. In this model, I could have removed a few of the beveled edges and perhaps done more detail in texture maps (rather than in geometry), but for a PC or console game where this object is examined up close, this polycount looks about right. On the other hand, this would not be appropriate for a mobile game where the total polycount budget in a scene is much more strict. If this radio were to appear in a mobile game, I would probably model it as a simple 6 sided box with a texture and stop there.

Scene Organization

Once I have more than a few objects in the scene, I open the Outliner window in Maya to assign each object a name and organize them. Then I group objects together in the Outliner based on two criteria:

If objects categorically belong together, like the knobs, I'll put them into one group.

If objects need to move together, like the antenna, I'll put them into one group and then adjust the pivot for the group.

In the case of the antenna group, I moved the pivot point for the group to the base of the antenna. That way, when I rotate the antenna, it moves along the ball-and-socket joint at the base in the way that you would naturally expect. This makes "posing" the object easier, especially if it needs to be interactive in the game. Here's what my Outliner looked like when I was done.

UV Mapping

Once I'm happy with the model and scene organization, I'll move on to UV mapping, which is the process of flattening a 3D object into 2D space so that texture maps can be applied.

UV mapping isn't as complex as it might sound. For example, if you've ever tried to peel the skin of an orange and flatten it into a rectangle, you know that rips in the peel are almost unavoidable. Another example is any rectangular map of the Earth; you can think of Earth as a 3D sphere, and the map as that sphere's 2D texture. In the map, the distortion increases as you reach the north and south poles because of the planet's spherical shape. Without UV mapping, the 3D object wouldn't know how 2D textures should be applied.

Below is a screenshot of what my UV layout looked like when I was finished. When I design a single prop like this, I like to keep everything in a single material and in one UV map, even though the object might be comprised of multiple real-world materials (like wood, plastic, metal, and so forth). Using a single material makes things simpler to manage, reduces the storage required in the final game, and improves rendering performance (every material that gets applied has a performance cost).

The rainbow checkerboard texture that's built-in to Maya LT (and most 3D modeling applications) helps the artist figure out which parts of the texture are being applied to which polygons. When I'm looking at a model with a checkerboard pattern, I'm looking for two things:

Stretching: Do all of the polygons have nice square checkers, or are they being squished and pulled in different directions? It's important to avoid UV stretching or there will be distortion in the final texture.

Texel resolution: Do all the objects in the scene have roughly the same texel resolution? In other words, when a texture map is applied, will one part of the model contain textures that are the same resolution as other parts? This is important, especially if a model is viewed up close.

There is one instance where I intentionally increased the texel resolution of the UVs, and that's in the horizontal dial with the AM/FM numbers. I knew there would be fine text in that part of the model, so I allowed for it to have slightly more resolution than the rest of the mesh so that the text would be clear without pixelation.

Procedural Texturing and Game Engine Import

This post is the first part of a two part series. In the part two on texture mapping, I describe my texturing workflow and then show how I import an asset into a game engine like Unity.

# data[].attributes.attachment_link.title
Asset Workflow for Game Art: 3D Modeling - Treehouse Blog

# data[].attributes.attachment_link.description
In this post, I'll outline the asset workflow that I use to model game props, like the old radio in the image below. If you're new to making games, you will gain an understanding of some of the major concepts involved in modeling art assets.

# data[].attributes.attachment_link.readable_text
In this post, I'll describe my approach to texture mapping and outline the asset workflow that I use to go from a plain 3D model to a prop that's ready for a game. If you're new to making video games, you will gain an understanding of some of the major concepts involved in texturing art assets. And if you have some experience already, you might pick up a few tips and tricks.

This is the second post in a two part series; the previous post on 3D modeling describes how I modeled this old radio.

Geometry versus Textures

Even when I'm modeling, I'm thinking about textures, because I'm deciding which parts should be modeled geometry and which parts can be represented with a texture.

For example, the final radio asset has a grid of small holes for the speaker. Even if these holes were just squares and not circular, modeling them in Maya would add a tremendous amount of polygons (which can slow down the game). In animated films it's common to model these types of things, but in a game, the player will never be so close up to this model that they'll see this level of detail. Here's a shot of the radio model in Maya from the previous post:

In the 3D model, the speaker panel is just a flat plane. Instead of using geometry for the holes, much of the depth can be implied with a normal map, especially since the holes are relatively flush with the plane that they're on. When creating a model like this, it's more important to create a well defined silhouette and fill in the middle with texture.

Procedural Texturing

Every game asset can tell an unwritten story, and much of that storytelling comes from the wear and dirt in each texture map. Before I start texturing, I think about two things:

Out of what materials is this object made?

Where should the dirt and wear collect?

When I'm in the research phase of an asset, I try to find ways to include a variety of materials (i.e. metal, plastic, wood, leather, etc). Including more materials offers more opportunities for contrast and different weathering patterns. A leather material will crack and warp, while a painted metal will chip away. Unless an object is meant to be a perfect alien spaceship or the Hubble Telescope, some amount of weathering is going to be present; nothing is perfect.

When I first started making game assets years ago, I textured them in Photoshop. Almost every 3D artist has done this at some point, and if you don't know any other way, then it might seem like the best approach. However, instead of creating textures with raw bitmap data or photographs, I like to texture assets procedurally in Allegorithmic Substance Designer.

A procedural texture map is a mathematically generated image. In Substance Designer, you might start with some noise or a pattern. Then, by manipulating that pattern through color shifting, blurs, warps, and other modifications, it's possible to create new imagery that looks like materials you might find in the real world.

The reason I use procedural texture maps instead of bitmap data is because it's much more flexible. When you use photographs and generate bitmap data, you're generally forced to make complicated edits that are immutable. When working procedurally, changes can be made at any stage of the procedural pipeline. Substance Designer uses a node-based workflow, so it's easy to modify a graph and change the nodes at the beginning of the chain without digging through layers or a history of edits like in Photoshop. It's completely non-destructive.

Procedural texturing starts to become really powerful when you realize that it's a tool for creating tools. For example, if I make a nice looking hardwood floor material, now I have that in my personal library and I can reuse that any time I need to make hardwood floors. If I need to make a new hardwood floor material out of a different type of wood or with a different weathering pattern, it's easy to modify those parts of the procedural graph.

Applying Materials with Masks

When I texture an asset with procedural materials, I create one material at a time in Substance Designer. For example, in the screenshot from the previous section, I'm working on the aluminium buckles that attach the leather handle to the body of the radio. It can be a bit strange when working on one material at a time like this, because the entire asset will use the same material all at once. However, it's important to stay focused and try to visualize where the material will be applied.

Once I'm done creating each material, I bring them all together in a "master graph" that applies them all to the 3D model. In the master graph, I apply one material at a time by masking it to the part of the model where it belongs. Often times, I'll simply draw an SVG mask over the UV map to apply the material to the proper area. Here's a screenshot of what that looks like in Substance Designer:

I like this workflow because each material is in its own separate and logical group. I can break a model up into each uniform material, such as the leather handle, or the metal antenna. Each individual graph can only get so messy because it's single responsibility and doesn't try to be efficient by sharing resources or techniques with other graphs.

Once each material has been applied to a model, I will typically apply a final "dirt layer" at the end. Applying a uniform dirt to all the materials helps them to gel together in the final piece.

Import into the Game Engine

Both Unity and Unreal support Substance files directly in the game engine. However, I actually don't use Substances directly inside of Unity. Instead, I save the final output texture maps from the graphs I create and then apply those to materials in Unity. The reason for this is because Substances come with a performance cost when they are procedurally generated in a game. While this can be advantageous in situations where a texture needs to change - for example, a different color or pattern of spots on a dinosaur - it's not typical. In most situations, I'll only use a Substance file if I'm going to really take advantage of its procedural properties.

After that, my process is fairly straightforward. Inside Unity, I'll bring in an FBX file exported from Maya LT by simply dragging it from my file browser and dropping it into Unity's Project window. Once the file has imported, I'll set the scale and remove any default materials. Then, I do the same for the texture maps that I've exported from Substance Designer and use those files to create a new material that I then apply to the model.

Timelapse

Here's a timelapse video of what this whole process looks like when taken from modeling to finished textures. I made this radio asset in about 6 hours.

I hope you were able to learn from this overview of my texturing process. If you have any questions or if you'd like to know more detail about any particular concept I mentioned, feel free to let me know in the comments!

# data[].attributes.attachment_link.title
Asset Workflow for Game Art: Texture Mapping - Treehouse Blog

# data[].attributes.attachment_link.description
In this post, I'll describe my approach to texture mapping and outline the asset workflow that I use to go from a plain 3D model to a prop that's ready for a game. If you're new to making video games, you will gain an understanding of some of the major concepts involved in texturing art assets.

# data[].attributes.attachment_link.title
My 3D Workflow in 30 Minutes - Lighting and Rendering Tips (and More)

# data[].attributes.attachment_link.title
High poly to Low poly workflow: UV Unwrapping with Blender (4)

# data[].attributes.attachment_link.title
Importing to the Content Library | Getting Content into your Unreal Engine 4 Pipeline | InformIT

# data[].attributes.attachment_link.description
Virtual Reality developer Tom Shannon shows you how UE4 imports and processes 2D and 3D content from other applications and provides some ideas how to integrate that into your existing pipelines.

# data[].attributes.body
I really liked this video because Andres Rodriguez from Naughty Dog shows what he did in Uncharted 4 and how he did it. He also explains what he would recommend when making an environment for a game level.

# data[].attributes.attachment_link.title
Intro to Environment Art with Andres Rodriguez

# data[].attributes.body
This tutorial helped me gain a better understanding of post production and how to do it using different software and in different methods.

# data[].attributes.body
This tutorial was helpful because it shown me a way of modelling and texturing that I believe that the way that he models and textures feel more easier than how I've been modelling. I feel this because he explains what he does clearly enough so that I can understand what it is he is doing and what it is I am trying to do.

# data[].attributes.attachment_link.title
Tutorial- Autodesk 3Ds Max - Texturing Pipeline Part 1

# data[].attributes.attachment_link.title
FBX Mesh Pipeline | Getting Content into your Unreal Engine 4 Pipeline | InformIT

# data[].attributes.attachment_link.description
Virtual Reality developer Tom Shannon shows you how UE4 imports and processes 2D and 3D content from other applications and provides some ideas how to integrate that into your existing pipelines.

# data[].attributes.body
This tutorial helped me to understand what the different lights that I could use and what they do to the scene and what the look like when they are rendered.

# data[].attributes.attachment_link.title
3Ds Max - Lighting Tutorial - For Beginners

# data[].attributes.attachment_link.title
Unreal Engine 4 - Light Flicker Tutorial

# data[].attributes.body
Sierra Mon. (March 17, 2017). What is a typical day like for a gaming environment artist?. Available: https://magazine.artstation.com/2017/03/game-environment-artist/. Last accessed 25/03/2019.