CoolFace
Datasetpublic

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.

sourceHugging Facecc-by-nc-4.0updated 8d agoView on Hugging Face
0likes57downloads
Dataset Card

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 statistics

The 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

jsonc
{
  "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:

  • —position is the model origin (not the bounding-box center), in centimeters
  • —size is the object's target extent; the model is already scaled to match it. (x, y) are the horizontal extents and z is the height. A model's own local up-axis may not align with z, so orient it using size as the reference
  • —rotation is 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 approximately size[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_offset is a pure translation - no rotation, no scaling
  • —For an object resting flat on the table, world_z is its height above the table, and the tabletop corresponds to world_z = 0

Renders

Renders use the native layout coordinate frame. They are meant only for visually checking scene contents and object placement.