HSD
An HSD (hyper-space document) is a 3D scene: the objects in it, their geometry, materials, physics, and scripts. An HSD is stored as a document, and can be placed into any space. A whole environment is an HSD, and so is a single object inside it.
Structure
A scene is a tree of prims — the primitives a 3D environment is built from. Each prim carries properties of two kinds: attributes hold data (a transform, a mesh, a material, physics settings, a script, or a shader graph), and relationships point at other prims, so a surface can take its material from elsewhere in the scene.
An HSD scene is the document: every prim is a key, every property is a key, and the tree is expressed by each prim naming its parent.
Every prim has an identity that outlives editing. Move, rename, reparent, or replace its geometry and it remains the same prim; anything pointing at it keeps pointing at it.
Assets
Heavy content — mesh geometry, textures, compiled scripts — is stored as blobs, each an entry of the document in its own right. Keeping bulk out of the structure lets a scene load first, with its assets following, reusing anything already on disk.
Composition
Scenes are built out of other scenes in two ways.
A prefab is a compiled HSD referenced by a prim and instantiated as a document beneath it. Because a prefab is content-addressed and its prims are given their identities when compiled, everyone who loads it gets the same scene with the same prims, and a prim in one space can point at a specific prim in it.
Anchoring attaches a document’s root to a prim of another document. Anchoring joins a document to a scene without editing either. It is per-peer, so a tool follows the hand that holds it.
Documents are never nested as data. A scene composes others by referring to them, so no arrangement of documents traps one inside another, and no document is rewritten to be used somewhere new.
Collaboration
Because an HSD is a document, it merges by the same rules as any document.
Formats
Two files, mirroring the split USD makes between source and package.
.hsdais what authors write: readable text referring to models, images, and script sources by path..hsdzis what it compiles to: a single self-contained package addressed by the hash of its contents.
A .hsdz is what a prefab points at and what you send to give someone an
object; once loaded, it is a document like any other.