extras, or a sidecar index — before you start merging meshes.
BIM authoring tools excel at meaning: parametric geometry, relationships, classifications, and property sets. Real-time viewers (web, mobile, AR) excel at playback: fast loading, predictable shading, and stable performance. When teams export a BIM model to glTF/GLB, they’re effectively “compiling” an authoring-rich model into a runtime asset.
That framing matches the intent of glTF itself. The Khronos specification describes glTF as an API-neutral runtime asset delivery format, designed for efficient transmission and loading. As of 2026, the current glTF major version remains 2.0, with patch updates (e.g., 2.0.1) providing clarifications and backward-compatible fixes. Khronos also notes that glTF 2.0 became an ISO/IEC standard (ISO/IEC 12113:2022), underscoring its role as a broadly adopted delivery format.
The practical question for BIM teams isn’t “can we export to GLB?” — it’s: what do we keep, what do we drop, and how do we make the result reliable across viewers?
GLB shines when your success metric is time-to-view and portability: quick stakeholder walkthroughs, lightweight design review, marketing previews, or AR “place it on site” demos. Google’s documentation positions <model-viewer> as a straightforward path for web viewing, with AR handoff options on supported devices; it explicitly supports gltf/glb models.
GLB is a weaker fit when the workflow depends on BIM’s deeper semantics: rule checking, compliance/audit trails, model view definitions, or robust relationship queries. In those cases, IFC remains the backbone of open exchange, and buildingSMART’s IFC 4.3.2.0 documentation is published as the version sent to ISO with matching content. A useful mental model: IFC is for exchange and data integrity; GLB is for distribution and experience.
There isn’t one “best” pipeline — there are three common routes, each optimizing a different priority.
| Route | Strengths | Typical gaps |
|---|---|---|
| Revit → GLB (exporter) | Fast turnaround; matches a curated view | Metadata conventions vary; tool/version lock-in |
| IFC → GLB (conversion) | Repeatable and automatable; open interchange | Appearance may need remapping; geometry can bloat |
| IFC → DCC → GLB | Maximum cleanup control (LOD/material polish) | More steps; harder governance and repeatability |
For an open, repeatable approach, IfcConvert (IfcOpenShell) is a widely used command-line option; its documentation lists GLB among its supported output formats. This matters operationally: CLI pipelines can be automated, versioned, and tested like any other build step — especially valuable when “publish to web/AR” becomes routine rather than exceptional.
Most BIM geometry is not authored as triangles; it’s authored as solids, sweeps, and procedural descriptions. Exporting to GLB involves tessellation (turning curved and analytic surfaces into meshes). The danger is not tessellation itself — it’s uncontrolled tessellation.
A quick intuition:
GPU vertex memory ≈ V × (position + normal + UV + extras)
When V (vertex count) explodes, you pay three times: download size, runtime memory, and draw/processing cost (especially painful on mobile).
Two recurring pitfalls show up in real pipelines:
Our rule of thumb: define use-case LOD early (review vs AR vs marketing), then bake that into export settings and model scoping (views, filters, element suppression) so optimization is deliberate, not reactive.
If your web/AR experience is purely visual, you can treat the model as a single drawable object. But if you need selection, filtering, or “click to see properties,” you need an identity strategy.
In IFC-based workflows, teams often treat GlobalId as the stable key. The tricky part is that performance optimizations — mesh merging, batching, LODs — can easily break a clean one-element-to-one-mesh mapping unless the pipeline is designed to preserve linkage (e.g., via node naming conventions, extras, or a sidecar index). This is a common pain point in real IFC→GLB usage: people convert the whole model, then struggle to retrieve the mesh corresponding to a specific GlobalId in the resulting glTF scene.
So: decide the interaction contract up front. Are you selecting elements, systems, or just levels/zones? The right granularity drives how you structure the glTF scene graph and what metadata must survive optimization.
glTF 2.0 standardized a PBR-based material model, with the goal of consistent, portable appearance across runtimes. BIM materials rarely map 1:1 to that model, so “preserve materials” usually means “preserve intent”: base color, transparency, and broad roughness/metalness defaults.
Where design options matter, glTF supports material variants via extensions, but AR handoff paths may not behave uniformly. For example, maintainers have noted that Scene Viewer doesn’t support in-AR variant switching in the same way that WebXR can. This is one of those places where setting expectations early prevents frustration later.
glTF’s performance story is largely extension-driven:
Viewer support varies. three.js’ GLTFLoader documents supported extensions, and teams often need to explicitly enable decoders (Draco, KTX2, meshopt) depending on the chosen compression strategy.
| Lever | Typical win | Risk | When to use |
|---|---|---|---|
| Mesh simplification | Smaller + faster | Visible artifacts | Mobile/AR, early review |
| Instancing | Fewer draw calls | Hard to detect automatically | Repetitive families/panels |
| KTX2 textures | Smaller textures | Toolchain variance | Web delivery at scale |
| Draco / meshopt | Smaller geometry/buffers | Decode/support trade-offs | Large static scenes |
In narrow, high-throughput scenarios — very large models with heavy repetition — tailored instancing/batching logic can reduce overhead compared to generic exporters. But for many projects, off-the-shelf conversion plus a disciplined “scope + compression + QA” routine is sufficient.
On the web, operational simplicity often wins. <model-viewer> deliberately supports only glTF/GLB, which encourages teams to standardize on GLB for deployment and caching. For AR handoff, Google’s Scene Viewer workflow includes a validation step that expects a glb or glTF (plus associated assets if needed).
This leads to a pragmatic recommendation: treat GLB like an artifact you build, not a file you export once. Put it behind a repeatable pipeline, with validation gates and known targets (web viewer + AR path).
Two lightweight steps catch a surprising number of issues:
A “minimum viable GLB” checklist (as of 2026):
<model-viewer> + Scene Viewer validation inputs developers.google.com/ar/develop/webxr/model-viewer