USD describes what a scene looks like and how scenes compose; IFC describes what a building is. IFC 5 brings them together by adopting USD for the geometry and serialisation layer.
Where it comes from
Universal Scene Description was developed by Pixar and open-sourced in 2016. In 2023 it moved under the Alliance for OpenUSD (AOUSD) (Pixar, Adobe, Apple, Autodesk, NVIDIA and others) to drive a vendor-neutral specification. Its strength is not a single geometry kernel but composition: assembling huge scenes from many independently authored, referenceable, override-able layers — exactly the problem a multi-discipline building model has.
The concepts that matter
| Concept | What it is |
|---|---|
| Stage | The composed, final scene a tool actually sees — the result of evaluating all layers. |
| Layer | A single .usd file contributing data. Layers stack and override like non-destructive edits. |
| Prim | "Primitive" — a node in the scene graph (a mesh, an xform, a light, a discipline subtree). |
| Composition arcs | sublayers, references, payloads, variants, inherits — the rules that merge layers into a stage. |
| Payload | A deferred reference: heavy geometry loads only on demand. Essential for site-scale models. |
| Variant set | Switchable options inside one prim (design option, LOD, construction phase). |
The practical consequence: an architecture layer, a structure layer and an MEP layer can each be authored separately and composed into one coordinated stage without flattening — conceptually close to how a federated IFC model is assembled, but with a strong override and variant system.
File formats
| Extension | Format | For |
|---|---|---|
.usda | ASCII text | Human-readable, diffable, good for small layers and review. |
.usdc | Binary "crate" | Compact, fast to load. Default for heavy geometry. |
.usd | Either of the above | Generic extension; container can be ASCII or binary. |
.usdz | Uncompressed ZIP package | Single-file delivery bundling stage + textures. The shareable artefact. |
USD vs IFC — not a competition
| Topic | IFC | USD |
|---|---|---|
| Primary purpose | Building semantics — what objects are and how they relate | Scene composition — geometry, look, assembly at scale |
| Strength | Typed entities, property sets, classification, life-cycle data | Huge scenes, non-destructive layers, variants, real-time visualisation |
| Weakness | Heavy for pure visualisation / DCC pipelines | No native construction semantics (no IfcWall, no Pset, no IDS) |
| Governance | buildingSMART / ISO 16739-1 | Alliance for OpenUSD (AOUSD) |
| Role here | Source of truth for building data | Geometry / serialisation layer, esp. under IFC 5 |
The IFC 5 connection
IFC 5 (in development, alpha — do not specify in tenders) is the key reason USD belongs in a BIM wiki. The IFC 5 direction adopts USD as the geometry and scene-composition substrate while keeping the building semantics as an IFC schema on top, with a JSON-based serialisation. Read it as: USD for the scene, IFC for the meaning. This validates treating USD and IFC as complementary layers rather than rivals — and it means a long-lived CDE should leave room for a USD-backed schema target without abandoning today's IFC 4.3.2.0 foundation.
Tooling (2026, indicative)
| Tool | USD role |
|---|---|
| usdview / usdcat (OpenUSD) | Reference viewer and inspector, ground truth for composition |
| NVIDIA Omniverse | USD-native collaboration and real-time aggregation |
| Blender | USD import/export, growing layer support |
| Autodesk (Revit/3ds Max ecosystem) | USD export paths, AOUSD member |
| Apple Quick Look | .usdz AR preview on iOS/macOS |
Mapping to signed events
BIM-CVP treats a USD deliverable exactly like an IFC deliverable: a signed file container with a metadata event, not a stream of prims. Millions of prims as individual events would be unusable and semantically pointless — USD is already a complete self-contained scene.
kind:1063 NIP-94 File metadata
tags: [
["url", "https://blossom.example/<sha256>"],
["m", "model/vnd.usdz+zip"], # or model/vnd.usd
["x", "<sha256>"],
["size", "<bytes>"],
["schema", "USDZ"], # USD, USDC, USDA
["authoring-tool", "Omniverse"], # Blender, …
["discipline", "coordination"], # architecture, mep, …
["iso19650-state", "Shared"], # WIP / Shared / Published / Archive
["a", "<project-ref>"]
]
content: { stage_name, prim_count, notes }
kind:30904 File reference (parameterised replaceable)
d: <file-guid>
Links the NIP-94 event, adds project-specific fields
(replacement version, stage, paired IFC file-guid)
Where a USD scene is the visualisation twin of an IFC model, the
kind:30904 reference carries the paired IFC file-guid
so the semantic model and its scene stay provably linked by hash and
signature.
Practical pitfalls
- Treating USD as a BIM model. It has no
IfcWall, no property sets, no IDS binding. Use it for geometry/coordination/visualisation, keep IFC as the data source of truth. - Specifying IFC 5 / USD in a tender today. IFC 5 is alpha. Stable exchange stays on IFC 4.3.2.0.
- Broken payloads on transfer. Layers with external references/payloads break if assets are not packaged — deliver
.usdzfor hand-off, keep layered.usdfor authoring. - Unit and up-axis mismatch. USD scenes carry metersPerUnit and upAxis metadata; agree them in the BAP or coordination drifts silently.
Read on
- IFC — the building semantics USD does not carry
- What is BIM & openBIM — how the formats fit together
- Kind mapping — how files become signed events
- Standards profile — what BIM-CVP supports exactly today