DOCS
What you get.
A Perplace world is data first and pixels second. This page describes the model that ships with the interactive demo on the product page: the same records your engine or simulation reads. It is an early-access preview and the contract is versioned.
One world, four scales
Every world is one tree. A city holds buildings, a building holds floors, a floor holds rooms, and a room holds objects. Each level has a stable id and typed fields, so “the armchair in the living room on the ground floor of the corner building” is a path, not a search.
Rooms carry their bounds in metres and their connections to other rooms and to the exterior. Objects carry the primitives that draw them and the semantics that make them usable.
| Level | What it carries |
|---|---|
| City | Blocks, streets, building footprints and the character of the place. |
| Building | Floors, facades, roofs, entrances, per-floor program (offices, homes, retail). |
| Floor | Rooms, circulation, doors and windows, the cut height used by cutaway views. |
| Room | Bounds, connections, the objects inside. |
| Object | Name, parts, uses, material, state, articulation, mobility, collision, access points. |
Geometry: convex primitives
Interiors are described as a flat list of entities. Each entity is one convex primitive with a position, a size and an optional rotation, in metres, Y up. There are four shapes: box, rounded box, cylinder and sphere. Nothing is a merged or planar mesh, so every entity is also a collider.
An entity names its material, its group (architecture or objects) and the room it belongs to. Entities flagged as cut are the ones a cutaway view slices at the cut height.
{
"id": "p339",
"shape": "rounded",
"pos": [6.4, 0.3, 5.8],
"size": [4.6, 0.35, 1.1],
"material": "walnut",
"group": "objects",
"room": "living"
}Materials are named, not baked. The world ships a material table (colour, roughness, texture name) that you map to your own PBR library.
Objects: the semantic record
An object groups primitives and gives them meaning. Names and uses are bilingual. Every field below is a fact an agent can query or a change you can ask for.
| Field | Meaning |
|---|---|
| id · name · article | Stable id and a display name with its article, in English and Spanish. |
| parts | The primitive ids that draw the object. |
| uses | What an agent can do here: sit, lie down, open, look out, pick up, water, prune. |
| material · state | Human-readable material and current state, kept in sync with articulation. |
| agent | Access points: seat positions, seat height, facing direction, approach side, reach height. |
| articulation | How it moves: hinge, slide, grasp or rigid, with axis, pivot, range, named states and the current one. |
| mobility | fixed, movable or graspable, with an approximate mass in kilograms. |
| collision | Convex pieces, whether it blocks an agent, whether it can be walked on. |
| surface | Where things can be put down: height and area of the top. |
| storage | For shelves: bays and rows that hold graspable volumes. |
{
"kind": "hinge",
"parts": ["p273"],
"axis": [0, 1, 0],
"pivot": [0.36, 1.2, 3.41],
"rangeRad": [0, 1.45],
"direction": 1,
"states": {
"closed": { "value": 0 },
"ajar": { "value": 0.22 },
"open": { "value": 1.45 }
},
"current": "open"
}A door’s articulation. The hinge sits on the real jamb, the leaf swings into the room, and its state persists: an agent that closes it leaves it closed.
Delivery formats
The same world is delivered in the representation your project needs.
| Format | What it contains |
|---|---|
| JSON | The structured world: the entity list, the object records and the room tree described on this page. |
| USD | One transform per object with the Perplace attributes (object id, kind, room, uses, parent) alongside the meshes; rooms with their bounds; provenance hash of the source package. Opened in a physics simulator for agents as part of our validation. |
| glTF / GLB | The visual scene for engines and DCC tools. |
| Simulation grids | Walkable and blocked cells derived from the collision pieces, at the resolution you request. |
Opening it in your engine
Blender, Unreal Engine, Unity, Godot, Houdini, Omniverse and three.js all read at least one of the formats above. What you map on your side:
- Materials: named entries to your PBR library.
- Primitives: the four shapes instance well; group by shape and material for batching.
- Articulation: hinges and slides to your joint or constraint system; the pivot and axis are already in world units.
- Collision: each primitive is a convex collider as is. No physics is baked; mass and states travel as data for whoever simulates.
Sample world
The living room from the product page, as shipped: the geometry as convex primitives and the object records described above. Free to download and evaluate, no account needed.
Evaluation license: use it in prototypes and internal tests. Do not redistribute the files as they are. A commercial license comes with early access.
Early access
The model is versioned and will grow as more of the catalogue carries these fields. If you are building agents, a simulation or a game world and want to read this data directly, ask for early access on the product page and tell us what you want to build.