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>.binvox — surface voxelisation (0.76 GB) |
models-binvox-solid/ |
12,491 | <id>.binvox — solid/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 gatedShapeNetSem.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 redundantShapeNetSem-backup/wrapper stripped. So each model is atdatasets/shapenetsem/models-OBJ/models/<id>.obj,…/models-binvox/<id>.binvox, etc. - Our copy:
s3://monad-knowledge/datasets/shapenetsem/. Readdatasets/shapenetsem/_manifest.jsonfirst — it is a per-model index (12,498 entries): each carriescategory,wnsynset,dims_cm,unit,aligned, and the S3keys{}for that model'sobj/mtl/dae/binvox/binvox_solid. Filtermodels[]by facet, then GET only the selected models' keys — never LIST the 122k-object prefix. - Loading (per the
datasetshouse contract — boto3, on demand, notsim_fetch_s3):
For semantics/physics load the flatimport 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 memorymetadata.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 samegis/furnishplacer 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.