Japanese
Leave Your Message

Geometry-Preserving Mesh Decimation: Inside 3D Expert's BIM Lightweighting Engine

2026-08-10

The Product Pipeline: Where DeCimation Lives

Before diving into the technical details, here is how mesh decimation and redundant data removal fit within the 3D Expert product pipeline. These techniqUes are performed exclusively during the lightweighting stage — never during extraction or rendering:

  • 3D/BIM Plugin (Extraction ONLY) — Currently 6 native export add-ins for CAD/BIM platforms (Revit, Bentley, Tekla, etc.), built on official vendor APIs. Extracts geometry, textures, materials, structure trees, and attribute data from native formats (.rvt, .dgn, etc.) with zero data loss. Output: intermediate GLZIP file (uncompressed) + DB file (attributes). The Plugin does NOT perform decimation, compression, or any lightweighting — its sole job is lossless extraction from proprietary formats.
  • Opt File Generator (Lightweighting → .opt output) — The lightweighting engine that performs mesh decimation, redundant data removal, Draco compression, LOD generation, and attribute DB packaging, all on the user's local computer. Takes intermediate GLZIP (from Plugin) or open formats (IFC, FBX, STEP, 3DXML, etc.). Output: **.opt format** model + DB file. This is the ONLY product that produces .opt files for downstream web rendering.
  • 3D Model & Data Asst (Lightweighting + Desktop Rendering, Win 10+) — A native Windows 10+ desktop application that imports GLZIP (from Plugin) or open formats, performs the same mesh decimation and redundant data removal as Opt File Generator, then immediately renders the model with full property query — all in one integrated app. Does NOT output .opt files; it is an end-user tool, not a file converter.
  • Rapid3D Loader for Three.js (Web Rendering) — An npm package that directly reads and loads .opt format models (produced by Opt File Generator) into Three.js scenes. Embeds a WASM Draco decoder for browser-side decompression with progressive chunk streaming. This is the rendering stage — it consumes .opt files, never produces or modifies them.

In short: the Plugin extracts from native formats into intermediate GLZIP. Opt File Generator performs mesh decimation + redundancy removal and outputs .opt files for web deployment. 3D Model & Data Asst performs the same lightweighting and renders directly on Windows 10+ — no .opt output. Rapid3D Loader reads .opt for web rendering.

────────────────────────────────────────────────────────────

Part I: Automatic Mesh Decimation — Mapped to Product

QEM-Based Geometry-Preserving Simplification

Automatic mesh decimation is the process of reducing triangle count while preserving the model's visual appearance and — critically for BIM — its engineering precision. 3D Expert's decimation engine is built on an improved Quadric Error Metric (QEM) algorithm, enhanced with curvature-aware adaptation, feature edge protection, topology validation, and UV/texture preservation. These capabilities are performed by Opt File Generator and 3D Model & Data Asst during the lightweighting stage.

The performance impact of excess triangles in BIM models:

Performance Metric

Impact of Excess Triangles

Improvement After Decimation

Draw Calls

Many dispersed meshes cause draw call explosion

60-80% reduction after mesh merging

GPU Memory

Oversized VBOs cause memory overflow

Vertex count reduced 50-80%, memory significantly lower

Frame Rate (FPS)

GPU rasterization load drives FPS below 30

Stable 60+ FPS after decimation

 

  1. QEM-Based Edge Collapse — The Industry Standard, Refined

The Quadric Error Metric (QEM), introduced by Garland and Heckbert in 1997, remains the de facto standard for mesh simplification in industrial applications. 3D Expert's engine uses an improved QEM variant that constructs a 4×4 symmetric error matrix Q for each vertex, accumulates the geometric constraints of all adjacent face planes, and prioritizes edge collapses by minimizing the resulting quadric error. The process: traverse all edges, compute collapse cost for each, sort into a priority queue (min-heap), and iteratively collapse the lowest-cost edges until the target triangle count or error threshold is reached.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+). Input: GLZIP from 3D/BIM Plugin (extraction only) or open formats (IFC, FBX, STEP, 3DXML)
  1. Curvature-Aware Adaptive Simplification

