IFC is built for exchange and long-lived model meaning; glTF/GLB is built for efficient real-time delivery. Converting between them is best approached as distillation: preserve what a viewer needs (shape, hierarchy, IDs, a curated slice of metadata), and accept that parametric intent, deep semantics, and editing workflows won’t survive intact.
Done well, an IFC→GLB pipeline produces assets that load quickly across web and engines, render consistently, and remain inspectable. Done poorly, it produces “mostly right” geometry with silent coordinate mistakes, brittle metadata bindings, and performance cliffs.
glTF 2.0 specifies a right-handed coordinate system and defines +Y up, +Z forward, and -X right, with meters as the unit for all linear distances. Those constraints are not suggestions — they are what downstream runtimes tend to assume.
“Correctness” in this pipeline usually means:
IFC content varies widely by authoring tool, discipline, and export settings. Even when teams standardize “Revit → IFC → GLB”, the exporter itself evolves. In early 2026, Autodesk’s IFC Exporter for Revit 2026 shipped updates that include changes like adding IFC4.3 Reference View exchange requirements — a reminder that export output can change over time even if authoring habits don’t.
Practical implication: treat the exporter as part of the build.
Most real-time viewers want triangles. IFC often describes shapes as sweeps, CSG, and boundary representations — but the conversion process must ultimately tessellate them.
IfcOpenShell’s IfcConvert is a common baseline tool because it directly converts IFC geometry to multiple output formats including GLB. As of late 2025, IfcOpenShell’s Python package line shows active packaging and releases (e.g., 0.8.4.post1 on PyPI), which matters if your pipeline is CI-driven and reproducibility matters.
Tessellation strategy should be explicit and deterministic:
In narrow, high-throughput scenarios with tricky solids, tailored meshing heuristics can reduce triangle count without visibly degrading silhouettes compared to generic settings — but for many projects, consistent off-the-shelf tessellation is sufficient.
Even perfect triangles can render “wrong” due to coordinate handling.
Float precision is the usual culprit when models are far from the origin. A useful rule of thumb for 32-bit float spacing is:
ulp ≈ |x| · 2^-23
As |x| grows (e.g., large eastings/northings), the smallest representable step grows too, and vertices can jitter or snap in camera motion.
If your IFC includes map alignment via IfcMapConversion, remember what it is: a definition of how to transform between a local engineering coordinate system and a mapped coordinate context — not a full map projection solution by itself.
A pragmatic approach is:
The scene graph is where interoperability meets usability. Too coarse, and picking is useless. Too fine, and you explode draw calls and file size.
Common workable conventions:
For many teams, “minimum viable metadata” looks like: element ID, type/class, name, level/storey, and a small set of category tags. Everything else can be resolved lazily.
IFC appearance data rarely maps cleanly to PBR in a way that survives arbitrary viewers. The most robust strategy is conservative:
Once geometry and IDs are stable, optimize for transport and runtime.
glTF defines widely used compression extensions:
These can dramatically reduce download size, but support varies by tooling and runtime. For example, some workflows report that EXT_meshopt_compression may validate yet still be treated as unsupported or cause conversion issues in specific toolchains. The implication isn’t “don’t use meshopt” — it’s “treat decoder availability as a first-class deployment constraint”.
| Lever | glTF mechanism | Best for | Watch out for |
|---|---|---|---|
| Geometry compression | Draco | Large triangle payloads | Decoder/support requirements |
| Buffer compression | meshopt | General binary payload shrink | Uneven tool support |
| Unit/axis normalization | Core glTF rules | Cross-viewer consistency | Importers with different conventions |
glTF is an asset format; it does not define how to tile or stream very large scenes. For campus-scale, federated, or infrastructure-scale datasets, “one GLB” often becomes too heavy to download, decode, and render as a single unit.
That’s where OGC 3D Tiles is frequently the next step: it defines a hierarchical tiling structure and tile formats for streaming massive 3D geospatial content, including BIM/CAD. OGC 3D Tiles 1.1 (adopted in 2023) also emphasizes richer metadata workflows via new glTF extensions, which aligns well with BIM-style inspection.
| Need | Packaging | Why | Downside |
|---|---|---|---|
| Small/medium model | Single GLB | Simple distribution | No streaming rules in glTF |
| Large federations | 3D Tiles (glTF content) | Stream by tiles/LODs | More pipeline complexity |
| Constrained bandwidth | GLB + compression | Smaller downloads | Decoder/compat constraints |
Pipeline stability comes from measurable QA:
A reliable IFC→GLB pipeline usually succeeds by doing the “boring” things consistently: