Edit Normals Modifier

The Edit Normals modifier gives you explicit and procedural, interactive control over each of an object's vertex normals. It is meant to be used primarily with mesh objects destined for output to game engines and other 3D rendering engines that support specified normals. The results are visible in the viewports and in rendered images.

The orientation of a vertex normal affects how neighboring surfaces reflect light. By default, normals are set so that reflection of light in 3ds Max follows the rules of real-world physics: The angle of reflection equals the angle of incidence. But by reorienting vertex normals, you can set the angle of reflection to be anything you want. The Edit Normals modifier lets you specify vertex normals' directions, combine and separate them, change the type, and copy and paste values among normals.

Warning: Don't apply an Edit Normals modifier to the low-res object used in normal bump projection. Normal bump projection relies on the low-res object having standard normals, and altering them causes normal bump maps to have unpredictable results.

Types of Normals

Three types of normals are available with the Edit Normals modifier:

Note: A selected normal is always red. When not selected, its color indicates as type, as noted above. You can find the customizable color entries for these normal types in the Elements Geometry list. The three entry names are:
  • Normals - Explicit
  • Normals - Specified
  • Normals - Unspecified

Usage Examples

Following are two instances in which a 3D artist creating content for output to a game engine might find practical use for the Edit Normals modifier:

Usage Notes

Please observe the following notes and precautions when using the Edit Normals modifier:

Interface

The Edit Normals modifier is useful mainly at the sub-object level, Normal, so this level is active by default as soon as you apply the modifier to an object. At this point, you can see the normals as lines emanating from the mesh vertices, select and transform them, copy and paste them, and change their settings on the Modify panel.

You can transform normals only by moving and rotating them, not by scaling them. However, moving a normal effectively rotates it, so in most cases you'll have better control by using the Rotate tool.

The following command reference includes keyboard shortcuts, which are available when the Keyboard Shortcut Override Toggle (on the toolbar) is on. In addition, you can use +0 (zero) to access the object level of the modifier.

Select By group

Lets you specify how to select normals in the viewport:

  • Normal (+1): Click a normal to select it.
  • Vertex (+2): Click a mesh vertex to select all of its normals.
  • Edge (+3): Click a mesh edge to select the normals associated with the neighboring polygons.
  • Face (+4): Click a mesh face (or polygon) to select the associated normals.

Of course, with all of these methods, you can also use region selection to select multiple normals at once.

Ignore Backfacing

When on, selection of sub-objects affects only those facing you. When off (the default), you can select any sub-object(s) under the mouse cursor, regardless of their visibility or facing. If there are more than one sub-object under the cursor, repeated clicking cycles through them. Likewise, with Ignore Backfacing off, region selection includes all sub-objects, regardless of the direction they face.

Show Handles

Enables the display of handles, which are small squares at the end of each normal. Turn this on to make it easier to select normals.

Display Length

Specifies the length of each normal. This is for display purposes only; the length has no effect on the normal's functionality.

Unify (U)

Combines all selected normals at each vertex into a single specified normal . By default, with Unify/Break To Average off, Unify sets the direction for each unified normal to be perpendicular to the averaged surface at that point. With Unify/Break To Average on, Unify sets the direction be the average of the combined normals at each location.

Break (B)

Separates all selected, unified normals into their original components. With Unify/Break To Average off, Break orients each separated normal perpendicular to its respective face, thus splaying out the normals at each vertex if the connected faces are at different angles (as with a sphere). With Unify/Break To Average on, each separated normal uses the orientation of the original normal.

Break converts any selected normals to specified normals.

Unify/Break to Average

Determines normal orientation as the result of a Unify or Break operation. See the descriptions above for details. Default=off.

Average group

These controls give you different methods of averaging vertex normals; that is, setting them all to the same absolute angle, which is the average of their combined angles.

Selected

Sets selected normals to the same absolute angle: the average angle of all of them. If Use Threshold is on, averages only normals whose distance from each other is less than that specified in the Average Threshold spinner (to the button's right).

Use Threshold

Activates the Average Threshold setting, and causes the Selected to average only normals whose distance from each other is less than the specified value.

Target

Enters an interactive mode in which you specify pairs of normals to average. Click Target, and then select a normal. When the mouse cursor is over a normal, it changes to a + symbol. After clicking the first normal, a rubber-band dashed line connects the normal to the mouse cursor. Click a second normal to average the angles of the two normals.

The Pixels spinner next to the Target button sets the maximum distance in screen pixels between the mouse cursor and the target normal.

Copy Value (+C)

Copies the selected normal's orientation to the copy buffer. Available only when a single normal is selected.

Use Copy Value and Paste Value to apply a normal's orientation to one or more others within the same Edit Normals modifier. You cannot copy normals between modifiers.

Paste Value (+V)

Applies the paste buffer contents to the current selection. Available only after Copy Value has been used to place a normal's orientation in the copy, and one or more target normals are selected.

Specify (S)

Converts selected normals to specified status.

Reset (R)

Causes all selected normals to revert to unspecified status, and returns them to their initial, calculated positions. Also breaks apart unified normals.

Make Explicit (E)

Converts selected normals to explicit status; set to particular values.

[Selection Display]

When one normal is selected, shows its ID number. When 0 or more than one normal is selected, shows the number of normals selected.