3DS Max Notes


For Mastery


I cut my 3D modeling teeth on Blender, then was introduced to Maya in '08 during Foundation Art & Design at Vancouver Film School. In the following year they gave us 3DS Max in Game Design. During my last tenure as an indie gamedev I exclusively used Max, only dabbling in Blender during a brief period of "every tool I use should be open source". There is no "best" solution when it comes to 3D modeling. I think it boils down to whatever you're most comfortable with. After a decade of thinking about it, I'm coziest with Max.

The bulk of this document is likely to be lists of new features I come across as I reacquaint myself with the software. I'd love to sit here and document everything I've already learned, but there's the matter of time and the limits of my mortality. I'll try to add stuff to a Best Practices section as it occurs to me.


Best Practices

Hotkeys (Legacy)

General (Legacy)

Ribbon Tools (Legacy)

Freeform → Grid → Draw On: Surface

  1. Pick: mesh to follow topology of.
  2. Set the Offset to a value high enough to produce new topology above the Picked mesh.
  3. PolyDraw → New Object.
  4. Step Build.
  5. Draw 4 Vertices and Shift-Drag in the direction to draw the new polygon.
  6. Experiment with other tools.

Modeling → Loops → Flow Connect

Modeling → Polygons → GeoPoly

Polygon Sub-object Mode → Selection → By Numeric

Baking (Legacy)

These are legacy notes from 2015. At the time of this writing (2020), I'm still wondering what the best way is to bake normal and ambient occlusion maps. It would seem that the industrial-strength tools in 3DS Max would produce the best results when tuned correctly. It's understanding what's the correct tuning that's the hard part.

Substance Designer and Painter both come with built-in bakers. They simplify the process but may not produce tip-top quality results. The question then becomes: how important is having a tip-top quality bake on a 3D asset in a videogame? The answer may be "not very".

Normal Maps: Basic

  1. Animate the low-poly mesh a short distance from the high-poly for ease of use.
  2. Apply a Multi/Sub-Object Material of at least 4 unique colors to the high-poly model, then apply a Material modifier to all the high-poly objects, then make the Material modifier unique.
  3. Set separate colors for areas that are intersecting or adjacent.
  4. Assign same Material IDs in both the high-poly and low-poly meshes as per corresponding objects.
  5. Detach To Element any planes that require higher than average projection distance.
  6. Select all Vertexes and Connect to triangulate the mesh for baking.
  7. Add a Projection modifier to the low-poly mesh.
  8. Reference Geometry → Pick List → select all the corresponding high-poly meshes.
  9. Reposition the meshes so they overlap (return to frame 0). Put the low-poly mesh into X-ray mode.
  10. Cage → Display → check Cage and Shaded.
  11. Push → Amount → add a small amount to cover most of the mesh then Export… a copy.
  12. Hide the low-poly mesh and move the working Cage into the high-poly layer.
  13. Manipulate the Cage to cover all the necessary geometry.
  14. Unhide the low-poly mesh.
  15. Import the adjusted Cage into the low-poly Cage modifier.
  17. Render to Texture… (0)
  18. → Output → Add… CompleteMap
  19. → Projection Mapping → Enable Projection and Options… → Resolve Hit → enable Hit Only Matching Material ID
  20. → Mapping Coordinates → Object and Sub-Objects → Use Existing Channel
  21. Render!
  22. Use Smoothing Groups from UV Shells in PolyUnwrapper for first-pass smoothing. Manually add any polygon groups that need additional smoothing to high-numbered smoothing group. Delete Unwrap UVW modifier and move the SG From Shells modifier under the Projection modifier.
  23. Ensure the low-poly mesh is centered on the grid.
  24. Unhide the high-poly mesh.
  25. Apply an all-white Material to both meshes.
  26. Add a Skylight to the scene (On, Multiplier 1.0, Sky Color white, Map 100.0)
  27. Rendering → Light Tracer… → Rays/Sample 350
  28. Select low-poly mesh → Rendering → Render To Texture… (0)
  29. Selected Object Settings → Enabled → Padding: 32
  30. Projection Mapping → Options… → disable Ray miss check
  31. → Filtering Options → Global Supersampler → Setup… → Global SuperSampling → Enable Global Supersampler → Max 2.5 Star
  32. Output → CompleteMap and NormalsMap
  33. Render!

Normal Maps: Extended



There are several options under the base Align tool in the toolbar:


RC a target camera to select its target.


Polygon Sub-object Level → Graphite Ribbon → Selection → Non-Quads will highlight all the non-quad polygons. Convert to Editable Mesh → Explode (180) will detach all elements into individual editable objects.

Detail Skinwrap

Controlling High-poly Smoothing with Smoothing Groups


Basic Concepts

Getting Started

Rotations and Layers

Creating the Skeleton

Freeze the Mesh layer.

Naming Convention

Spine Bones

Leg Bones

Linking Bone Chains Together

Arm Bones

Roll Bones

Hand and Finger Bones

Verify the Hierarchy


Testing the Skeleton

Bone Animation Guide

First Pass

Isolation (Foot)

Quick Weighting Script

Mirroring Skin Data








Skin Utilities



Foot Helpers and IK Chains

Foot Hierarchical Links

Foot Custom Attributes

Foot Reactions

Knee Swivel

Rig the right leg.

Spine Controls

Linking vs. Constraining

Spine Rigging

Arms FK Rigging

Arms IK Rigging

Arms Clavicle Rigging

Arms Blending IK/FK

IK/FK "Snapping"

Roll Bones

Rig the right arm.


Rig the right hand.

Final Check and Wrap Up

Eyes (Bonus)

To reset the pose, select the Anim Controls selection and reset the transforms to zero. Zero out any Custom Attribute parameters that may have been changed.

Tips and Tricks

Polar Snapping

Gradient Ramps

As Animated Reveal Masks

As Texture Generator

State Sets

Max Creation Graph



3ds Max → Unreal Engine 4.27 and Substance (January 6, 2022)


I'll start by simply noting the steps I took in establishing the pipeline. My goal is to have everything set up across the three applications to maximize efficiency in export while maintaining a high degree of "what you see is what you get" (WYSIWYG) visualization.



Previous: Environment 000