Japanese
Leave Your Message

High-Performance Draco Compression for BIM:Geometry, Attributes, and Pipeline — The Foundation of Web-Scale BIM

2026-08-09

The Product Ecosystem: Draco in the Compression Lifecycle

Draco compression operates within a strict three-stage pipeline in 3D Expert's ecosystem: extraction, lightweighting, and rendering. It is critical to understand which product performs which role — the 3D/BIM PlUgin extracts data from native formats but does NOT perform compression. Draco compression and all lightweighting operations are handled by Opt File Generator and 3D Model & Data Asst. Here is how the products participate in the compression lifecycle:

  • 3D/BIM Plugin — The extraction stage ONLY. Native export add-ins for 9 CAD/BIM platforms (Revit, Bentley, Tekla, Rhino, Navisworks, Solidworks, Inventor, Siemens Nx, PTC Creo), built on official vendor APIs. The Plugin extracts geometry (as mesh objects), materials, structure tree hierarchy, and attribute data from proprietary formats (.rvt, .dgn, etc.) with zero data loss. Output: an intermediate GLZIP file (uncompressed geometry) plus a DB file (attributes in SQLite). The Plugin does NOT perform Draco compression, mesh simplification, LOD generation, or any lightweighting — its sole job is lossless extraction from native formats.
  • Opt File Generator — The lightweighting engine. It takes intermediate GLZIP files (from 3D/BIM Plugin) or open/standard formats (IFC, FBX, STEP, STL, IGES, RVM, OBJ, etc.) and applies the full lightweighting pipeline: Draco compression with configurable quantization, mesh optimization, LOD generation, and attribute DB packaging. Operators choose from preset profiles like “Web Streaming (aggressive)”, “Engineering Review (balanced)”, or “Archival (conservative)” — each defining specific quantization levels and encoding modes. Optimized for batch processing with audit logging. Output: .Opt files.
  • 3D Model & Data Asst — Serves dual roles: (1) as a lightweighting engine with the same Draco compression capabilities as Opt File Generator (takes intermediate GLZIP or open formats, applies Draco compression, LOD, mesh optimization), and (2) as an offline viewer for final compressed GLZIP files or open/standard formats (IFC, FBX, STEP, STL, IGES, RVM, OBJ, etc.)  with full property query. Because decompression is CPU-bound and runs natively (not in a browser WASM sandbox), desktop performance on very large models can exceed web performance by a significant margin.
  • Rapid3D Loader for Three.js — The web rendering stage. The npm package (opt-rapid3d-loader) embeds a WebAssembly Draco decoder that decompresses final compressed Opt file geometry streams on the fly. Decompression runs in Web Workers, off the main thread, and feeds Three.js Mesh objects directly to the scene graph. The loader supports progressive chunk decompression — it does not need the entire file before rendering begins. The Loader consumes Opt files; 

In short: the Plugin extracts from native formats (no compression). Opt File Generator and 3D Model & Data Asst perform Draco compression and all lightweighting. The Loader decompresses in the browser via WASM. The desktop app can both compress (lightweighting mode) and decompress (viewing mode). Attribute data in the DB file is never Draco-compressed — it stays in SQLite format for millisecond queries.

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

A_professional_isometric_flat__2026-08-08T14-58-47.png

The 16 Capabilities — Mapped to Product

Domain 1: Compression Fundamentals — How Draco Works Under the Hood

Google Draco, open-sourced in 2017, was originally built to compress 3D assets for mobile and web rendering. Its core innovation lies in two complementary algorithms: one for mesh connectivity (topology) and one for vertex positions (geometry). Understanding these is essential to making informed quantization decisions for BIM data. Note: all Draco compression in 3D Expert's pipeline is performed by Opt File Generator and 3D Model & Data Asst — not by the 3D/BIM Plugin, which handles extraction only.

  1. Edgebreaker Connectivity Encoding — Near-Lossless Topology

