WRIGHT topology examples
Identity flow
WRIGHT knows where places are. QWAY knows what they contain. RIDLEY knows what happens there. Room/portal UUIDs belong to WRIGHT; instance UUIDs belong to QWAY. RIDLEY binds these existing identities and cannot create substitute actors or move architectural frames as a side effect of a shot.
In the following example, three desks stand in for generic contents so the fixture uses redistributable generated geometry. They are not claims that furniture is a human. Replace the assets through QWAY while retaining intended instance identity and updating appropriate actor profiles.
Complete three-room topology
{
"version": "wright.world/1",
"identity": "00000020-1111-4111-8111-111111111111",
"levels": [],
"rooms": [
{
"identity": "00000021-1111-4111-8111-111111111111",
"alias": "workshop",
"label": "Workshop",
"parent": null,
"level": null,
"size": [
6,
3,
5
],
"frame": {
"position": [
0,
0,
0
],
"quaternion": [
0,
0,
0,
1
]
}
},
{
"identity": "00000022-1111-4111-8111-111111111111",
"alias": "office",
"label": "Office",
"parent": null,
"level": null,
"size": [
6,
3,
5
],
"frame": {
"position": [
6,
0,
0
],
"quaternion": [
0,
0,
0,
1
]
}
},
{
"identity": "00000023-1111-4111-8111-111111111111",
"alias": "library",
"label": "Library",
"parent": null,
"level": null,
"size": [
6,
3,
5
],
"frame": {
"position": [
12,
0,
0
],
"quaternion": [
0,
0,
0,
1
]
}
}
],
"portals": [
{
"identity": "00000025-1111-4111-8111-111111111111",
"alias": "workshop_office",
"from": "00000021-1111-4111-8111-111111111111",
"to": "00000022-1111-4111-8111-111111111111",
"width": 1.2,
"height": 2.2,
"traversable": true,
"door": null,
"frame": {
"position": [
3,
0,
0
],
"quaternion": [
0,
0.7071067811865476,
0,
0.7071067811865476
]
}
},
{
"identity": "00000026-1111-4111-8111-111111111111",
"alias": "office_library",
"from": "00000022-1111-4111-8111-111111111111",
"to": "00000023-1111-4111-8111-111111111111",
"width": 1.2,
"height": 2.2,
"traversable": true,
"door": null,
"frame": {
"position": [
3,
0,
0
],
"quaternion": [
0,
0.7071067811865476,
0,
0.7071067811865476
]
}
}
],
"membership": {
"00000002-1111-4111-8111-111111111111": "00000021-1111-4111-8111-111111111111",
"00000005-1111-4111-8111-111111111111": "00000022-1111-4111-8111-111111111111",
"00000007-1111-4111-8111-111111111111": "00000023-1111-4111-8111-111111111111"
}
}Each portal frame is relative to its from-room; local X is aperture width, Y height and Z normal. Room dimensions are [width,height,depth]. A null door means no visual door binding, not a generated doorway mesh. Download the topology and the complete compiler input.
Matching QWAY source
\scene[name=study,id="00000001-1111-4111-8111-111111111111",seed=12]{
\object[name=desk,id="00000002-1111-4111-8111-111111111111",asset="00000003-1111-4111-8111-111111111111",manifest="00000004-1111-4111-8111-111111111111"];
\object[name=table,id="00000005-1111-4111-8111-111111111111",asset="00000003-1111-4111-8111-111111111111",manifest="00000004-1111-4111-8111-111111111111"];
\object[name=shelf,id="00000007-1111-4111-8111-111111111111",asset="00000003-1111-4111-8111-111111111111",manifest="00000004-1111-4111-8111-111111111111"];
}Object UUIDs in membership exactly match these declarations. No alternate transform registry is introduced. The compiler validates duplicate membership, parent cycles and endpoint references before resolving world frames.
Minimal, intermediate and invalid variants
Minimal has one room and no portals; intermediate has two connected rooms. Both are compiled by documentation tests with only their member objects. The full three-room example is compiled independently and can be exported.
The complete invalid compiler input assigns an object to a room UUID absent from the topology. Compilation produces WRIGHT_INVALID_MEMBERSHIP and no scene; this failure is asserted in documentation tests. Replace the membership target with an existing room UUID to repair it.
An unknown membership room UUID, repeated room identity or parent cycle is invalid. A portal across nonadjacent boundaries is not rescued by drawing an opening icon. Structural failure prevents acceptance; geometry that cannot be proven produces an explicit diagnostic. Edit frame/endpoint intent, not evaluator tolerances.