Matching by Name




Matching By Name is the name of a filtering method that can be used in Substance Bakers to isolate low poly and high poly meshes based on their name.

This functionality is very useful to avoid geometry bleeding over each other during the baking process to achieve clean textures. It avoid having to move away meshes (often referred as "exploding") to achieve the same result.

When to Use Matching By Name

Examples

Use caseMeshMatching By Name OffMatching By Name On

Normal map baking with mesh bleeding.

In this example the helmet on top on the head of the character bleeds onto the character face.

By enabling Matching By Name we are able to ignore the helmet and bake the face properly.

This result is based on the main Match setting.

Ignore Backface for floating geometry.

In this example the "buttons" at the top of the box are floating geometry, they are not connected to the high poly mesh. Therefore they will cast shadows by default on the box underneath them which will show the geometry border.

By enabling Matching By Name for the Ignore Backface setting we are able to bake the ambient occlusion while ignoring the area under the buttons to make it look like one singular box.

This result is based on the use of the Ignore Backface setting.

How Matching By Name Works

The Matching By Name system works by reading the geometry name in both the low and high poly meshes and using a keyword (the suffix) to identify/match the names. By default the bakers use the specific suffix but they can changed (see below).

The current suffixes supported are:

Suffix TypeDefault ValueUsage
High Poly_highUsed to isolate the name of the high poly mesh to match against the low poly one.
Low Poly_lowUsed to isolate the name of the low poly mesh to match against the high poly one.
Ignore Backface_ignorebf

Used to ignore backfaces for bakers using secondary rays, such as the Ambient Occlusion.

This suffix should be present on the high poly meshes only, ex: mesh_high_ignorebf

Some rules to take into account to make this feature work properly:

  • Matching By Name has to be enabled in Common Parameters as it is off by default.
  • A secondary Matching By Name setting might be enabled in some bakers (such as Ambient Occlusion) because they produce secondary rays.
  • Matching is case sensitive, this means a mesh named "Vela" won't match with another one named "vela".
  • Multiple meshes can be matched together based on where the suffix is present in the geometry name.

Below are examples of how the matching may work (using the default suffix):

Low Poly NameWill Match With High PolyWill Not Match With High Poly
  • body_low
  • body_high
  • body_high_top
  • body_high_1
  • body_high_2
  • body-high
  • body_top_high
  • Head_low
  • Head_high
  • head_high
  • Leg_low_top
  • Leg_high
  • Leg_high_top
  • Leg_high_high_top
  • Leg_top_high

How to setup the bakers

Enabling Matching By Name

Matching By Name can be enabled in the Common Parameters of the Baker settings:

SoftwareSetting Configuration
Substance Painter
  1. Open the Baking Window (via the Texture Set Settings).
  2. Display the Common Parameters.
  3. Change the setting Match from "Always" to "By Mesh Name".
Substance Designer
  1. Open the Baking Window (by right-clicking on a linked mesh in the Explorer Window).
  2. Change the setting  Match  from "Always" to "By Mesh Name".

Changing the Suffix Names

The default suffixes are _low and _high and can be changed the following way:

High-poly meshes from zBrush

High-poly meshes exported from zBrush can be used for baking with the Matching By Name feature, however some settings might be followed:

File formatDescription
FBX

No specific parameters to enable/disable, mesh files can be used as-is.

OBJ

OBJ files exported by zBrush won't work with Matching By Name by default. Instead, it is possible to tell Substance Painter to use the mesh filename instead to match meshes by name.

To do so, make sure to:

  1. Disable the group (Grp) parameter for each subtool.
  2. Name the OBJ file appropriately (ex: body_high.obj).