Draco's default mesh-encoding mode uses the Edgebreaker algorithm, which traverses the triangle mesh and records a sequence of topological operations (C, L, E, R, S commands) that describe how each new triangle attaches to the existing surface. This achieves near-entropy coding of mesh connectivity — the relationship between vertices, edges, and faces is encoded in a fraction of the space required by an explicit index buffer. For BIM models, this means the structural topology (which beams connect to which columns, which pipe segments form a continuous run) is preserved with effectively zero loss. The Edgebreaker sequence is then entropy-coded (range-coded) for additional size reduction.

  • Powered by: Opt File Generator and 3D Model & Data Asst (Edgebreaker encoding during lightweighting) → Rapid3D Loader for Three.js (connectivity reconstruction at runtime)
  1. KD-Tree Position Quantization — Configurable Precision

Vertex positions are the largest data channel in any BIM model. Draco does not store full 32-bit floating-point coordinates. Instead, it builds a KD-tree over the point cloud, recursively splitting along the longest axis, and quantizes each vertex position to a configurable bit depth. At 16-bit quantization, positions are encoded with 65,536 discrete levels per axis — sufficient for engineering-grade precision. At 11-bit (2,048 levels), the file shrinks further but small geometric features may show visible faceting. 3D Expert's lightweighting tools (Opt File Generator and 3D Model & Data Asst) expose this as a per-file setting: “Position Quantization Bits (11–16)”, defaulting to 14 for BIM — a sweet spot where file size drops 8–10x with no perceptible quality loss on typical AEC geometry.

  • Powered by: Opt File Generator and 3D Model & Data Asst (KD-tree quantization configuration) → Rapid3D Loader for Three.js (dequantization in WASM decoder)
  1. Sequential Encoding Mode — For Non-Manifold and Point Clouds

Not all BIM geometry is a clean triangle mesh. Point clouds from laser scans, non-manifold edges from poorly modeled solids, and 2D elements (line strings, annotation) do not fit the Edgebreaker traversal model. Draco's sequential encoding mode handles these cases: it stores vertex data in order with delta coding and prediction schemes, without requiring a traversable topology. 3D Expert's lightweighting engine automatically detects non-manifold geometry and switches to sequential mode per sub-mesh — the operator never needs to manually flag it.

  • Powered by: Opt File Generator and 3D Model & Data Asst (automatic mode selection during lightweighting) → Rapid3D Loader for Three.js (dual-mode decoder)

Domain 2: Attribute and Material Handling

BIM models carry far more than triangle positions. Vertex normals, texture coordinates, vertex colors, and material IDs are all attribute channels that Draco can compress independently. The key is understanding which attributes tolerate aggressive quantization and which do not. All attribute compression is performed during the lightweighting stage by Opt File Generator and 3D Model & Data Asst.

  1. Parallelogram Prediction for Vertex Normals

Vertex normals determine how light interacts with surfaces — they are critical for visual realism. Draco applies a parallelogram prediction scheme: for each new vertex, the decoder predicts its normal based on the normals of neighboring vertices in the same face, then stores only the prediction residual. This is far more efficient than storing absolute normal vectors. The residual is then quantized to a configurable bit depth (8–12 bit). At 10-bit quantization (default for BIM), lighting quality is visually indistinguishable from uncompressed normals, while the normal channel shrinks by approximately 5x. This is why Draco-compressed BIM models retain their physical material appearance — the lighting fidelity that makes steel look like steel and concrete look like concrete is preserved.

  • Powered by: Opt File Generator and 3D Model & Data Asst (normal prediction and quantization during lightweighting) → Rapid3D Loader for Three.js (normal reconstruction)
  1. Multi-Attribute Quantization Profiles

Different attribute channels have different tolerance thresholds for quantization. Position coordinates need 14–16 bits for engineering precision. Vertex normals tolerate 10 bits. Texture coordinates (UVs) can drop to 12 bits without visible texture shimmering. Vertex colors are fine at 8 bits per channel. Opt File Generator and 3D Model & Data Asst expose all of these as independent parameters, with the File Generator bundling them into named profiles: “Web Streaming” (position 13, normal 8, UV 10, color 8), “Engineering Review” (position 15, normal 10, UV 12, color 8), and “Archival” (position 16, normal 12, UV 14, color 8). This per-channel granularity is what allows the same source model to serve a lightweight web preview and a full-fidelity engineering review from the same pipeline.

  • Powered by: Opt File Generator (preset profiles with per-attribute quantization) and 3D Model & Data Asst (interactive quantization configuration)
  1. Geometry-Attribute Separation — The DB File Stays Uncompressed

