OpenUSD + Gaussian splats (ParticleField) and HLOD
OpenUSD v26.03 added a UsdVol schema for 3D Gaussian splatting: ParticleField3DGaussianSplat.
OpenUSD + Gaussian splats (ParticleField) and HLOD
USD now models 3D Gaussian splats natively
OpenUSD v26.03 added a UsdVol schema for 3D Gaussian splatting: ParticleField3DGaussianSplat.
- Release note: https://aousd.org/blog/openusd-v26-03/
- Schema: https://openusd.org/release/user_guides/schemas/usdVol/ParticleField3DGaussianSplat.html
It is a ParticleField-family prim carrying per-splat attributes (positions, covariance/scale +
orientation, opacity, SH/colour) — the USD-native equivalent of KHR_gaussian_splatting. This makes
USD a viable leaf-tile content format for splats alongside glTF/SPZ.
Is there a 3D-Tiles-equivalent HLOD hierarchy for USD?
Short answer: not a single standard one yet — USD has the pieces, but no widely-adopted streaming HLOD spec that plays the role 3D Tiles does. The relevant building blocks:
- Payloads +
UsdGeomModelAPI/ draw modes — USD can defer-load subtrees viapayloadarcs and show coarse draw-mode proxies (bounds/cards/textured-cards) for unloaded models. This is LOD-ish (proxy vs render purpose,purpose = proxy/render) but it's discrete model swapping, not a screen-space-error-driven streaming tree with per-tile geometric error. - Variants /
LODvariant sets — a common convention is avariantSet = "LOD"withhigh/med/lowvariants, selected by the app. Again app-driven, not SSE-driven. - No bounding-volume-hierarchy + geometricError + refine (REPLACE/ADD) equivalent is standardised the way 3D Tiles defines it. There's no USD-native "subtree availability bitstream" / implicit tiling.
So a faithful analogue of "leaf tiles are USD (with ParticleField3DGaussianSplat), hierarchy encodes
SSE-based HLOD" would today be built one of two ways:
- 3D Tiles as the hierarchy, USD as content — keep
tileset.json(boxes, geometricError, refine) and make each tile'scontent.uria.usd/.usdzwith aParticleFieldprim. 3D Tiles 1.1 allows arbitrary content via3DTILES_content_gltf-style declarations, but no renderer reads USD tile content today, so this is forward-looking. - Pure USD — a root stage that
payloads child stages per spatial cell, with draw-mode proxies as the "coarse" representation. Works in usdview/Omniverse but lacks standardised geometric-error streaming; refinement is proximity/variant driven, not pixel-error driven.
Practical takeaway for this repo: USD ParticleField3DGaussianSplat is a natural export target for
leaf splat content (sibling to our SPZ glb tiles), but the streaming HLOD tree stays 3D Tiles
until a USD streaming-LOD standard matures. Watch the AOUSD working groups and Omniverse's spatial /
"Nucleus"-side streaming for movement here.
Apple Maps splats (2026)
Apple Maps' photorealistic "splat" content (introduced early 2026) is almost certainly a custom HLOD tree
of Gaussian splats — they would not stream city-scale splats without a spatial level-of-detail
hierarchy (the same problem 3D Tiles / our RAD path solve). Given Apple's USD investment, a plausible
shape is leaf nodes carrying ParticleField3DGaussianSplat (or an internal equivalent) under a
proprietary spatial/SSE hierarchy — i.e. exactly the "USD leaf content + custom HLOD tree" pattern
described above, since no open USD streaming-LOD standard exists yet. This is inference from the public
behaviour, not a documented Apple format; treat as an educated guess.