DOCS · WORLD MODEL
The world model, in one page.
A Perplace world is the visible scene plus structured data about the spaces and the objects inside it. This page describes the model the demo uses. It is an early-access preview and the contract is versioned.
From the district to the object
Every world is one tree. A district 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 through the model, not a search.
| District | Blocks, streets, building footprints and the character of the place. |
|---|---|
| Building | Floors, facades, roofs, entrances and the programme per floor (offices, homes, retail). |
| Floor | Rooms, circulation, doors and windows, and the cut height used by cutaway views. |
| Room | Bounds in metres, connections to other rooms and to the exterior, and the objects inside. |
| Object | Name, parts, uses, material, state, articulation, mobility, collision and access points. |
Geometry: convex primitives
Rooms 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. Each 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": "p512",
"shape": "rounded",
"pos": [3.2, 0.35, 6.1],
"size": [5.1, 0.4, 1.4],
"material": "oak",
"group": "objects",
"room": "study"
}
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.
| id · name | A 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 the articulation. |
| agent | Access points: seat position, 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 and whether it can be walked on. |
| surface | Where things can be put down: height and area of the top. |
| storage | For shelves: the bays and rows that hold graspable volumes. |
{
"kind": "slide",
"parts": ["p488"],
"axis": [1, 0, 0],
"pivot": [0, 1.05, -0.42],
"range": [-0.9, 0],
"states": { "closed": { "value": 0 }, "half": { "value": -0.45 }, "open": { "value": -0.9 } },
"current": "open"
}
Navigation contract
The agent in the demo walks, sits, lies down, opens and closes, picks up and puts down — all from the data above, with no hand-placed waypoints. These are the guarantees your own agents can rely on:
- Every usable object has an access point outside its footprint: in front of the seat for a chair or a sofa, on the declared approach side for everything else.
- Seats are entered and left through their access point. Those two steps are the only ones that touch the furniture footprint.
- Footprints are never ignored when planning a route.
- If there is no free path, the agent stays where it is and reports it instead of crossing anything.
Delivery formats
A pilot delivers the scene and the model together.
| glTF / GLB | The scene, ready for any engine or viewer. |
|---|---|
| USD | Scene exchange with materials named and grouped. |
| JSON | The full world model: the tree, the entities and the object records. |
| Simulation grids | Walkable areas, door widths and object footprints as grids. |
Opening it in your engine
Anything that reads glTF or USD opens the scene: Blender, Unreal Engine, Unity, Godot, Houdini, Omniverse, three.js. Materials are named rather than baked, so you map them onto your own library. Your own code reads the JSON model directly.
Sample world
The interactive demo on this site ships a small sample world: one building, three floors, a handful of rooms, a door you can open and objects you can query. Open the room viewer, click an object and read its record.
Early access
The model is in private beta. Send a request with the place you want to build and the pipeline you use, and we come back with scope and a delivery format.