This is perhaps the most important architectural decision in 3D Expert's Draco integration. Geometry (vertices, faces, normals, UVs, colors) is Draco-compressed inside the GLZIP file during the lightweighting stage. But professional attribute data — component IDs, hierarchy relationships, material grades, installation dates, custom properties — is written to a separate DB file in standard SQLite format. This DB file is never Draco-compressed. The reason is simple: Draco is a geometry codec, not a database engine. Attribute queries must return in milliseconds, with random access to any record. SQLite provides indexed B-tree lookups; Draco provides sequential stream decompression. By keeping them separate, 3D Expert ensures that clicking a component in the browser triggers a direct DB query — no geometry decompression required to read property data.

  • Powered by: 3D/BIM Plugin (extraction: geometry + attributes from native formats) → Opt File Generator / 3D Model & Data Asst (geometry → Draco-compressed GLZIP, attributes → uncompressed DB) → Rapid3D Loader for Three.js (geometry decode + DB query) and 3D Model & Data Asst (offline DB query)

Domain 3: Pipeline Integration — glTF, WASM, and Streaming

Draco compression is only useful if it integrates cleanly with web standards and rendering frameworks. 3D Expert's integration touches three critical layers: the file format (glTF extension compliance, produced by the lightweighting tools), the decoder (WebAssembly performance, in the Loader), and the loading strategy (progressive streaming, in the Loader).

  1. KHR_draco_mesh_compression Extension Compliance

GLZIP files use a glTF-compatible container structure, and Draco compression is applied through the standard KHR_draco_mesh_compression extension during the lightweighting stage. This means compressed geometry is stored in dedicated bufferViews with metadata describing the compression settings (quantization bits, encoder method). Any glTF-compliant tool that supports this extension can read the compressed buffers. 3D Expert chose glTF compliance over a fully proprietary container to ensure interoperability — your GLZIP files are not locked into a single vendor's decoder.

  • Powered by: Opt File Generator and 3D Model & Data Asst (glTF-compliant compressed GLZIP output) → Rapid3D Loader for Three.js (extension-aware parser)
  1. Per-Component Compression — Structure Tree Preserved

A naive Draco implementation compresses an entire model as a single mesh blob — flattening the BIM hierarchy into an undifferentiated mass of triangles. 3D Expert's lightweighting engine compresses geometry per component (per element ID), preserving the full structure tree: Reference → Level → Element. Each component becomes an independently addressable compressed chunk within the GLZIP file. This is what enables the Rapid3D Loader to show/hide, color, or isolate individual components at runtime — the component boundaries are intact in the compressed data, not reconstructed after decompression.

  • Powered by: Opt File Generator and 3D Model & Data Asst (per-component Draco compression during lightweighting) → Rapid3D Loader for Three.js (component-level scene graph)
  1. WebAssembly Decoder — Near-Native Decompression Speed

