What it is

ShapeNetSem (Savva, Chang & Hanrahan, CVPR 2015 workshop; part of the ShapeNet effort — Chang et al., arXiv:1512.03012) is a 12,288-model subset of ShapeNet that is richly annotated with physical and semantic attributes — the "Sem" (semantic) cut. Each model is an individually-scanned/curated single object (a chair, a lamp, a fridge…), not a scene. Unlike bare mesh dumps, every model carries a real-world scale, a semantic upright/front orientation, a WordNet synset, and a manual category drawn from a hierarchical furniture-centric taxonomy.

For MonadCount it is a second furniture catalogue alongside abo — and the one that carries the physics/material layer ABO lacks. The models feed the procedural furniture placer (gis/furnish) as correctly-scaled obstacle boxes for jupedsim and as EM scatterers for the Sionna ray-traced-CSI path, where the bundled per-category material priors map onto relative permittivity.

We mirror the full archive — all mesh/voxel representations — because the whole thing is only ~93 GB and the binvox voxelisations + material priors are exactly the parts our EM-scattering work needs.

Upstream: huggingface.co/datasets/ShapeNet/ShapeNetSem-archive (gated — manual approval; we hold read access). Project: shapenet.org.

Verified specs

Confirmed by parsing the real metadata.csv + the zip's central directory (not the README). The archive unpacks to a flat per-model tree — no nested zips, no models-screenshots despite what DATA.md lists.

Scale. 12,288 models in metadata.csv; 12,498 distinct model ids once geometry-only models (210, no metadata row) are unioned in. 261 distinct primary categories. 93.37 GB / 121,999 files uncompressed.

Representations (one file set per model id):

Dir Files Content
models-OBJ/models/ 24,980 <id>.obj + <id>.mtl — primary mesh (62.8 GB)
models-COLLADA/COLLADA/ 49,050 <id>.dae + <id>/texture*.{jpg,tif} (29.1 GB, redundant geometry)
models-binvox/ 12,489 <id>.binvoxsurface voxelisation (0.76 GB)
models-binvox-solid/ 12,491 <id>.binvoxsolid/filled voxelisation (0.45 GB)
models-textures/textures/ 22,984 shared texture pool (0.30 GB)

metadata.csv — per-model semantics. Coverage of the columns is uneven, and this is the load-bearing caveat:

Field Coverage Notes
aligned.dims 12,288 / 100 % bbox, CENTIMETRES (÷100 → m). Axis X-right/Y-back/Z-up for the aligned subset. DATA.md's "rescaled to meters" is wrong — a chair reads 73×100×78 = 0.73×1.0×0.78 m.
wnsynset / wnlemmas 10,823 / 88 % WordNet linkage (also in categories.synset.csv)
category 9,685 / 79 % primary + extra tags, comma-joined
unit 9,517 / 77 % model-unit → metre scale
up / front 3,700 / 30 % verified semantic orientation; only for these is aligned.dims reliably Z-up
weight, staticFrictionForce, isContainerLike, surfaceVolume, solidVolume, supportSurfaceArea 0 / EMPTY advertised in DATA.md but not populated in this v0 archive

The empty physics columns are reconstructable from the two bundled prior tables:

  • densities.csv — 19 materials with density (g/cm³) + static-friction coefficient (Wood 0.6/0.62, Metal 2.74/0.61, Glass 2.58/0.68, Fabric 1.80/0.30, …).
  • materials.csv — per-category material-composition ratios (e.g. a Bookcase shelf = 66 % Wood / 24 % Metal / 8 % Glass). Category × composition × density × mesh volume → weight; the same composition → an area-weighted relative permittivity for EM.
  • taxonomy.txt — hierarchical furniture ontology (Chair → {AccentChair, OfficeChair, Recliner, …}; Bookcase → {1..7 Shelves}; Bed → {King, Queen, Canopy, …}).
  • categories.synset.csv — category → WordNet synset + gloss.

