Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

  • .hsda is what authors write: readable text referring to models, images, and script sources by path.
  • .hsdz is 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.