Not all surfaces tolerate decimation equally. Flat regions (walls, floor slabs) can lose 80-90% of their triangles with negligible visual impact, while high-curvature areas (curved beams, cylindrical pipes, spherical joints) require denser tessellation to maintain shape fidelity. The engine computes mean curvature at each vertex and applies a penalty factor (default 5.0×) to edges in high-curvature zones, steering the decimation toward flat areas first. The final collapse cost formula integrates multiple weights: Cost = Error(v̄) × w_boundary × w_curvature × w_uv × w_feature.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. Feature Edge Protection

BIM models contain engineering-critical feature edges: component outlines, cross-section transitions, and connection nodes. Collapsing these edges would distort component profiles and compromise engineering interpretation. The engine detects and protects three categories: open boundary edges (referenced by only one triangle), material boundary edges (adjacent triangles with different material IDs), and crease edges (normal angle change > 60°). Feature edges receive a configurable weight multiplier (default 10.0-100.0×), making them nearly immune to priority collapse.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. Topology Preservation & Manifold Validation

Every edge collapse is validated against five topology rules before execution: manifold check (no edge shared by 3+ triangles), normal flip check (adjacent face normals must not invert), connectivity check (the mesh must not split into separate bodies), degenerate check (no zero-area triangles created), and self-intersection check (the new vertex position must not collide with adjacent geometry). Invalid collapses are rejected and skipped, ensuring the output remains a valid manifold mesh suitable for downstream rendering, collision detection, and Boolean operations.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. UV Coordinate & Material Texture Preservation

BIM component surfaces often carry material texture maps. Improper UV handling during decimation causes texture misalignment, stretching, or seam tearing. The engine implements four UV protection strategies: seam-vertex locking (vertices on UV seams are excluded from collapse), UV boundary edge weighting (additional cost for edges on the UV boundary), weighted UV interpolation for new vertices (based on adjacent triangle area weights), and material boundary locking (edges spanning different material IDs cannot be collapsed).

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. Normal Recalculation & Hard/Soft Edge Handling

After edge collapse removes faces, adjacent vertex normals must be recalculated for correct lighting. The engine uses area-weighted normal computation: new normal = Σ(triangle area × triangle normal) / Σ triangle area. Hard/soft edge classification is applied automatically: if the normal angle between adjacent triangles exceeds 30° after collapse, the edge is preserved as a hard edge with non-interpolated normals. For components with normal maps, tangent and bitangent vectors are recalculated synchronously.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. Symmetry Preservation

BIM components typically exhibit symmetry (rectangular columns, cylindrical pipes, symmetric cross-section beams). Uncontrolled decimation can break this symmetry, producing visually jarring asymmetries. The engine performs symmetry plane detection before decimation begins, identifies symmetric vertex pairs, and applies synchronized collapse constraints — ensuring that both sides of a symmetric component are simplified identically.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)

 

The five topology validation checks performed before every edge collapse:

Check

Description

Action

Manifold Check

Does collapse create a non-manifold edge (3+ triangles)?

Reject collapse

Normal Flip Check

Do adjacent face normals invert after collapse?

Reject collapse

Connectivity Check

Does collapse change mesh connectivity (split body)?

Reject collapse

Degenerate Check

Does collapse create zero-area triangles?

Collapse + remove degenerate

Self-Intersection

Does new vertex position collide with adjacent geometry?

Reject collapse

────────────────────────────────────────────────────────────

Part II: Mesh Redundant Data Removal — Mapped to Product

Welding, Degenerate Removal & Resource Cleanup

Decimation reduces triangle count, but mesh objects exported from CAD platforms carry additional redundant data: duplicate vertices, degenerate geometry, and unreferenced resources. These do not contribute to rendering but consume memory and slow load times. Cleaning this data after decimation further reduces model size and improves runtime performance.

Vertex welding benchmark across model types:

Model Type

Vertices Before

Vertices After

Reduction

Building (Office Tower)

4,200,000

2,100,000

50%

Infrastructure (Bridge)

8,600,000

4,900,000

43%

Industrial (Chemical Plant)

15,300,000

8,700,000

43%

 

  1. Redundant Vertex Welding (Merge)

CAD exporters frequently produce multiple vertex copies at the same spatial position — each triangle carries independent vertex data, Boolean operations leave residuals, and tessellation side effects generate duplicates. The welding algorithm uses a spatial hash grid to bucket vertices by quantized coordinates, then performs proximity search within each bucket. Two vertices within epsilon distance (default 0.001 model units) are merged only if their normals, UVs, and material IDs are consistent; vertices with differing attributes (hard edges, UV seams) are preserved. Triangle indices are updated to reference the merged vertex. Benchmark data shows 43-50% vertex reduction across model types.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. Degenerate Geometry Removal

