Hi! These days I’ve been working full-time on Destiny 2 at Bungie, making Exotic and Legendary weapons. If you’ve been playing Destiny lately, you’ve probably used some of the weapons I worked on, including the full remake of Thorn and its “Thornament,” the Thunderlord and Hypervelocity ornament, Last Man Standing, and The Recluse. Lately, I’ve been using a ton of Modo and Blender in production.
Hard-Surface Modeling in Games
Luckily, principles from product design and industrial design in general, carry over to hard-surface modeling in games. Making game assets appear sound in structure and function is often key to their believability and getting the player to attach value to them aesthetically.
Since the majority of my work consists of sci-fi weapons and vehicles, I use a tremendous amount of real-world references when considering what makes a new design seem functional. This almost always comes down to having very communicative primary and secondary shapes that allow the object to read well (even at a distance) and seem mechanically plausible. Too much tertiary detail on uninteresting primary and secondary forms is my biggest pet peeve when it comes to design trends in the game art.
Best Features of MODO
I believe Modo’s biggest advantages come from its ability to be customized and the sheer number of useful tools that ship in the default toolkit. The Workplane, Action Centers, context-sensitive modal tools, the toolpipe, and macro recorder work together to give an artist working in Modo a very artist-friendly modeling experience. Modo does ask quite a lot from the artist in overall setup, but it is quick to give your time back tenfold.
Flipping through Action Centers or toggling the Workplane on is effectively condensing what would be 4 or 5 actions in most other DCC applications to a single quick action in Modo. I would say that largely summarizes Modo’s modeling paradigm once you get comfortable with it.
The Workplane can allow you to work very cleanly at would-be difficult angles and orientations by adjusting the entire world coordinate system to your selection. I use it very frequently to align surfaces and to cut in complex details while ensuring the surface remains planar.
Having tool-level context sensitivity also means that your tools can perform different actions based on different selection modes, and all tools have their own custom set of modal controls. For instance, firing off the bevel tool in face mode will allow you to “inset and push” your selection while using the tool in edge selection mode will perform a traditional edge chamfer/bevel. In addition to this, while your tool is active your keybinds become context-sensitive, so you can get extra mileage out of a smaller total number of keys.
The macro recorder easily empowers artists who are unfamiliar with scripting to further expedite their actions into fewer keypresses. Macros can be stored to your Modo config file, and become easy to keybind and simple to back up with your preferences.
Having taught several professionals Modo who were coming from packages like Max and Maya, the most important step in their migration process is getting invested in personalizing Modo. Setting keybinds early and often for the features that make Modo special is essential in leveraging the program to its maximum potential. Command History is a great place to start setting up keybinds as you work. It’s great that Modo has all of these tools available for you to use, but if hunting them down and clicking them is breaking your modeling flow, you’ll be in for a bad time.
Helpful Addons for MODO
There are some absolutely “must-have” addons for Modo. William Vaughn is an absolute force in fostering education among the Modo community, and he is also responsible for many of the best addons available for the package. For me, almost every single complex hard-surface blockout starts with the aid of MOP Booleans, a “live boolean” tool that allows you to very quickly work on both your base mesh and your boolean operators in tandem. This kit also allows you to replicate the 3ds Max ProBoolean-to-ZBrush Dynamesh workflow that’s popular right now. If you’re accustomed to working with ProBoolean in 3ds Max or BoolTool in Blender, this kit is an absolute must!
William Vaughn’s Polystein Kit is also a very effective kitbash utility if you invest the time in building up a personal library of parts. It can handle a variety of scenarios, including both stitching a sub-d ready mesh directly into active geometry or the generation of floating geometry. Being able to use stored meshes like bolts and panel details with versatility is great and can really speed up production.
Seneca Menard’s free package of Modo tools is well known in the community, but the one that I cannot live without is lazySelect. This tool gives you very granular control over selecting faces by angle and is an integral part of my low poly creation process. Coupling this with Modo’s “Merge” and “Mesh Cleanup” will allow you to clean sub-d meshes for low poly faster than any other package.
Finally, Edge Flow 2.0 by bluego is somewhat of an analog to 3ds Max’s “Set Flow.” While Modo 13 technically has this functionality built-in, I feel that this addon performs much more logically and predictably, and it expects a “Max-like” selection of edge loops. This makes it very easy to add density to your mesh with interpolated smoothing from the existing shape. I use this very frequently when cutting complex details into curved surfaces to preserve smoothing.
Hard-Surface Modeling for Games in MODO
Modo has a few attributes that I believe make it an exceptional choice for game art. I generate my high poly meshes with a very traditional sub-d workflow. There are a million ways to generate a mesh to bake from these days, but I can turn out very detailed sub-d meshes extremely quickly with Modo’s tools. In large scale production, it’s hard to know who will have to open your working files at a later date, and I believe it’s important to create meshes that are highly portable and efficient, whether they’re opened in Modo, Blender, 3ds Max, or Maya.
Being able to constantly check the smoothness and integrity of the mesh with Modo’s Catmull-Clark subdivision toggle speeds things along as well, with this subdivision method supporting both edge creasing and traditional control loop modeling. This works great combined with the aforementioned Polystein Kit when it comes to slamming in additional surface detail, or when pulling copies of screws and knobs into the scene from your asset library to get a quick idea of where your work is headed.
When you see panel cuts or inset detail sections in my meshes, they’re almost certainly actually cut into the geometry with boolean operators and then cleaned up to smooth properly. As you get faster at modeling in Modo’s paradigm this becomes an extremely fast technique that saves a lot of time when it comes to the low poly mesh creation, or when change requests come back from art direction.
UVing in MODO
Modo is my absolute favorite package to UV in. I handle both the low poly smoothing and UVs simultaneously, and I’ve built a few macros to really speed up the process. I start by marking up the smoothing of my low poly mesh components using Modo’s “Vertex Normal Tools.” This essentially assigns hard-edged smoothing with a variety of options and adds the affected edges to a new selection set. Having this option set to Automatic and using “Harden” in Face selection mode is my most common method of marking up a model. This will ensure that the border edges of a face selection are hardened, not dissimilar from the way that smoothing group markup works in 3ds Max.
One thing to note is that Modo now handles vertex normals in the material by default, so you’ll want to ensure that’s turned off if you’re using this method. Unchecking “Crease by Smoothing Angle” will allow your vertex normals to be controlled by the hard edges set on your mesh. You can also weight this normal calculation in a variety of ways if you so choose.
With the smoothing for the low poly set, I grab the edges associated with the selection set created by the Vertex Normal Tools, run an unwrap of the low poly mesh components, and do an initial pack; all in a single keystroke with a macro I built in the macro recorder.
Properly managing texel density for first-person weapons is essential since several parts will be very close to the camera. At this point, I’ll apply a checker pattern and start reducing the texel density of internal bits or camera-distant elements to improve the density of all the important camera facing components. I also take this time to make sure that islands are properly relaxed, and that anything that can be straightened is; you’ll cut down on aliasing in your textures dramatically by doing some tidying up.
After everything is clean, I’ll run another pack (without scaling, I want to preserve the relative scale of my islands at this stage) with a specific pixel padding value. It’s essential to have proper padding on your islands when performing a hard-edged bake to get a decent rendering of your normal maps across those seams in the engine, especially when accounting for Mipmaping and the possibility of using half-precision (16 bit) UV calculations at runtime. Modo’s built-in UV packer is quite poor, so count on doing a bit of manual re-packing to finish off the process and get the highest quality results out of your work.
With a quick application of Modo’s procedural Mesh Ops for Triangulation and any required Symmetry + UV offsetting for baking, I’m off to Marmoset Toolbag to set up the bake. Having those steps of the process held procedurally is a great time saver, as it will allow you to ensure a bake with symmetrized triangulation (avoiding turned triangle normal map shading errors) and keep an available quad mesh in your DCC.
Material Production in Substance Painter
FPS PP-2000: Textures for 1) PP-2000 2) Stock and Magazine 3) Suppressor 4) Flashlight
Substance Painter is such a game-changer for the industry. I have a handful of custom smart-material bases that I use as a base, but my materials tend to become bespoke and complex pretty rapidly. I leverage quite a lot of high-quality scan data, and I almost exclusively work with masked Fill Layers.
The Mask Editor “generator” is probably the single most useful base for any complex mask, and I’d encourage everyone to take a deep dive into what it has to offer instead of using the same smart-masks time and time again. Don’t be afraid to throw fill layers and filters on top of the results of your Mask Editor with modified blending modes like Multiply, Overlay, and Screen.
Presentation in UE4/Toolbag
I largely prefer presenting my work in Unreal Engine 4 and Marmoset Toolbag 3. Marmoset has become an unbelievably useful app, offering best-in-class baking (with skew correction!) alongside a great asset previewer for generating screenshots. I typically plug lights into the scene by clicking on the HDRI and modifying their parameters, which is about as easy as it gets. It’s the fast option when presenting your work, but you should also occasionally show your work in a practical engine environment as well.
Unreal also makes it easy to get your asset in and your materials set up and it is the go-to if you need some fairly advanced material setup or to leverage detail normals. If you don’t have much experience and want to dip your toes into UE4, you can start from the premade Advanced Lighting map that is bundled with the starter content and work from there. There’s even a plugin for UE4 that will allow you to import your Marmoset scene, so you can even regain some time by recycling the results of your bake scene.
It’s awesome how accessible all of these great tools are today, and I’m excited to see what the future holds for 3d artists!