The Rapid3D Loader embeds a WebAssembly build of the Draco decoder (approximately 200 KB, compiled from Google's C++ source). WASM execution speed is typically 1.5–2x slower than native code — a negligible penalty given that decompression runs in Web Workers parallel to rendering. On a modern workstation, the WASM Draco decoder achieves throughput of 20–50 million triangles per second. For context, a 500 MB compressed BIM model containing 5 million triangles decompresses in under 250 milliseconds. The user perceives instantaneous model appearance, not a decompression delay.

  • Powered by: Rapid3D Loader for Three.js (WASM Draco decoder in Web Workers)
  1. Progressive Chunk Streaming — First Paint Before Full Download

The Rapid3D Loader does not wait for the entire GLZIP file to download before rendering begins. Because geometry is compressed per-component (Feature 8) and stored in sequential chunks, the loader can begin decompressing and rendering the first chunk while subsequent chunks are still downloading. This progressive streaming means the user sees a partially rendered model within seconds — structures appear and populate as data arrives. For a 2 GB model on a 50 Mbps connection, first paint occurs in under 5 seconds, with the full model materializing over the next 30–60 seconds. The experience is closer to YouTube buffering than to a traditional file download.

  • Powered by: Rapid3D Loader for Three.js (progressive chunk loader and streaming WASM decoder)

Domain 4: Performance Impact — What the Numbers Look Like

Draco compression delivers measurable, quantifiable benefits across three metrics that matter to every web 3D application: download payload, browser cache efficiency, and runtime VRAM consumption. Here is what the data shows on typical BIM models — compression performed by Opt File Generator / 3D Model & Data Asst, rendering by Rapid3D Loader.

  1. 10:1+ Compression Ratio on Typical BIM Geometry

On a representative test corpus of 50 BIM models (Revit architecture, Bentley civil infrastructure, Navisworks coordination models), Draco compression at the default Engineering Review profile (position 15-bit, normal 10-bit) achieves an average geometry compression ratio of 10.5:1. A 1.2 GB uncompressed geometry payload becomes approximately 114 MB. At the Web Streaming profile (position 13-bit, normal 8-bit), the ratio improves to 15:1–18:1, with the trade-off of slightly visible faceting on curved surfaces. The geometry channel typically accounts for 70–85% of total model size, so even a conservative 10:1 ratio on geometry alone reduces total file size by 7–8x. Texture and material data (handled by separate compression, not Draco) typically accounts for the remaining 15–30%.

  • Powered by: Opt File Generator and 3D Model & Data Asst (Draco compression during lightweighting) → Rapid3D Loader for Three.js (decompressed geometry delivered to Three.js scene)
  1. Browser Cache Efficiency — 10x More Models Per Session

Modern browsers allocate 50–500 MB of disk space per origin for HTTP cache (depending on user settings and available disk). An uncompressed 1.2 GB BIM model cannot fit in cache at all — every page reload re-downloads the full file. At 114 MB (Draco compressed), the same model fits comfortably in cache, and 3–4 different models can coexist. For a digital twin dashboard that loads multiple facility models, this transforms the user experience: returning visitors get instant model loads from cache, and bandwidth costs drop proportionally. On mobile networks or constrained enterprise WANs, the difference between a 1.2 GB download and a 114 MB download is the difference between “usable” and “upgrade your network.”

  • Powered by: Rapid3D Loader for Three.js (cache-aware HTTP loading with Range request support)
  1. VRAM Optimization — On-Demand Decompression Reduces Peak Memory

Without Draco, the full uncompressed geometry must reside in GPU vertex buffers for the duration of the session. A 1.2 GB geometry payload consumes 1.2 GB of VRAM just for vertex data — before textures, before the frame buffer, before the browser's own overhead. On a 4 GB GPU, this leaves almost no headroom. With 3D Expert's progressive streaming approach (Feature 10), only the currently visible chunks are decompressed and uploaded to VRAM. As the camera moves and new chunks are needed, distant chunks are evicted. Peak VRAM usage for geometry typically drops to 15–25% of the uncompressed total, because only a fraction of the model is in the camera's view frustum at any given moment. This is what allows 10 GB class models to run on consumer-grade GPUs without out-of-memory errors.

  • Powered by: Rapid3D Loader for Three.js (frustum-aware chunk eviction and on-demand WASM decompression)

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

Compression Profile Selection Guide

Draco compression is not a binary on/off switch. The settings you choose depend on your delivery target, your geometry characteristics, and your quality requirements. All profiles below are applied in Opt File Generator or 3D Model & Data Asst during the lightweighting stage — not in the 3D/BIM Plugin, which handles extraction only. Here is a practical guide:

  • Web-based digital twin or facility dashboard with moderate visual fidelity?→ Use the Web Streaming profile (position 13-bit, normal 8-bit, UV 10-bit). Expected compression: 15:1–18:1. Acceptable for most infrastructure and plant models where users browse at medium distance and do not measure edge tolerances.
  • Engineering review or construction coordination requiring precise geometry?→ Use the Engineering Review profile (position 15-bit, normal 10-bit, UV 12-bit). Expected compression: 8:1–10:1. Geometric faceting is below the threshold of visual perception for most AEC geometry. Suitable for clash detection visualization and design review.
  • Archival storage or legal record where no geometric deviation is acceptable?→ Use the Archival profile (position 16-bit, normal 12-bit, UV 14-bit). Expected compression: 4:1–6:1. At 16-bit position quantization, maximum deviation is bounded by the model's bounding box divided by 65,536 — typically sub-millimeter for building-scale models.
  • Mixed deliverables (web preview + engineering review from the same source)?→ Lightweight twice with different profiles in Opt File Generator, or use LOD-quantization coupling (Feature 14) to generate a single multi-LOD GLZIP file where each LOD level has its own quantization settings. The Rapid3D Loader streams the appropriate LOD automatically based on camera distance.
  • Models with heavy curved geometry (pipes, vessels, turbine blades)?→ Avoid position quantization below 14-bit. Curved surfaces show faceting artifacts earlier than planar surfaces at the same bit depth. If the model is dominated by curved geometry, use Engineering Review or Archival profile even for web delivery.

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

Conclusion: Compression Is the Foundation, Not the Ceiling

Draco compression is the bedrock of web-scale BIM. Without it, multi-gigabyte engineering models simply cannot reach the browser — the download times, cache limits, and VRAM ceilings of consumer hardware make uncompressed delivery a non-starter. But Draco alone is not enough. A geometry codec that flattens the structure tree, strips attribute data, or requires a cloud round-trip is useless for BIM — it solves the size problem by creating a data problem.

What 3D Expert Co.,Ltd. has built is a Draco integration that respects the full BIM data model. The 3D/BIM Plugin extracts geometry and attributes losslessly from native formats — no compression, no data loss. Opt File Generator and 3D Model & Data Asst then apply Draco compression per-component, preserving hierarchy. Attributes stay in an uncompressed SQLite DB, preserving queryability. 

This is Article 1 of our BIM Model Lightweighting series. In subsequent articles, we will cover structure tree preservation algorithms, attribute database design for web queries, GIS coordinate handling for large-span infrastructure, and the complete LOD streaming architecture. Each article will follow the same pattern: deep technical detail, mapped to the specific product that delivers each capability.

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

About the Company

3D Expert Co.,Ltd., headquartered in Osaka, Japan, develops high-performance 3D/BIM software for the global AEC and industrial manufacturing sectors. Our GLZIP format integrates Google Draco compression with a proprietary attribute database layer, enabling multi-gigabyte BIM models to stream and render in standard web browsers. Our product portfolio follows a three-stage pipeline:

  • 3D/BIM Plugin — Native export add-ins for 8 CAD/BIM platforms (Revit, Bentley, Tekla, Navisworks, Solidworks, Inventor, PDMS,SP3D). Performs lossless extraction of geometry, materials, structure trees, and attributes from native formats to GLZIP. Does NOT perform compression or lightweighting.
  • Opt File Generator — Desktop lightweighting engine. Takes intermediate GLZIP (from Plugin) or open formats (IFC, FBX, STEP, etc.) and applies Draco compression, LOD generation, and mesh optimization with preset profiles and audit logging,produce .Opt files.
  • 3D Model & Data Asst — Native Windows desktop application. Serves as both a lightweighting engine (same Draco compression capabilities as Opt File Generator) and an offline viewer for compressed GLZIP files or open formats (IFC, FBX, STEP, etc.) with full property query.
  • Rapid3D Loader for Three.js — npm package (opt-rapid3d-loader) with embedded WASM Draco decoder, progressive chunk streaming, and full interaction APIs. Loads final compressed .Opt 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.