mifanfan/MesaTask-CTRC-100-target
Tabletop Scene Restoration Dataset - Target Layouts This dataset holds the target state of a scene restoration task: each scene should be restored to the arrangement given here. source.scene on each object identifies its scene and can be used to pair with other data from the same batch. Scenes: 100 Scene types: bathroom_vanity 22, coffee_table 9, dining_table 11, dressing_table 24, kitchen_counter 10, office_table 24 Objects moved per scene: 1-3 Directory layout… See the full description on the dataset page: https://huggingface.co/datasets/mifanfan/MesaTask-CTRC-100-target.
Tabletop Scene Restoration Dataset - Target Layouts
This dataset holds the target state of a scene restoration task: each scene should be restored to the arrangement given here.
source.scene on each object identifies its scene and can be used to pair with other data from the same batch.
- Scenes: 100
- Scene types: bathroomvanity 22, coffeetable 9, diningtable 11, dressingtable 24, kitchencounter 10, officetable 24
- Objects moved per scene: 1-3
Directory layout
scenes/<scene_type>/<level>/<scene_name>/
├── layout.json scene layout of this dataset
├── render.png render of this layout
└── meta.json list of moved objects and validation record
assets/ all GLB models referenced by this dataset
manifest.json dataset listing and statisticsThe dataset is self-contained: every referenced model lives under assets/, there are no absolute paths, and no external asset library is required.
Layout JSON format
{
"scene_settings": {
"units": "centimeters",
"up_axis": "Z",
"rotation_convention": "absolute_quaternion_xyzw",
"scene_offset": [x, y, z] // meters, see below
},
"item_placement_zone": [xmin, xmax, ymin, ymax], // centimeters, table extent
"objects": [
{
"instance": "3_bowl_0",
"position": [x, y, z], // cm, model origin, not bbox center
"size": [sx, sy, sz], // cm, (x, y) horizontal extents, z height
"rotation": [x, y, z, w], // absolute quaternion
"resolved_glb": "<uid>.glb", // model file to load from assets/
"selected_uid": "<uid>"
}
]
}Notes:
positionis the model origin (not the bounding-box center), in centimeterssizeis the object's target extent; the model is already scaled to match it.(x, y)are the horizontal extents andzis the height. A model's own local up-axis may not align withz, so orient it usingsizeas the referencerotationis the complete absolute orientation as a quaternion in[x, y, z, w]order. Apply it directly, per object, and do not compose any additional rotation on top- When an object rests flat on the table,
position[2]is approximatelysize[2] / 2
What is scene_offset?
Each object's position is given in the scene's own local frame, whose origin is one corner of the table (the lower-left corner of item_placement_zone), in centimeters. Using that frame as-is would stack every scene's table in the same place.
scene_settings.scene_offset (in meters) is the translation that moves these local coordinates into a shared world frame:
world_x = position_cm[0] * 0.01 + scene_offset[0]
world_y = position_cm[1] * 0.01 + scene_offset[1]
world_z = position_cm[2] * 0.01 + scene_offset[2]In this dataset the effect is: the table is centered on the origin along x, and its near long edge sits at `y = 0.10 m`, i.e. the table occupies x in [-W/2, +W/2] and y in [0.10, 0.10 + D], where W and D are the table's horizontal and depth span in item_placement_zone. The z component is always 0.
Notes:
- It is only a suggested placement. You may ignore it and lay each scene out in its own local frame instead; the relative arrangement of objects inside a scene is unaffected
scene_offsetis a pure translation - no rotation, no scaling- For an object resting flat on the table,
world_zis its height above the table, and the tabletop corresponds toworld_z = 0
Renders
Renders use the native layout coordinate frame. They are meant only for visually checking scene contents and object placement.
