Meta XR Simulator Room JSON Syntax
Updated: Sep 3, 2026
Meta XR Simulator has two built-in rooms in JSON format. The JSON files for these rooms are located in the config/anchors directory, in your Meta XR Simulator package.
- Default file:
scene_anchors_empty_room.json - Other file:
scene_anchors_room_with_furnitures.json
You can create a new scene JSON file in two ways.
- Generate a new scene JSON file using
SceneDataRecorder.apk. For more information, see Scene Data Recorder. - Copy one of the existing JSON files and edit it. The rest of this section describes the layout of the document and what to update. You can give your new JSON file any name. Load the file with the bundled JSON Synthetic Environment Server as described in Meta XR Simulator JSON Format Rooms.
The simulator loads two room formats, and the two routes above produce
different ones.
- The bundled rooms in
config/anchors use the anchors and components
layout. This page documents that layout. - Scene Data Recorder writes
scene_recorder_out.json, which starts with
"type": "scene_META". That is a different layout, and the field names below
do not apply to it.
Both load, so either works as a room. If you want to hand-edit using this page,
start from a bundled room rather than from a recording.
Scene JSON positions and dimensions use meters, independent of the application engine's display units. For example, increasing a ceiling position by 1 moves it by one meter.
The layout of the JSON file is separated into two sections, Anchors and Components.
The Anchors section lists the UUID of every anchor in the scene. The Components section lists details on each component belonging to each scene anchor. A component specifies an element of an anchor.
Bounded2DLocatableRoomLayoutSemanticLabelsSpaceContainer
With this file, you can add/edit furniture, or change the layout of the scene.
Add a Desk in the center of the room. In the noted sections, add the following elements to each list. You will notice the same UUID is consistent throughout the file for this new furniture item. This UUID must be unique and a character set in a similar format to the other UUIDs you see in the file.
Add an item to the SemanticLabels list. The label is specified as TABLE.
{
"anchor": "3f2a91c4-7b18-4e52-9a63-c0d5e8f71a24",
"enabled": true,
"labels": [
"TABLE"
]
}
Labels have different images associated with them. The format accepts these
labels:
BEDCEILINGCHAIRCOUCHDOOR_FRAMEFLOORGLOBAL_MESHINNER_WALL_FACEINVISIBLE_WALL_FACELAMPOPENINGOTHEROTHER_ROOM_FACEPLANTSCREENSTORAGETABLEWALL_ARTWALL_FACEWINDOW_FRAME
An entity with an empty labels array carries no semantic label.
Add to the Bounded2D list. This is where you specify the dimensions of the object.
{
"anchor": "3f2a91c4-7b18-4e52-9a63-c0d5e8f71a24",
"enabled": true,
"rect2D": {
"extent": {
"height": 1.149999976158142,
"width": 0.6000000238418579
},
"offset": {
"x": -0.30000001192092896,
"y": -0.5699999928474426
}
}
}
Add to the Locatable list. This is where you specify the orientation and position of the object.
{
"anchor": "3f2a91c4-7b18-4e52-9a63-c0d5e8f71a24",
"enabled": false,
"pose": {
"orientation": {
"w": -0.06019899994134903,
"x": 0.06019800156354904,
"y": 0.7045429944992065,
"z": 0.7045369744300842
},
"position": {
"x": -0.66,
"y": -0.2223919928073883,
"z": 0.4180830121040344
}
}
}
Note: It is enabled false here but set to true automatically during runtime. This requires no action from the user.
The UUID 3f2a91c4-7b18-4e52-9a63-c0d5e8f71a24 created here now needs to be added to two additional sections.
SpaceContainer: spaces list.
"SpaceContainer": [
{
"anchor": "a06dd9cc-b1a1-41be-88b7-d3f6d9060b7b",
"enabled": true,
"spaces": [
"8e35c573-3f10-4e86-8bdd-69494291b45c",
"cb604449-6eb0-43cb-b3a4-9dfc49a35936",
"cb604449-6eb0-43cb-b3a4-9dfc49a35936",
"01a0341a-4d37-4804-9ace-baa126807f6d",
"4f351907-1acc-46b2-87e8-a7acb346879c",
"69f388a6-3f1b-428e-bc59-6151321efd11",
"ded852e9-f81a-4a6a-a8b6-1e2f3b6929cb",
"2e26c462-f4c8-4cf7-b258-a8ae195f75f3",
"aec8e50d-8f63-4769-9518-683a9435b452",
"3f2a91c4-7b18-4e52-9a63-c0d5e8f71a24"
]
}
]
Anchors: list at the top of the file.
"anchors": [
"01a0341a-4d37-4804-9ace-baa126807f6d",
"2e26c462-f4c8-4cf7-b258-a8ae195f75f3",
"4f351907-1acc-46b2-87e8-a7acb346879c",
"69f388a6-3f1b-428e-bc59-6151321efd11",
"8e35c573-3f10-4e86-8bdd-69494291b45c",
"a06dd9cc-b1a1-41be-88b7-d3f6d9060b7b",
"aec8e50d-8f63-4769-9518-683a9435b452",
"cb604449-6eb0-43cb-b3a4-9dfc49a35936",
"ded852e9-f81a-4a6a-a8b6-1e2f3b6929cb",
"3f2a91c4-7b18-4e52-9a63-c0d5e8f71a24"
],
Save and run your project with Meta XR Simulator as before. A new table appears in your scene.
Adding or editing a wall follows the same pattern. Start from an existing wall.
To alter a wall, first identify its UUID. Find the RoomLayout component and read its walls list.
"RoomLayout": [
{
"anchor": "a06dd9cc-b1a1-41be-88b7-d3f6d9060b7b",
"ceiling": "ded852e9-f81a-4a6a-a8b6-1e2f3b6929cb",
"enabled": true,
"floor": "69f388a6-3f1b-428e-bc59-6151321efd11",
"walls": [
"8e35c573-3f10-4e86-8bdd-69494291b45c",
"cb604449-6eb0-43cb-b3a4-9dfc49a35936",
"01a0341a-4d37-4804-9ace-baa126807f6d",
"4f351907-1acc-46b2-87e8-a7acb346879c"
]
}
],
Use the first wall UUID as an example: 8e35c573-3f10-4e86-8bdd-69494291b45c.
Changing the position of the wall
- Find the entry in the
Locatable list whose anchor matches that UUID. - Increase the
pose:position:z by 2.
- Old value for
z: 2.18451189994812 - New value for
z: 4.18451189994812
The wall will now appear like this:
Changing the height of the wall
- Find the entry in the
Bounded2D list whose anchor matches that UUID. - Increase the
rect2D:extent:height by 4.
- Old value for
height: 2.690000057220459 - New value for
height: 6.690000057220459
Increasing the height expands the wall in both directions. To keep the wall aligned with the floor, change its Y position as well, as the next section shows.
To raise the ceiling height, use the default scene JSON file scene_anchors_empty_room.json as an example. Note the original appearance of this room.

