Optimize Settings Guide
A shoe model, before and after optimization.
3D Model Optimization Method
Optimization contains options for decimation, remeshing, texture atlas baking, UV aggregation, and more.
Optimization has two main branches:
Material Optimization: Bake materials into new PBR textures, preserving existing tiled texture coordinates, or generating new atlas UVs. Mesh topology is not altered, but the number of materials may change, and new UVs may be created.
Mesh and Material Optimization: Optimize meshes, including all their materials, textures, and UVs. Materials can be merged or replaced altogether, and surfaces can be remeshed. Optimization always considers materials when they are present.
Material Optimization
Materials can be optimized without changing the mesh topology. This can help improve performance by reducing the number of materials and textures.
Material Optimization has three main choices:
- Material Merger
- Bake all input materials into a new UV layout, replace all materials with a new uniform material, or remove existing textures and convert them into values instead.
- Keep Materials and UVs
- Preserve existing materials and UVs, and optionally replacing textures with values, as well as creating a 2nd UV and baking ambient occlusion and normal maps.
- Material and UV Aggregator
- Combine materials and UVs into shared side-by-side charts, and optionally replacing textures with values, as well as creating a 2nd UV and baking ambient occlusion and normal maps.
Material Merger
Merge materials according to existing material properties if possible, and optionally preserve tiled UVs.
Additional UV (atlas) unwrapping and texture baking options are available via the Material Regenerator in order to project the original material properties onto the merged output materials.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Material Merging | materialMergingMethod | basic | string [auto] (auto) | method to define how materials are merged |
| Keep Tiled UVs | keepTiledUVs | basic | Boolean (false) | preserves repeating texture coordinates |
| Tiling Threshold | tilingThreshold | advanced | number [>= 1 && <= 1.7976931348623157e+308] (1.5) | UV extent after which a UV channel is considered repeating (= tiling texture) |
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"materialMerger": {
"materialRegenerator": {
"uvAtlasGenerator": {
"textureBaker": {
"normalMap": {}
}
}
},
"keepTiledUVs": false,
"tilingThreshold": 1.5
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Material Merging: Currently the merging method is set to "auto". This merges materials by opacity and keeps non-combinable materials separate.
Keep Tiled UVs: Preserves repeating texture coordinates (UVs) and associated texture maps.
Tiling Threshold: Decides whether UVs are considered to be tiling or not. The default value
1.5means UVs extending at least 150% outside the 0-1 UV space are considered to be Tiling UVs. Adjust this value to detect more UVs as being tiled.
When using Material Merger, the Material Regenerator controls how the materials will be combined together. The Regenerator has three main options:
- UV Atlas Generator + Texture Baker
- Bake input materials into a new UV layout.
- Material Replacer + Default Material Option
- Replace input materials with a new uniform material.
- Material Replacer + Drop Uniform Texture Maps
- Remove input textures, converting them into values.
Material Regenerator: UV Atlas Generator + Texture Baker
This is the most common usage of the Material Regenerator within the RapidPipeline 3D Processor.
It enables creation of new UV atlases corresponding to the (new, merged) output materials and baking from the original input materials and meshes onto the merged or otherwise altered output materials and meshes.
This process does consider all (PBR) material properties and is able to project from material, vertex colors and other material attributes to texture maps as well as perform normal map and ao baking to capture mesh, normal and occlusions from the original data.
All generated UV atlases are in the 0 to 1 UV space, except when atlasFactorUDIMLayout is utilized.
See 3D Edit Settings Guide: Generate UV Atlas for more information.
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"materialMerger": {
"materialRegenerator": {
"uvAtlasGenerator": {
"textureBaker": {
"normalMap": {
"mode": "always",
"recomputeNormals": true,
"skipNormalsRoughnessThreshold": 0.0,
"normalMapScale": 1.0,
"tangentSpace": true
},
"aoBaker": {
"strength": 0.5,
"replaceOriginal": true,
"filterRadius": 3.0,
"textureSamples": 48
},
"bakingResolution": {
"default": 2048
},
"sampleCount": 4,
"texMapAutoScaling": true,
"bakeCombinedScene": false,
"topologicalHolesToAlpha": false,
"powerOfTwoResolution": "ceil",
"inpaintingRadius": 32.0
},
"method": "isometric",
"segmentationCutAngle": 88.0,
"segmentationChartAngle": 130.0,
"maxAngleError": 114.0,
"maxPrimitivesPerChart": 10000,
"cutOverlappingPieces": true,
"atlasMode": "separateAlpha",
"allowRectangularAtlases": false,
"packingResolution": 1024,
"packingPixelDistance": 2,
"atlasFactor": 1
}
},
"keepTiledUVs": false,
"tilingThreshold": 1.5
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Unwrapping Method
Unwrapping Method controls how meshes are flattened into UV charts - see 3D Edit Settings Guide: Generate UV Atlas - Unwrapping
method
Segmentation
Segmentation controls how meshes are divided into UV charts - see 3D Edit Settings Guide: Generate UV Atlas - Segmentation
segmentationCutAnglesegmentationChartAnglemaxAngleErrormaxPrimitivesPerChartcutOverlappingPieces
UV Atlas Mode
UV Atlas Mode fits the UV charts into the 0-to-1 UV space - see 3D Edit Settings Guide: Generate UV Atlas - Atlas Packing
atlasModeallowRectangularAtlasespackingResolutionpackingPixelDistance
Multiple Atlas Factor
Multiple Atlas Factor divides each output material to create more texture sets, so a value of 2 means each material becomes two materials.
atlasFactor
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Multiple Atlas Factor | atlasFactor | basic | integer [>= 0 && <= 16] (1) | divide each created atlas into n new atlases |
Multiple Atlas Factor allows fine-grained control over resolution when baking textures.
If merely increasing the Texture Baking Resolution alone, the resolution will be quadrupled (e.g. changing from 2048 to 4096 will result in 4x the number of pixels).
Alternatively, the Multiple Atlas Factor can be increased while decreasing the Texture Baking Resolution, which allows 2x or 3x the resolution instead of simply 4x (e.g. two or three 2048s instead of one 4096).
A potential downside of this is an increase in the number of draw calls, because this feature increases the number of separate materials per mesh.
Atlas Factor to UDIM Layout
This setting changes the atlasFactor to be the number of UV tiles per material, in a UDIM layout.
atlasFactorUDIMLayout
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Atlas Factor to UDIM Layout | atlasFactorUDIMLayout | basic | boolean (false) | Utilizes atlas factor as number of tiles in a UDIM layout instead. |
When atlasFactorUDIMLayout is set to true, the atlasFactor controls the number of UDIM tiles that each output material's UVs will be split into. The UDIM tiles are laid out horizontally, each incremented by one unit on the U axis.
When atlasFactorUDIMLayout is set to false (the default), then the atlasFactor works as normal (see Multiple Atlas Factor).

atlasFactorUDIMLayout:true with atlasFactor:15
Learn more about the new UDIM layout feature in the RapidPipeline Blog:
UDIM Generation for Adobe Substance Painter
Texture Baker
The Texture Baker options control how PBR materials are baked.
The Texture Baker has these main options:
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Baking Sample Count | sampleCount | basic | integer [>= 1 && <= 16] (4) | number of samples per texel for texture baking |
| Texture Map Auto Scaling | texMapAutoScaling | basic | boolean (true) | if true, each texture's pixel budget is divided by all atlases |
| Bake Combined Scene | bakeCombinedScene | advanced | boolean (false) | bakes the scene as a single entity even if its meshes have transformations |
| Bake Topological Holes to Alpha Map | topologicalHolesToAlpha | advanced | boolean (false) | capture areas where the corresponding source surface was not found on an alpha mask |
| Power of Two Resolution | powerOfTwoResolution | expert | string [none, ceil, floor, round] (ceil) | ensures that textures have power of two dimensions |
| Inpainting Radius | inpaintingRadius | expert | number [>= 0 && <= 32] (32) | radius, in pixels, for texture inpainting |
Texture Resolution Auto Scaling
When enabled the value for 'Texture Baking Resolution' is used for the largest atlas in terms of occupied 3D surface. Materials on smaller meshes will use smaller power of 2 resolutions, according to their size in 3D space.
When disabled, all atlases will use the same texture resolution, as set by the 'Texture Baking Resolution' parameter.
Texture Baking Resolution
Resolution for the new baked textures. Default is 2048x2048 pixels.
It is usually best to enter a powers-of-two number, for example 256, 512, 1024, etc.
Using a non-powers-of-two value can generate non-square dimensions when beneficial, if 'Texture Resolution Auto Scaling' is enabled.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Default Texture Map Resolution | default | basic | integer [>= 0 && <= 16384] (2048) | default resolution for baked texture maps |
Normal Map Baking Settings
Normal Map Baker
Normal map baking can be either always enforced, only performed if the input material already has normal maps, or not performed at all.
always: Normal maps are baked for every material. The baked maps will include details from both the original normal maps and the input geometry.
ifInInput: Normal maps are only baked for materials that have normal maps already.
never: Normal maps are not baked.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Normal Map Baking Mode | mode | basic | string [always, ifInInput, never (always) | when to (re)bake normal maps |
| Recompute Normals | recomputeNormals | advanced | boolean (true) | recompute normals before baking |
| Skip Normals Roughness Threshold | skipNormalsRoughnessThreshold | advanced | number [>= 0 && <= 1] (0) | roughness value below which difference in normals between source/target are not baked |
| Normal Map Scale | normalMapScale | expert | number [>= 2.2250738585072014e-308 && <= 1.7976931348623157e+308] (1) | normal scaling for the baked normal map (only used on glTF output) |
| Tangent Space Normal Maps | tangentSpace | expert | boolean (true) | switches between tangent-/object-space normal maps |
Occlusion Map Baking Settings
Ambient Occlusion Map Baker
Bakes an ambient occlusion texture. This helps increase realism when an asset is shown in a real-time renderer. To bake ambient occlusion, the asset requires a UV with no overlaps, commonly called an 'atlas' layout.

CAD engine model without ambient occlusion, versus with ambient occlusion.
Preserve Tiling
- If enabled, a 2nd UV is generated using an 'atlas' layout and the occlusion is baked into it. Tiling textures can continue to use the unaltered 1st UV.
- If disabled, the first UV is re-generated using an 'atlas' layout and the occlusion is baked into it.
Strength
- Controls the shading intensity of the baked occlusion.
- Default is 0.5.

The FlightHelmet model with baked ambient occlusion using Strength: 0.25, 0.5, 0.8.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Strength | strength | basic | number [>= 0.1 && <= 1] (0.5) | Strength (intensity) for generated AO maps. Default is 0.5. |
| Replace Original Ambient Occlusion Map | replaceOriginal | advanced | boolean (true) | Computes a new AO map even if one is present in the input. Default is true. |
| Filter Radius | filterRadius | expert | number [>= 0 && <= 16] (3) | Filter radius for smoothing the AO map (if any). Default is 3. |
| Texture Samples | textureSamples | expert | integer [>= 8 && <= 64] (48) | Number of samples per texel for AO map generation (converted to a multiple of 8). Default is 48. |
Material Regenerator: Material Replacer + Default Material Option
Identical to the same options within 3D Edit:
- Default Material + generate UVs (Cube Unwrapping)
- Default Material + generate UVs (Generate UV Atlas)
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"materialMerger": {
"materialRegenerator": {
"materialReplacer": {
"defaultMaterial": {
"generateUVs": {
"uvAtlasGenerator": {
"addCheckerTexture": {},
"method": "isometric",
"segmentationCutAngle": 88.0,
"segmentationChartAngle": 130.0,
"maxAngleError": 114.0,
"maxPrimitivesPerChart": 10000,
"cutOverlappingPieces": true,
"atlasMode": "separateAlpha",
"allowRectangularAtlases": false,
"packingResolution": 1024,
"packingPixelDistance": 2
}
},
"baseColor": [
0.0,
0.0,
1.0,
1.0
],
"metallic": 0,
"roughness": 0.5
}
}
},
"keepTiledUVs": false,
"tilingThreshold": 1.5
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Material Regenerator: Material Replacer + Drop Uniform Texture Maps
Identical to the same options within 3D Edit.
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"materialMerger": {
"materialRegenerator": {
"materialReplacer": {
"dropTextures": {
"default": 0.0,
"baseColor": 0.0,
"opacity": 0.0,
"normal": 0.0,
"metallic": 0.0,
"roughness": 0.0,
"emissive": 0.0,
"occlusion": 0.0,
"displacement": 0.0,
"clearcoat": 0.0,
"clearcoatColor": 0.0,
"clearcoatRoughness": 0.0,
"clearcoatSpecularLevel": 0.0,
"clearcoatNormal": 0.0,
"transmission": 0.0,
"thickness": 0.0,
"attenuationColor": 0.0,
"scatteringColor": 0.0,
"scatteringDistanceScale": 0.0,
"sheenColor": 0.0,
"sheenRoughness": 0.0,
"sheenOpacity": 0.0,
"specularColor": 0.0,
"specularValue": 0.0,
"anisotropy": 0.0,
"anisotropyAngle": 0.0,
"iridescence": 0.0,
"iridescenceThickness": 0.0
}
}
},
"keepTiledUVs": false,
"tilingThreshold": 1.5
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Keep Materials and UVs
Preserves original materials and texture coordinates.
Optional choice of:
- Drop Uniform Texture Maps
- Generate 2nd UV Atlas
Currently 3D Processor can not preserve 2nd UV sets.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Force Rebaking Normal Maps | forceNormalRebaking | expert | boolean (false) | rebakes normal maps when preserving UVs, even if UV overlaps are detected |
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"keepMaterialsUVs": {
"forceNormalRebaking": false
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Drop Uniform Texture Maps
Identical to the same options within 3D Edit.
2nd UV Atlas Texture Baker
Texture Baking Settings for baking into 2nd UV atlas.
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"keepMaterialsUVs": {
"atlasGenerator2ndUV": {
"textureBaker2ndUV": {
"bakingResolution2ndUV": {
"default": 2048
},
"aoBaker2ndUV": {
"strength": 0.5,
"replaceOriginal": true,
"filterRadius": 3.0,
"textureSamples": 48
},
"sampleCount": 4,
"texMapAutoScaling": true,
"bakeCombinedScene": false,
"powerOfTwoResolution": "ceil",
"inpaintingRadius": 32.0
},
"method": "isometric",
"segmentationCutAngle": 88.0,
"segmentationChartAngle": 130.0,
"maxAngleError": 114.0,
"maxPrimitivesPerChart": 10000,
"cutOverlappingPieces": true,
"atlasMode": "separateAlpha",
"allowRectangularAtlases": false,
"packingResolution": 1024,
"packingPixelDistance": 2,
"atlasFactor": 1
},
"forceNormalRebaking": false
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


| Settings |
|---|
| Same Settings as in Texture Baker Section |
2nd UV Texture Baking Resolution
Texture Baking Resolution for baking into 2nd UV atlas.
| Settings |
|---|
| Same Settings as in Texture Baking Resolution Section |
2nd UV Ambient Occlusion Map Baker
Bakes a new ambient occlusion map into the generated 2nd UV atlas. This is very useful if the 1st UV atlas is reserved due to UV atlas preservation or aggregation.
| Settings |
|---|
| Same Settings as in Ambient Occlusion Map Baker Section |
Material and UV Aggregator
UVs are preserved and textures are aggregated from different materials into a single atlas when possible.
Optional choice of:
- Drop Uniform Texture Maps
- Generate 2nd UV Atlas
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Allow Rectangular Atlases | allowRectangularAtlases | basic | boolean (true) | create rectangular POT textures when beneficial for auto sized textures |
| Force Rebaking Normal Maps | forceNormalRebaking | expert | boolean (false) | rebakes normal maps when preserving UVs, even if UV overlaps are detected |
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"onlyMaterial": {
"materialUVAggregator": {
"allowRectangularAtlases": true,
"forceNormalRebaking": false
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Mesh and Material Optimization
Decimator

Simplifies a mesh by reducing the number of faces while preserving materials, UVs and textures. This is useful for reducing file size, and improving performance by reducing memory usage.
Vertices are collapsed and merged by distance and angle, while attempting to preserve the original volume and curvature. The decimator is capable of reducing mesh complexity while keeping important properties such as original UV coordinates, normals and topology in place.
Decimation is computed from the original mesh, therefore the quality of the result highly depends on the quality of the input topology.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Preserve Topology | preserveTopology | basic | boolean (false) | preserves topological features like holes during decimation |
| Preserve Normals | preserveNormals | basic | boolean (false) | preserves vertex normals during decimation |
| Preserve Mesh Borders | preserveMeshBorders | advanced | boolean (true) | preserves borders (vertices) common between meshes |
| Preserve Material Borders | preserveMaterialBorders | advanced | boolean (false) | preserves mesh material borders during decimation |
| Collapse Unconnected Vertices | collapseUnconnectedVertices | advanced | boolean (true) | switches collapsing of nearby, unconnected vertices on/off |
| Boundary Preservation Factor | boundaryPreservationFactor | expert | number [>= 0 && <= 1] (0.5) | factor to steer preservation of boundaries during decimation |
| Collapse Distance Threshold | collapseDistanceThreshold | expert | number [>= 0 && <= 0.1] (0.005) | threshold w.r.t BBox diagonal for collapsing nearby vertices |
| Decimation Method | method | expert | string [quadric, edgeLength] (quadric) | method to be used for decimation |
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"meshAndMaterialOptimization": {
"decimator": {
"target": {
"faces": {
"value": 1
},
"deviation": {
"value": 0.0
}
},
"materialOptimization": {
"materialMerger": {
"materialRegenerator": {
"uvAtlasGenerator": {
"textureBaker": {
"normalMap": {}
}
}
}
}
},
"preserveTopology": false,
"preserveNormals": false,
"preserveMeshBorders": true,
"preserveMaterialBorders": false,
"collapseUnconnectedVertices": true,
"boundaryPreservationFactor": 0.50,
"collapseDistanceThreshold": 0.005,
"method": "quadric"
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Faces or Vertices
The decimator can reduce either the number of Faces or the number of Vertices.
There are two methods for limiting the number of Faces/Vertices: it can use either a Target (maximum number of output triangles or vertices) or a Percentage (maximum percentage of input triangles or vertices). These act as an upper limit on the number of triangles or vertices in the output.
The Deviation Percentage can be used to reduce the asset further, working with each asset's own local curvature to remove detail as needed.
RapidPipeline will attempt to get as close as possible to the chosen limit, though sometimes a mesh may require a slightly different final count to preserve surface continuity.
Face Target or Percentage
The desired amount or percentage of faces (triangles), default Target is 1 output triangle, default Percentage is 100% of the input triangles.
The default of 1 is not recommended for an actual production config. We recommend at least 1,000 faces.
The Face Target can be disabled by setting it to any number higher than the input triangle count (e.g. 10 million).
The Face Percentage can be disabled by setting it to 100%, which will result in the exact same count as the input, although ultimately the output will also depend on Vertex and Deviation limits if set.
Vertex Target or Percentage
The desired amount or percentage of vertices, default Target is 1 output vertex, default Percentage is 100% of the input vertices.
The vertex limit can be set in addition to the face limit. Whichever target is lower will be respected.
The Vertex Target can be disabled by setting it to any number higher than the input vertex count (e.g. 10 million).
The Vertex Percentage can be disabled by setting it to 100%, which will result in the exact same count as the input, although ultimately the output will also depend on Face and Deviation limits if set.
Deviation Value or Percentage
This is the maximum distance between the original input and the decimated output. This is sometimes called an error metric.
The deviation target can be used to stop the decimation as soon as an edge collapse introduces an deviation (or error) larger than the percentage of deviation relative to the original mesh.
Deviation works in conjunction with the Face/Vertex limits; those act as an upper cap on the deviation. Depending on the deviation setting, the final count can be lower or equal to that upper limit.
For the Deviation Percentage larger values tend to cause lower triangle counts. We recommend a percentage of 0.05% or less for complex highly detailed 3D assets, to achieve a reasonably small deviation. For a medium deviation from the input, we recommend a percentage around 0.3%. Setting the Deviation Percentage to zero will disable it entirely.
For the Deviation Value the number is in scene units, which is usually 1 meter. A value of 0.01 would allow a deviation of 1 centimeter between the input mesh and the output mesh. Setting the Deviation Value to zero will disable it entirely.
The computation of the deviation between the original and decimated asset is based on a one-way Hausdorff distance (https://en.wikipedia.org/wiki/Hausdorff_distance).
Preserve Topology
Preserves topological features like holes during decimation.
Disabled by default, since this acts as a constraint on the decimation and thus the desired face target might not be reached.
In most cases it is recommended to decimate meshes without attempting to preserve the exact topology constraints from the input shapes. This allows the simplification algorithm to remove small holes or handles, for example, when creating a low-triangle approximation.
However for some applications and input models, it may be desired to better preserve the exact topology of the input shape. Preserve Topology applies limits on decimation that holes should never be closed, handles and different surface parts should never be merged, and geometric details like fine strands should be preserved.
Preserve Normals
Preserves vertex normals during decimation, rather than recalculating normals after merging vertices.
Disabled by default, since this acts as a constraint on the decimation and thus the desired face target might not be reached.
Preserve Mesh Borders
Attempts to preserve vertices which are common across geometric borders between neighboring meshes.
Enabled by default, since disabling this can cause cracks to appear between meshes.
Preserve Material Borders
Attempts to preserve vertices which are common across material borders between neighboring meshes.
Disabled by default, since this acts as a constraint on the decimation and thus the desired face target might not be reached.
Collapse Unconnected Vertices
Collapses nearby unconnected vertices. Enabled by default.
Boundary Preservation Factor
Factor to steer preservation of boundaries during decimation.
Collapse Distance Threshold
Threshold for collapsing nearby vertices, this is relative to the diagonal distance of the asset bounding box, which is usually measured in meters.
Decimation Method
Can be used to specify which method should be used for decimation. There are two methods available:
- Quadric - Default. This is preferred in most cases, as it preserves localized detail features well.
- Edge Length - This method is more simple and hence slightly faster. It produces a mesh where the triangles have a very regular distribution, which can be beneficial if you aim at obtaining a highly homogeneous mesh.

Generate UV Atlas (Decimator)
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"meshAndMaterialOptimization": {
"decimator": {
"target": {
"faces": {
"value": 1
},
"deviation": {
"value": 0.0
}
},
"materialOptimization": {
"materialMerger": {
"materialRegenerator": {
"uvAtlasGenerator": {
"textureBaker": {
"normalMap": {
"mode": "always",
"recomputeNormals": true,
"skipNormalsRoughnessThreshold": 0.0,
"normalMapScale": 1.0,
"tangentSpace": true
},
"aoBaker": {
"strength": 0.5,
"replaceOriginal": true,
"filterRadius": 3.0,
"textureSamples": 48
},
"bakingResolution": {
"default": 2048
},
"sampleCount": 4,
"texMapAutoScaling": true,
"bakeCombinedScene": false,
"topologicalHolesToAlpha": false,
"powerOfTwoResolution": "ceil",
"inpaintingRadius": 32.0
},
"method": "isometric",
"segmentationCutAngle": 88.0,
"segmentationChartAngle": 130.0,
"maxAngleError": 114.0,
"maxPrimitivesPerChart": 10000,
"cutOverlappingPieces": true,
"atlasMode": "separateAlpha",
"allowRectangularAtlases": false,
"packingResolution": 1024,
"packingPixelDistance": 2,
"atlasFactor": 1
}
},
"keepTiledUVs": false,
"tilingThreshold": 1.5
}
},
"preserveTopology": false,
"preserveNormals": false,
"preserveMeshBorders": true,
"preserveMaterialBorders": false,
"collapseUnconnectedVertices": true,
"boundaryPreservationFactor": 0.50,
"collapseDistanceThreshold": 0.005,
"method": "quadric"
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Keep Materials and UVs (Decimator)
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"meshAndMaterialOptimization": {
"decimator": {
"target": {
"faces": {
"value": 1
},
"deviation": {
"value": 0.0
}
},
"materialOptimization": {
"keepMaterialsUVs": {
"forceNormalRebaking": false
}
},
"preserveTopology": false,
"preserveNormals": false,
"preserveMeshBorders": true,
"preserveMaterialBorders": false,
"collapseUnconnectedVertices": true,
"boundaryPreservationFactor": 0.50,
"collapseDistanceThreshold": 0.005,
"method": "quadric"
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


UV Aggregator (Decimator)
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"meshAndMaterialOptimization": {
"decimator": {
"target": {
"faces": {
"value": 1
},
"deviation": {
"value": 0.0
}
},
"materialOptimization": {
"materialUVAggregator": {
"allowRectangularAtlases": true,
"forceNormalRebaking": false
}
},
"preserveTopology": false,
"preserveNormals": false,
"preserveMeshBorders": true,
"preserveMaterialBorders": false,
"collapseUnconnectedVertices": true,
"boundaryPreservationFactor": 0.50,
"collapseDistanceThreshold": 0.005,
"method": "quadric"
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Remesher

Creates a new mesh over the input geometry, optionally decimates it, then bakes from the source mesh onto the new surface, including PBR textures like normal maps and ambient occlusion, and optionally baking holes into an alpha texture.
Due to the re-creation of the original surface, original materials and UVs cannot be kept. New atlas UVs are generated for the remeshed surface, and all the original mesh and material properties are baked into it using Material Merger and Material Regenerator.
Remeshing Method
Two remeshing methods are provided: Voxelization and Shrinkwrap. Shrinkwrap is generally better with mechanical shapes and hard angles, while Voxelization is better with organic meshes like clothing and characters.
An example of Shrinkwrap being used on furniture: Blender Tutorial: Remesh and Bake Holes
An example of Voxelization being used on apparel: Blender Tutorial: Remesh and Bake Decals

Remeshing methods compared on a shirt with label patches.
Remeshing Resolution
This sets the resolution of the remesher mesh projection. A value of 0 will let RapidPipeline use an automatic resolution (usually 7). Usable range is from 4 to 11.
The Resolution usually needs to be fine-tuned to match the size of the holes in the source topology. It decides how fine the remesh grid will be, which affects whether the new mesh will cover or poke through the existing holes. The greater the Resolution, the sharper the corners will be, but also the more likely the new mesh will start to sink into holes.

Shrinkwrap resolution on a wicker sofa, showing how it eventually sinks into the holes.
Filter Back Projected
Enable this setting to avoid remeshing backfaces in non-watertight meshes. Disable this setting to force the remesher to create backfaces as explicit triangles.
When the input mesh is a closed watertight surface, only the outside will be remeshed. However if the model is not watertight, then the remesher will also resurface the face backsides.
This setting is only available with the Shrinkwrap method.
Remeshing Target
The Remesher Target will utilize the Decimator to optimize the remeshed surface. The Remesher may need less resolution than this, the Target just sets an upper limit.
If a target percentage is used, the result will be relative to the resolution of the input mesh. Setting the percentage to 100% will cause the remeshed surface to be output using the same number of vertices or triangles as the input.
If a target value is used, the result will be less than or equal to the set value. This acts as an upper limit, and will invoke the Decimator if the remeshed output exceeds this value. To prevent decimation, set the value to a high number like 10 million.
Bake Topological Holes to Alpha Map
This will preserve holes from the source mesh, by baking them into an alpha map on the new remeshed surface.
This setting is part of the Texture Baker, and is only available if the Remesher is activated.

A high-resolution wicker model (left) is remeshed into an optimized surface (right), capturing the gaps into an alpha map. See the Blender Remeshing Tutorial to learn more about this process.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Remeshing Method | method | basic | string [voxelization, shrinkwrap] (voxelization) | method for the initial remeshing process |
| Resolution | resolution | advanced | integer [>= 0 && <= 11] (0) | maximum octree depth (resolution) for the initial remeshing process (0=auto) |
| Filter Back Projected | filterBackProjected | basic | boolean (false) | avoids reconstructing backside faces when remeshing |
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"meshAndMaterialOptimization": {
"remesher": {
"target": {},
"method": "voxelization",
"resolution": 0,
"filterBackProjected": false,
"materialMerger": {
"materialRegenerator": {
"uvAtlasGenerator": {
"textureBaker": {
}
}
}
}
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


The setting filterBackProjected requires 3D Processing schema v1.3 (= rpdx v7.3.x) and applies only to method shrinkwrap.
Material Merger (Remesher)
Additional UV (atlas) unwrapping and texture baking options are available via the Material Regenerator in order to project the original material properties onto the merged output materials.
Material Regenerator: UV Atlas Generator + Texture Baker (Remesher)
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"3dModelOptimizationMethod": {
"meshAndMaterialOptimization": {
"remesher": {
"target": {
"faces": {
"percentage": 100.0
}
},
"materialMerger": {
"materialRegenerator": {
"uvAtlasGenerator": {
"textureBaker": {
"normalMap": {
"mode": "always",
"recomputeNormals": true,
"skipNormalsRoughnessThreshold": 0.0,
"normalMapScale": 1.0,
"tangentSpace": true
},
"aoBaker": {
"strength": 0.5,
"replaceOriginal": true,
"filterRadius": 3.0,
"textureSamples": 48
},
"bakingResolution": {
"default": 2048
},
"sampleCount": 4,
"texMapAutoScaling": true,
"bakeCombinedScene": false,
"topologicalHolesToAlpha": false,
"powerOfTwoResolution": "ceil",
"inpaintingRadius": 32.0
},
"method": "isometric",
"segmentationCutAngle": 88.0,
"segmentationChartAngle": 130.0,
"maxAngleError": 114.0,
"maxPrimitivesPerChart": 10000,
"cutOverlappingPieces": true,
"atlasMode": "separateAlpha",
"allowRectangularAtlases": false,
"packingResolution": 1024,
"packingPixelDistance": 2,
"atlasFactor": 1
}
}
},
"method": "voxelization",
"resolution": 0,
"filterBackProjected": false
}
}
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


The Material Merger within Remesher does not have the option to preserve tiled UV coordinates due to the newly created mesh surface.
Animation Optimization
Settings for animation optimization.
| Setting Title | Setting Name | Level | Type [Range] (Default) | Description |
|---|---|---|---|---|
| Animation Curve Simplification | simplification | basic | string [conservative, aggressive, extreme] (conservative) | specify how much to simplify animation curves |
Examples: | JSON | WebUI | PluginUI |
- 🖹 JSON Settings File:
- 🗔 Web Platform UI:
- 🔶 Blender Add-On (Expert Mode):
{
"version": 1.4,
"optimize": {
"animationOptimization": {
"simplification": "conservative"
}
},
"export": [
{
"fileName": "",
"textureMapFilePrefix": "",
"discard": {},
"format": {
"gltf": {
"pbrMaterial": {}
}
}
}
]
}


Further Documentation
For the full Documentation on all available data operations commands and system settings, please refer to the CLI Commands Guide and 3D Processor System Schema & Settings.
The 3D Processor is available for multiple interfaces: