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.

DistrictBlocks, streets, building footprints and the character of the place.
BuildingFloors, facades, roofs, entrances and the programme per floor (offices, homes, retail).
FloorRooms, circulation, doors and windows, and the cut height used by cutaway views.
RoomBounds in metres, connections to other rooms and to the exterior, and the objects inside.
ObjectName, 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 · nameA stable id and a display name, with its article, in English and Spanish.
partsThe primitive ids that draw the object.
usesWhat an agent can do here: sit, lie down, open, look out, pick up, water, prune.
material · stateHuman-readable material and current state, kept in sync with the articulation.
agentAccess points: seat position, seat height, facing direction, approach side, reach height.
articulationHow it moves — hinge, slide, grasp or rigid — with axis, pivot, range, named states and the current one.
mobilityfixed, movable or graspable, with an approximate mass in kilograms.
collisionConvex pieces, whether it blocks an agent and whether it can be walked on.
surfaceWhere things can be put down: height and area of the top.
storageFor 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"
}

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 / GLBThe scene, ready for any engine or viewer.
USDScene exchange with materials named and grouped.
JSONThe full world model: the tree, the entities and the object records.
Simulation gridsWalkable 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.

Preview
Early access

Get early access

Describe what you want to build. Access opens in small batches and every request gets an answer.

Your email is only used to reply about early access. See the privacy policy.