- Find the ceiling with the anchor UUID.
- In the JSON file, find the
RoomLayout component and read its ceiling UUID: ded852e9-f81a-4a6a-a8b6-1e2f3b6929cb.
- Find the entry in the
Locatable list whose anchor matches that UUID. - Increase the
pose:position:y value by 3.
- Old value: “y”: 1.5568510293960571
- New value: “y”: 4.5568510293960571
- Increase height of walls to align with ceiling.
- Return to
RoomLayout, and note the UUIDs for the four walls. - In each case, increase its height and its
Y position to match the new location of the ceiling.
- Get the UUID of the first wall from
RoomLayout. The first wall UUID is 8e35c573-3f10-4e86-8bdd-69494291b45c.
- This step is only necessary when using Unity.
- Find the entry in the
Bounded2D list whose anchor matches that UUID. - Increase the
rect2D:extent:height by 3.
- Old value. “height”: 2.690000057220459
- New value. “height”: 5.690000057220459
- Find the entry in the
Locatable list whose anchor matches that UUID. - Increase the
pose:position:y value by 1.5 (half of the height increase).
- Old value. “y”: 0.21243900060653687
- New value. “y”: 1.71243900060653687
- At this stage, your scene should look like this:

- Repeat steps 4-6 for each other wall.
Note the new appearance of the scene with a raised ceiling.