Degenerate triangles — those with zero or near-zero area — do not contribute to visible rendering but occupy index buffer space. They typically result from Boolean operation residuals or tessellation precision issues. The engine detects degenerates via three criteria: zero-area test (area < 1e-10 square units), collinearity test (cross product magnitude ≈ 0), and NaN/Infinity coordinate check. Degenerate triangles are removed from the index array, and any vertices orphaned by removal are cleaned up automatically.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)
  1. Unreferenced Resource Cleanup

Mesh objects may contain defined-but-unreferenced resources that consume memory without producing rendering output. After decimation and welding, the engine performs a full reference-count scan to clean up: orphaned vertices (reference count = 0), unused material slots (no triangle references), empty UV channels (UV2/UV3 all [0,0]), empty normal channels (tangent/bitangent all [0,0,0]), and empty color channels (all [1,1,1,1]). This cleanup reduces memory footprint by an additional 5-10%.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)

 

Unreferenced resource types cleaned during the post-cleanup phase:

Resource Type

Description

Cleanup Condition

Orphaned Vertices

Vertices not referenced by any triangle

Reference count = 0

Unused Materials

Material slots defined but unreferenced by triangles

Material reference count = 0

Empty UV Channels

UV2/UV3 channels present but all zero

Channel values all [0,0]

Empty Normal Channels

Tangent/bitangent channels all zero

Channel values all [0,0,0]

Empty Color Channels

Vertex color channel all white [1,1,1,1]

Channel values all [1,1,1,1]

────────────────────────────────────────────────────────────

Part III: The Five-Stage Processing Pipeline

Mesh decimation and redundant data removal are executed as a continuous processing stage within the lightweighting pipeline. The full flow consists of five sequential phases, executed entirely on the user's local computer by Opt File Generator or 3D Model & Data Asst.

Technical_infographic_style_il_2026-08-12T09-10-21.png

Phase 1: Pre-processing

The input file (intermediate GLZIP from 3D/BIM Plugin, or open formats such as IFC, FBX, STEP, 3DXML) is parsed into an internal mesh data structure. Topology analysis identifies boundary edges, material boundaries, and normal-discontinuity edges for feature edge marking. Symmetry detection identifies component symmetry planes and records symmetric vertex pairs.

  • Input from: 3D/BIM Plugin (extraction → GLZIP) or open formats (IFC, FBX, STEP, 3DXML). Processing by: Opt File Generator or 3D Model & Data Asst

Phase 2: Redundancy Pre-cleanup

Before decimation begins, a first pass of vertex welding reduces subsequent computation load. Degenerate triangles and orphaned vertices are removed. A pre-cleanup log records deleted vertex and triangle counts for audit traceability.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)

Phase 3: Automatic Decimation

QEM error matrices are constructed for every vertex. Edge collapse costs are computed with all weight factors (boundary, curvature, UV, feature). A min-heap priority queue drives iterative edge collapse from lowest to highest cost, with topology validation before each operation. The process stops when the target triangle count or maximum error threshold is reached.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)

Phase 4: Redundancy Post-cleanup

Decimation may produce new duplicate vertices (from edge collapse merging), so a second welding pass is executed. Unreferenced resources — orphaned vertices, empty material slots, empty channels — are cleaned up via reference-count scanning.

  • Powered by: Opt File Generator (lightweighting → .opt output) or 3D Model & Data Asst (lightweighting + desktop rendering, Win 10+)

Phase 5: Post-processing & Output

All affected vertex normals and tangents are recalculated. Component ID mapping tables are updated to ensure attribute DB queries remain correct. Opt File Generator then outputs the result as a .opt format model file + DB attribute file, ready for Rapid3D Loader to consume on the web. 3D Model & Data Asst skips the .opt output step and loads the result directly into its integrated desktop renderer on Windows 10+.

  • Opt File Generator: outputs .opt + DB → Rapid3D Loader (web rendering). 3D Model & Data Asst: lightweighting + direct desktop rendering (Win 10+, no .opt output)

────────────────────────────────────────────────────────────

Which Product for Which Need?