Category mix is indoor-furniture-dominated. Top categories: Chair (696), Lamp (662), ChestOfDrawers (509), Table (427), Couch (411), Computer (238), TV (231), Bed (219), Cabinet (216), … — 18 of the top 25 are indoor furniture / fixtures the placer consumes directly. Aligned-subset size envelopes come out at real human scale (median chair 0.78 m tall / 0.77 m² footprint; desk 0.68 m; couch 0.98 m).

Figures (regenerable sources beside them): _attachments/figures/shapenetsem/{fig-shapenetsem-categories,-coverage,-size-envelopes,-pipeline}.png.

Acquisition & storage

  • Full archive mirrored (status: acquired). Downloaded the gated ShapeNetSem.zip (11.4 GB LFS blob) with our HF token, unpacked the flat tree, and uploaded uncompressed, per-file to Hetzner S3 preserving the upstream tree with the redundant ShapeNetSem-backup/ wrapper stripped. So each model is at datasets/shapenetsem/models-OBJ/models/<id>.obj, …/models-binvox/<id>.binvox, etc.
  • Our copy: s3://monad-knowledge/datasets/shapenetsem/. Read datasets/shapenetsem/_manifest.json first — it is a per-model index (12,498 entries): each carries category, wnsynset, dims_cm, unit, aligned, and the S3 keys{} for that model's obj/mtl/dae/binvox/binvox_solid. Filter models[] by facet, then GET only the selected models' keys — never LIST the 122k-object prefix.
  • Loading (per the datasets house contract — boto3, on demand, not sim_fetch_s3):
    import json, boto3, os
    s3 = boto3.client("s3", endpoint_url=os.environ["HETZNER_S3_ENDPOINT"],
                      aws_access_key_id=os.environ["HETZNER_S3_ACCESS_KEY"],
                      aws_secret_access_key=os.environ["HETZNER_S3_SECRET_KEY"])
    B = "monad-knowledge"
    man = json.loads(s3.get_object(Bucket=B, Key="datasets/shapenetsem/_manifest.json")["Body"].read())
    chairs = [m for m in man["models"] if m["category"] == "Chair" and m["aligned"]]
    obj = s3.get_object(Bucket=B, Key=chairs[0]["keys"]["obj"])["Body"].read()   # one mesh, in memory
    
    For semantics/physics load the flat metadata.csv + materials.csv × densities.csv.
  • License / redistribution: ShapeNet Terms of Use — non-commercial research / education only; you may share with associates only after they accept the terms. Our S3 bucket is private; do not republish. Cite the ShapeNet tech report (arXiv:1512.03012) + the ShapeNetSem workshop paper.

Why it matters here

  • Physics-annotated furniture catalogue. abo gives high-fidelity meshes but no material/physics; ShapeNetSem adds per-category material composition → {weight, static friction, relative permittivity} plus real metric dimensions. That permittivity layer is the missing input for the Sionna ray-traced-CSI furniture-as-scatterer line (furniture-CSI-observatory) — furniture materials, not just shapes, shape the channel.
  • Drop-in scaled obstacle boxes. aligned.dims (cm) reproduce standard furniture size envelopes, so each model becomes a correctly-scaled jupedsim obstacle / GIS occupiable-or-obstacle cell with no manual measurement — feeding the same gis/furnish placer as structured3d bboxes and abo meshes.
  • binvox voxels = ready scatterer geometry. The surface + solid voxelisations are a direct occupancy grid for coarse EM scattering and for footprint/clearance reasoning without meshing.
  • Semantic retrieval + theming. WordNet synsets + the furniture taxonomy let the theme-aware placer pick category-appropriate models per room type, and give a clean join key to objaverse / hssd / 3d-front object vocabularies.
  • Honest limitation. The precomputed physics columns are empty in this release, so any weight/friction/permittivity we use is derived from the material priors, not measured — worth stating wherever these numbers feed a result.