In Unreal Engine, you can combine two or more Static Mesh Actors into a single new Actor using Actor merging. This reduces draw calls and helps with project optimization.
Actor Merging Workflow
To merge two or more Static Mesh Actors inside your Level, follow these steps:
-
In the Level Viewport or World Outliner, select the Static Mesh Actors you want to merge.
-
From the top menu bar, go to Actor > Merge Actors.
-
Select the type of merge you want to perform: Merge, Simplify, Batch, or Approximate. Refer to the Merge Types section on this page for more information.
The option you select will perform the merge automatically using the default or last configured settings. To configure merge options, from the top menu bar, go to Actor > Merge Actors > Merge Actor Settings.
-
Name your new Actor and select the folder where it should be created, then click Save.
Merge Types
Unreal Engine offers different methods to merge Static Mesh Actors, depending on what you are merging:
-
Merge
-
Simplify
-
Batch
-
Approximate
These options are described below.
Merge
By default, this method merges all selected Static Mesh Actors, creating one mesh section for each Material. You can specify LOD levels to use.
The number of draw calls is equivalent to the number of Materials. This method preserves UVs.
You can also select to merge all Materials, which bakes a single Material for the entire mesh. This results in a single section and a single draw call, but does not preserve UVs. Occlusion culling is performed per section.
Simplify
This method merges all selected Static Mesh Actors into a single mesh, called a Proxy Mesh. It uses the lowest-detail LOD of each selected mesh and simplifies mesh geometry based on the settings provided. Vertex count is also reduced.
This method results in one draw call. It bakes one Material for the entire mesh and does not preserve UVs. Occlusion culling is performed for the whole mesh.
Refer to the Proxy Geometry Overview page for additional information.
Batch
This method creates instanced Static Mesh components from identical Static Mesh components. It preserves UVs and does not affect occlusion culling.
Approximate
This method is new to Unreal Engine 5 and is similar to the Simplify merge method. The difference is that it can handle much more complex source meshes (for example, Nanite meshes), whereas the Simplify method would fail during either the simplification or the texture baking steps.
Merge Settings
You can configure individual merge settings from the Merge Actor Settings panel. To access this panel, from the top menu bar, go to Actor > Merge Actors > Merge Actor Settings.
Merge
When using this merge method, you can configure the options below.
Mesh Settings
The Mesh Settings section contains properties that affect the Static Meshes that will be merged.
Option | Description |
---|---|
Pivot Point at Zero | If enabled, the pivot point of the merged Actor will be set to the Level's origin (0,0,0). If disabled, the point of the merged Actor will be the pivot point of the first Static Mesh Actor selected for the merge. |
Merge Physics Data | Merges all of the collision primitives into a single physics object. |
Bake Vertex Data to Mesh | Bakes vertex data, including vertex color and normals, into the merged Static Mesh Actor. |
Output UVs | An array that contains multiple UV channels. If the source meshes contain valid UVs for a specified channel, you can select whether or not to output the UV channel into the merged Static Mesh Actor. |
LOD Selection Type | Control which LODs are added to the merged object. You can select one of the following options:
|
Include Imposters | If enabled, the merge will include imposter LODs that are part of the source Static Meshes. |
Allow Distance Field | If enabled, a distance field will be computed for this Mesh. Disable this option to save memory if the merged mesh will only be rendered in the distance. |
Generate Lightmap UVs | Creates a new lightmap UV layout for the merged Static Mesh Actor, using the existing UV islands. This new layout will be placed in the target lightmap UVChannel. |
Generate Nanite Enabled Mesh | If enabled, generates a Nanite-enabled mesh. |
Target Light Map Resolution | Specifies the resolution for the new lightmap UVs, which controls the distance calculated between each island within the layout. Higher resolutions will yield tighter spacing between each island. |
Computed Light Map Resolution | If enabled, lightmap resolution will be computed by summing up the Lightmap resolutions for the source Static Meshes. |
Material Settings
The Material Settings section contains properties that affect the textures and Materials of the Static Meshes to be merged.
You can't merge Materials for multiple Static Meshes if the LODSelection Type option in the Mesh Settings section is set to Use all LOD levels.
Option | Description |
---|---|
Merge Materials | If enabled, the Materials of all the merged assets will be combined into a single Material with a new UV layout. The following subsettings only become available if Merge Materials is enabled. |
Texture Size | Sets the horizontal (X) and vertical (Y) pixel dimensions, or resolution, for the final merged Material's textures. |
Texture Sizing Type | |
Normal Map | If enabled, generates a Normal map for the merged Actor. |
Tangent Map | If enabled, generates a Tangent map for the merged Actor. |
Metallic Map | If enabled, generates a Metallic map for the merged Actor. While this option is enabled, the Metallic Constant property has no effect. |
Metallic Constant | Sets a constant value for the Metallic property of the merged Actor's Material. Only enabled if the Metallic Map option is unchecked. |
Roughness Map | If enabled, generates a Roughness map for the merged Actor. While this option is enabled, the Roughness Constant property has no effect. |
Roughness Constant | Sets a constant value for the Roughness property of the merged Actor's Material. Only enabled if the Roughness Map option is unchecked. |
Anisotropy Map | If enabled, generates an Anisotropic map for the merged Actor. Anisotropy is a Material's property to change its appearance depending on the direction it is viewed from. While this option is enabled, the Anisotropy Constant property has no effect. |
Anisotropy Constant | Sets a constant value for the Anisotropy property of the merged Actor's Material. Only enabled if the Anisotropy Map option is unchecked. |
Specular Map | If enabled, generates a Specular map for the merged Actor. While this option is enabled, the Specular Constant property has no effect. |
Specular Constant | Sets a constant value for the Specular property of the merged Actor's Material. Only enabled if the Specular Map option is unchecked. |
Emissive Map | If enabled, generates an Emissive map for the merged Actor. |
Opacity Map | If enabled, generates an Opacity map for the merged Actor. While this option is enabled, the Opacity Constant property has no effect. You must also set the Blend Mode to Translucent for opacity to work correctly in the generated instances. |
Opacity Constant | Sets a constant value for the Opacity property of the merged Actor's Material. Only enabled if the Opacity Map option is unchecked. |
Opacity Mask Map | If enabled, generates an Opacity Mask map for the merged Actor. While this option is enabled, the Opacity Mask Constant property has no effect. You must also set the Blend Mode to Masked for opacity to work correctly in the generated instances. |
Opacity Mask Constant | Sets a constant value for the Opacity Mask property of the merged Actor's Material. Only enabled if the Opacity Mask Map option is unchecked. |
Ambient Occlusion Map | If enabled, generates an Ambient Occlusion map for the merged Actor. While this option is enabled, the Ambient Occlusion Constant property has no effect. |
Ambient Occlusion Constant | Sets a constant value for the Ambient Occlusion property of the merged Actor's Material. Only enabled if the Ambient Occlusion Map option is unchecked. |
Tangent Texture Size | Sets the horizontal (X) and vertical (Y) pixel dimensions, or resolution, for the merged Actor's Tangent texture. Enabled when Texture Sizing Type is set to Use per property manually overridden texture sizes. |
Anisotropy Texture Size | Sets the horizontal (X) and vertical (Y) pixel dimensions, or resolution, for the merged Actor's Anisotropy texture. Enabled when Texture Sizing Type is set to Use per property manually overridden texture sizes. |
Blend Mode | Sets how the Material's color is blended with background colors. You can choose from the following options:
|
Allow Two Sided Material | If enabled, the generated Material will be two-sided. |
Gutter Size | Sets the space, in pixels, between UV islands at the original texture resolution for the baked material. The space helps prevent the colors of your islands from overlapping. Otherwise, artifacts can appear on the mesh as downsampling of the texture occurs at render. The reduced texture sizes are known as mipmaps. |
Create Merged Material | If enabled, creates a flat Material from all Materials of the Actors to be merged, along with a new set of UVs. By default, this Material will not be applied to any section. |
Use Vertex Data for Baking Material | If enabled, uses vertex data such as vertex color to bake Material results. This is useful if you have a Material that is being controlled in some way by vertex color. |
Use Texture Binning | Calculate the varying output texture sizes according to their importance when packing the final atlas texture. |
Reuse Mesh Lightmap UVs | If enabled, attempts to reuse the lightmap UVs of the source Static Meshes when baking the Material. If disabled, generates a new set of lightmap UVs. |
Merge Equivalent Materials | If enabled, attempts to merge Materials that are deemed equivalent. Enabling this option can cause artifacts in the merged Static Mesh if output color is determined by world position or Actor position. |
Landscape Culling
If the Landscape Culling option is enabled, Unreal Engine will use existing landscape geometry to cull fully occluded triangles when merging Actors.
For example, if you have a tree mesh that was planted such that the bottommost triangles are well below the surface of a landscape, then those occluded triangles will be removed after the merge.
Simplify
When using the Simplify merge method, you can configure the options below.
Proxy Settings
Option | Description |
---|---|
Screen Size | The screen size of the merged Static Mesh, in pixels. |
Calculate Correct LODModel | If enabled, calculates the correct LOD models based on source meshes and transition size. |
Override Spatial Sampling Distance | Overrides the spatial sampling distance when converting multiple Static Meshes for proxy LOD merging. Large geometry with high sampling can have very high memory costs. |
Material Settings | You can configure the same Material settings described in the Merge section on this page. |
Merge Distance | Sets the distance at which meshes are merged together. For example, this can fill in gaps like doors and windows in distant geometry. |
Unresolved Geometry Color | Sets the color to be assigned to LOD geometry that can't be associated with the source geometry (for example, doors and windows that were further than the Merge Distance and were filled in). You can set red, green, and blue (RGB) values, as well as an alpha (A) value that controls transparency. |
Transfer Distance Override | Overrides the search distance at which Unreal Engine discovers texture values for simplified geometry. This is useful if you set a manual value greater than zero for the Merge Distance option, which generates new geometry in concave corners. |
Hard Edge Angle | Sets the angle at which a hard edge is introduced between the faces of the merged Static Mesh. This option increases vertex count and might introduce additional UV seams. It is only recommended if you are not using Normal maps. |
Normal Calculation Method | Select the method used to control Normal calculation for the simplified geometry. You can choose from the following options:
For more information about Normal calculation, refer to the Normal Calculation Method page. |
Light Map Resolution | Sets the lightmap resolution. |
Compute Light Map Resolution | If enabled, computes lightmap resolution as a sum of the dimensions for each mesh included for merging. |
Enable Volume Culling | If enabled, culling volumes can exclude geometry. |
Allow Adjacency | If enabled, allows adjacency buffers for tessellation in the merged Static Mesh. |
Allow Distance Field | If enabled, a distance field will be computed for this mesh. Disable this option to save memory if this mesh will only be rendered in the distance. |
Reuse Mesh Lightmap UVs | If enabled, attempts to reuse the lightmap UVs of the source Static Meshes when baking the Material. If disabled, generates a new set of lightmap UVs. |
Group Identical Meshes for Baking | If enabled, bakes identical meshes or mesh instances only once. This results in better quality baked textures and greatly reduces baking time. This can lead to discrepancies with the source mesh visual, especially for materials that are using world position or per instance data. |
Create Collision | If enabled, generates collision for the merged Static Mesh. |
Allow Vertex Colors | If enabled, vertex colors will be saved in the merged Static Mesh. |
Generate Lightmap UVs | Creates a new lightmap UV layout for the merged Static Mesh Actor, using the existing UV islands. This new layout will be placed in the target lightmap UVChannel. |
Generate Nanite Enabled Mesh | If enabled, generates a Nanite-enabled mesh. |
Batch
When using the Batch merge method, you can configure the options below.
Option | Description |
---|---|
Actor Class to Use | Select the class to use for the instanced Static Meshes. |
Instance Replacement Threshold | Sets the minimum number of Static Mesh instances needed before a Static Mesh is replaced with an instanced version. |
Skip Meshes with Vertex Colors | If enabled, Static Meshes that use vertex colors will not be instanced. This prevents data loss because instanced Static Meshes do not support vertex colors per instance. |
Use HLOD Volumes | If enabled, instanced Static Meshes will be split up based on their intersection with HLOD volumes. |
Select the type of Instanced Component | Select the type of instanced component to use for the instanced Static Meshes. |
Approximate
When using the Approximate merge method, you can configure the options below.
Mesh Generation Settings
Shape Settings | Description |
---|---|
Output Type | The type of output from the mesh approximation process.
|
Approximation Accuracy | The approximation accuracy in meters, which will determine (for example) voxel resolution. |
Attempt Auto Thickening | If enabled, attempts to auto-thicken thin parts or flat sheets. |
Target Min Thickness Multiplier | A multiplier on Approximation Accuracy used for auto-thickening. |
Ignore Tiny Parts | If enabled, tiny parts will be excluded from the mesh merging, which can improve performance. |
Tiny Part Size Multiplier | A multiplier on Approximation Accuracy used to define tiny-part threshold, using maximum bounding-box dimension |
Base Capping | Optionally close off the bottom of open meshes. Possible options are:
These options can have very different effects on the resulting mesh depending on whether or not the other input objects are closed meshes, as well as the 'winding' threshold. For example, a large mountain scan that is uncapped should use the polygon and not the solid, but if it's many kitbashed mesh parts, the open mesh can introduce significant problems and using the solid may be more reliable. |
Fill Gaps | If enabled, topology is expanded / contracted to fill small gaps between objects. |
Gap Filling Distance | The distance in meters to expand / contract to fill gaps. |
Clamp Voxel Dimension | The maximum allowable voxel count along main directions. This is a limit on Approximation Accuracy. |
Winding Threshold | The Winding Threshold controls hole filling at open mesh borders. Smaller value means more or rounder filling. |
Output Mesh Filtering and Simplification Settings
Option | Description |
---|---|
Occlusion Method | The type of hidden geometry removal to apply:
|
Occlude from Bottom | If enabled, then the OcclusionMethod computation is configured to try to consider downward-facing "bottom" geometry as occluded. |
Simplify Method | Mesh Simplification criteria:
|
Geometric Deviation | The allowable geometric deviation, in meters, used when the Simplify Method is set to Geometric Tolerance. |
Target Tri Count | The target triangle count for mesh simplification, used when the Simplify Method is set to Fixed Triangle Count. |
Triangles Per M | The approximate number of triangles per square meter, used when the Simplify Method is set to Triangles Per Area. |
Ground Clipping | Configures how the final mesh should be clipped with a ground plane, if desired. The options are:
For all of these options, the height (Z) of the clip plane is provided by the Ground Clipping ZHeight option. |
Ground Clipping ZHeight | The Z-Height for the ground clipping plane, if Ground Clipping is enabled. |
Mesh Normals and Tangents Settings
Normals Settings | Description |
---|---|
Estimate Hard Normals | If enabled, Normal angle will be used to estimate hard Normals |
Hard Normal Angle | The Normal angle to use to detect hard Normals. |
Mesh UV Generation Settings
UV Settings | Description |
---|---|
UV Generation Method | |
Initial Patch Count | The number of initial patches the mesh will be split into before computing island merging. Only relevant for the PatchBuilder UV generation method. |
Curvature Alignment | Controls the alignment of the initial patches to creases in the mesh. Only relevant for the PatchBuilder UV generation method. |
Merging Threshold | The distortion / stretching threshold for island merging. Larger values increase the allowable UV stretching. Only relevant for the PatchBuilder UV generation method. |
Max Angle Deviation | UV islands will not be merged if their average face Normals deviate by more than this value. Only relevant for the PatchBuilder UV generation method. |
Output Static Mesh Settings
Mesh Settings | Description |
---|---|
Generate Nanite Enabled Mesh | Whether to generate a Nanite-enabled mesh. |
Support Ray Tracing | Whether ray tracing will be supported on this mesh. Disable this to save memory if the generated mesh will only be rendered in the distance. |
Allow Distance Field | Whether to allow a distance field to be computed for this mesh. Disable this to save memory if the generated mesh will only be rendered in the distance. |
Nanite Proxy Triangle Percent | The percentage of triangles to reduce down to when generating a coarse proxy mesh from the Nanite mesh. |
Material Baking Settings
Material Settings | Description |
---|---|
Multi Sampling AA | If this property is greater than 1, multisample output baked textures by this amount in each direction (for example, 4 == 16x supersampling). |
Render Capture Resolution | If this property is zero, use the Material Settings resolution, otherwise override the render capture resolution. |
Material Settings | You can configure the same Material settings described in the Merge section on this page. |
Capture Field Of View | The field of view angle to use when performing the render capture. |
Near Plane Dist | The near plane distance to use when performing the render capture. |
Debug Output Settings
Debug Settings | Description |
---|---|
Print Debug Messages | If enabled, print out debugging messages. |
Emit Full Debug Mesh | If enabled, write the full mesh triangle set (flattened, non-instanced) used for mesh generation. This asset may be extremely large. |
Replace Source Actors
If the Replace Source Actors option is enabled, the Actors selected in the viewport will be removed and replaced with the new merged Actor. This will not delete their Assets from the Content Browser or from your project folders.
This option is common to all of the merge methods described on this page.