Mesh decimation and redundant data removal are common capabilities delivered by both lightweighting products. The product you choose depends on where your end users are and what they need to do with the model:

  • Building a web-based BIM platform or digital twin dashboard?→ Use 3D/BIM Plugin to extract native .rvt/.dgn to intermediate GLZIP, then run Opt File Generator to perform mesh decimation + redundancy removal (output: .opt + DB). Deploy the .opt files to your web server. Load with Rapid3D Loader for Three.js. Decimation parameters can be tuned via Opt File Generator's preset profiles.
  • Delivering BIM models to clients for offline desktop viewing?→ Use 3D/BIM Plugin to extract, then hand the client 3D Model & Data Asst (Windows 10+). They import GLZIP (or open formats like IFC/FBX/STEP), and the app performs the same decimation + redundancy removal, then renders the model in one integrated experience — no separate .opt files needed.
  • Processing open formats (IFC, FBX, STEP, 3DXML) without a native CAD license?→ Skip the Plugin. Feed open formats directly into Opt File Generator for batch decimation + .opt output (for web), or into 3D Model & Data Asst for interactive decimation + desktop viewing.
  • Both web and desktop delivery?→ For web: extract with Plugin (native) or import open formats → Opt File Generator (decimation + .opt output) → Rapid3D Loader. For desktop: import GLZIP or open formats directly into 3D Model & Data Asst (Win 10+) — it performs decimation and renders in one app, no .opt needed.

────────────────────────────────────────────────────────────

Technology Summary

Technique

Core Method

Precision Preservation

Typical Effect

Mesh Decimation

Improved QEM + edge collapse

Curvature-aware + feature edge + topology check

50-85% triangle reduction

Vertex Welding

Spatial hash + epsilon matching

Attribute consistency check

43-50% vertex reduction

Degenerate Removal

Zero-area / collinearity detection

Removes only invalid geometry

2-5% triangle reduction

Resource Cleanup

Reference count scanning

Removes only zero-reference resources

5-10% memory reduction

────────────────────────────────────────────────────────────

Conclusion: Why Precision Matters

Mesh decimation and redundant data removal are the load-bearing pillars of BIM model lightweighting. The difference between a toy 3D viewer and a production-grade BIM application is not whether decimation is performed — it is whether that decimation preserves engineering precision. A general-purpose mesh simplifier can reduce triangle count in a weekend. It takes years of dedicated engineering to preserve feature edges, maintain topology validity, protect UV seams, honor symmetry, and ensure that every component's dimensional accuracy survives the process intact.

3D Expert's approach — improved QEM with curvature-aware adaptation, multi-criteria feature edge protection, five-rule topology validation, and dual-pass redundancy cleanup — achieves 70-85% data reduction while maintaining the geometric fidelity that AEC professionals demand. And because these techniques are embedded in both Opt File Generator and 3D Model & Data Asst, you get the same precision whether your users are viewing models in a browser via Rapid3D Loader or on a desktop workstation via 3D Model & Data Asst.

────────────────────────────────────────────────────────────

About the Company

3D Expert Co.,Ltd., headquartered in Osaka, Japan, develops high-performance 3D/BIM software for the global AEC industry. Our product portfolio includes:

  • 3D/BIM Plugin — Currently 6 native export add-ins for CAD/BIM platforms, built on official vendor APIs. Performs lossless extraction of geometry, textures, materials, structure trees, and attributes from native formats (.rvt, .dgn, etc.). Output: intermediate GLZIP. Does NOT perform compression, decimation, or lightweighting.
  • Opt File Generator — Desktop lightweighting engine for batch processing. Takes intermediate GLZIP (from Plugin) or open formats (IFC, FBX, STEP, 3DXML, etc.) and applies mesh decimation, redundant data removal, Draco compression, LOD generation, and mesh optimization on the user's local computer. Output: .opt format model + DB. This is the ONLY product that produces .opt files.
  • 3D Model & Data Asst — Native Windows 10+ desktop application. Imports GLZIP (from Plugin) or open formats, performs the same mesh decimation and redundancy removal as Opt File Generator, then immediately renders the model with full property query — all in one integrated app. Does NOT output .opt files.
  • Rapid3D Loader for Three.js — npm package (opt-rapid3d-loader) with embedded WASM Draco decoder, progressive chunk streaming, and full interaction APIs. Directly reads and loads .opt format models (produced by Opt File Generator) into Three.js scenes.

 

Learn more or start a free trial at https://www.opt3ds.com/

Contact: info@3dexpert.jp


© 2010–2026 3D Expert Co.,Ltd. All rights reserved.