UniPhys-40K is a large-scale dataset for unified physical grounding of heterogeneous 3D assets. It provides articulation semantics and intrinsic physical properties for training models that transform raw meshes into simulation-ready assets.
| Statistic | Value |
|---|---|
| Objects | 40K (40014) |
| Object categories | 84 |
| Total annotated parts | 400K |
| Parts used after training-data filtering | 370K |
| Primary sources | Objaverse-Sketchfab, HSSD, 3D-FUTURE, ABO, and PartNet |
| Annotation scope | Articulation semantics and intrinsic physical properties |
The collection spans household objects, furniture, appliances, containers, tools, and other interactive indoor assets. It has long-tailed distributions across object scale, mass, category, material, part count, and articulation pattern.
UniPhys-40K aggregates assets from complementary repositories:
Every asset is processed by the four-stage UniPhys pipeline:
The verification stage checks physical consistency across geometry, articulation, and estimated material and mass properties.
| Level | Representative annotations |
|---|---|
| Object | identity, category, dimensions [L, W, H] in centimeters, and mass in kilograms |
| Part identity and semantics | part name; basic, functional, movement, and grasp descriptions |
| Part physical properties | material, density, Young's modulus, hardness, Poisson's ratio, friction, graspability, and affordance |
| Articulation kinematics | motion type, axis, pivot, and motion range |
| Articulation structure | motion-coupled part dependency groups |
Part-property units follow the paper: density is in g/cm^3, Young's modulus
in GPa, hardness in HV, and Poisson's ratio and friction are unitless.
Affordance is an integer score from 1 to 10, where a smaller value means higher
affordance.
Motion labels use the following convention:
| Label | Meaning |
|---|---|
A | Contact-only, with no relative motion |
B | Prismatic translation |
C | Revolute rotation |
D | Rigid or fixed, with no motion |
UniPhysGen discovers entities recursively, so a release archive may include source-specific grouping directories above each entity. A typical entity has the following structure:
<entity_id>/
βββ annotations/
β βββ object.json
β βββ part_<id>.json
β βββ ...
βββ full_model/
β βββ model.obj
β βββ material.mtl
β βββ texture files, when available
βββ meta_data.json
βββ parts/
β βββ part_<id>.obj
β βββ material files and textures
β βββ ...
βββ plys/
βββ model.ply
βββ <id>.ply
βββ ...
| Path | Description |
|---|---|
parts/part_<id>.obj | Physically meaningful decomposed part mesh. Associated MTL and texture files are retained when available. |
full_model/model.obj | Complete object mesh produced by concatenating the released part meshes. |
plys/model.ply | Point cloud for the complete object. |
plys/<id>.ply | Point cloud aligned with parts/part_<id>.obj. |
annotations/object.json | Object identity, category, dimensions, mass, and the mass-consistency quality field. |
annotations/part_<id>.json | Part semantics, intrinsic physical properties, kinematics, dependencies, and the part-level quality field. |
meta_data.json | Entity ID, original data source and license reference, object summary, geometry format, part count, and annotation version. |
The numeric ID is shared by part_<id>.obj, <id>.ply, and
part_<id>.json. This alignment lets applications move directly between mesh,
point-cloud, and annotation representations.
meta_data.json records provenance and a compact description of the released
asset:
{
"id": "<entity_id>",
"source": {
"dataset": "<source_dataset>",
"original_id": "<original_asset_id>",
"license_ref": "<source_license_reference>"
},
"object": {
"category": "Furniture/SeatingFurniture",
"object_name": "Executive Office Chair"
},
"geometry": {
"asset_type": "decomposed_parts",
"num_parts": 18,
"format": "obj"
},
"annotation": {
"version": "v1.0"
}
}
annotations/object.json stores dimensions in centimeters, mass in kilograms,
and mass_rate, the object-level mass-consistency result used during training
sample filtering:
{
"object_name": "Executive Office Chair",
"category": "Furniture/SeatingFurniture",
"volume": [70.0, 68.0, 110.0],
"mass": 15.5,
"mass_rate": 1.2
}
mass_rate <= 2 is required by the released generator for object-level
training samples. The same object-level condition is also applied to
part-level physical-semantic training samples.
Each annotations/part_<id>.json is aligned with the mesh and point cloud of
the same numeric ID:
{
"index": {
"type_name": "default",
"entity": "<entity_id>",
"label": "3"
},
"part_level": {
"part_name": "Front Seat Trim Bar",
"affordance": 2,
"graspable": false,
"basic_description": "Slim trim piece at the front edge of the seat.",
"functional_description": "Covers a seam and finishes the seat front.",
"movement_description": "Rotates together with its dependency group.",
"grasp_description": "Can be contacted at the front edge."
},
"basic_info": {
"material": "metal/Steel",
"density": 7.85,
"young": 200.0,
"hardness": 180.0,
"poisson": 0.3,
"friction": 0.45,
"pass_check": true
},
"kinematic_info": {
"motion_types": ["C"],
"motion_info": {
"dependency": [3],
"C": {
"axis": [-1.0, 0.0, 0.0],
"pos": [-0.02277967, 0.38144422, -0.02326505],
"range": [0.0, 0.785],
"damping": 0.03
}
}
}
}
basic_info.pass_check is true only when the part passes the intrinsic
physical-property checks. Part-level physical-semantic training requires both
mass_rate <= 2 and pass_check == true. The kinematic-parameter and
articulation-structure generators instead retain parts with non-empty B or
C motion annotations and do not filter on these two quality fields.
Download the repository with the Hugging Face CLI:
hf download \
breezexian/UniPhys-40K \
--repo-type dataset \
--local-dir data/UniPhys-40K
Generate point clouds consumed by UniPhysGen:
python pre_process/generate_npzs.py \
--data_root data/UniPhys-40K \
--output_dir data/UniPhys-40K-processed/npzs
Each generated .npz stores aligned point, color, and normal arrays.
Object files also store part_names and part_centers for articulation
structure grounding.
Build independent training data for the four UniPhysGen tasks:
python pre_process/generate_jsons_for_training.py \
--data_root data/UniPhys-40K \
--npz_dir data/UniPhys-40K-processed/npzs \
--output_dir data/UniPhys-40K-processed/train
The command creates physics, kinematic_parameters,
articulation_structure, and object_level task directories. See the
UniPhysGen README
for filtering rules and training commands.
UniPhys-40K is intended for research on unified physical grounding, articulation understanding, physical-property estimation, simulation-ready asset construction, embodied AI, and robotics simulation. Use UniPhys-Bench, which is held out and human-verified, for evaluation rather than evaluating on the UniPhys-40K training collection.
See LICENSE for the dataset licensing terms:
Use source.dataset, source.original_id, and source.license_ref in each
asset's meta_data.json to trace the applicable source terms. Retain required
creator credits, license notices, and modification notices when sharing data.
Citing UniPhys-40K does not replace upstream attribution or usage obligations.
@article{li2026uniphysgen,
title = {UniPhysGen: Unified Physical Grounding for Simulation-Ready 3D Assets},
author = {Li, Xian and Wei, Rong and Yang, Lujie and Huang, Haolin and Fang, Junyuan and Tang, Siliang and Xiao, Jun and Tang, Rui and Li, Juncheng},
journal = {arXiv preprint arXiv:2607.13586},
year = {2026}
}
58 commits
UniPhys-40K is a large-scale dataset for unified physical grounding of heterogeneous 3D assets. It provides articulation semantics and intrinsic physical properties for training models that transform raw meshes into simulation-ready assets.
| Statistic | Value |
|---|---|
| Objects | 40K (40014) |
| Object categories | 84 |
| Total annotated parts | 400K |
| Parts used after training-data filtering | 370K |
| Primary sources | Objaverse-Sketchfab, HSSD, 3D-FUTURE, ABO, and PartNet |
| Annotation scope | Articulation semantics and intrinsic physical properties |
The collection spans household objects, furniture, appliances, containers, tools, and other interactive indoor assets. It has long-tailed distributions across object scale, mass, category, material, part count, and articulation pattern.
UniPhys-40K aggregates assets from complementary repositories:
Every asset is processed by the four-stage UniPhys pipeline:
The verification stage checks physical consistency across geometry, articulation, and estimated material and mass properties.
| Level | Representative annotations |
|---|---|
| Object | identity, category, dimensions [L, W, H] in centimeters, and mass in kilograms |
| Part identity and semantics | part name; basic, functional, movement, and grasp descriptions |
| Part physical properties | material, density, Young's modulus, hardness, Poisson's ratio, friction, graspability, and affordance |
| Articulation kinematics | motion type, axis, pivot, and motion range |
| Articulation structure | motion-coupled part dependency groups |
Part-property units follow the paper: density is in g/cm^3, Young's modulus
in GPa, hardness in HV, and Poisson's ratio and friction are unitless.
Affordance is an integer score from 1 to 10, where a smaller value means higher
affordance.
Motion labels use the following convention:
| Label | Meaning |
|---|---|
A | Contact-only, with no relative motion |
B | Prismatic translation |
C | Revolute rotation |
D | Rigid or fixed, with no motion |
UniPhysGen discovers entities recursively, so a release archive may include source-specific grouping directories above each entity. A typical entity has the following structure:
<entity_id>/
βββ annotations/
β βββ object.json
β βββ part_<id>.json
β βββ ...
βββ full_model/
β βββ model.obj
β βββ material.mtl
β βββ texture files, when available
βββ meta_data.json
βββ parts/
β βββ part_<id>.obj
β βββ material files and textures
β βββ ...
βββ plys/
βββ model.ply
βββ <id>.ply
βββ ...
| Path | Description |
|---|---|
parts/part_<id>.obj | Physically meaningful decomposed part mesh. Associated MTL and texture files are retained when available. |
full_model/model.obj | Complete object mesh produced by concatenating the released part meshes. |
plys/model.ply | Point cloud for the complete object. |
plys/<id>.ply | Point cloud aligned with parts/part_<id>.obj. |
annotations/object.json | Object identity, category, dimensions, mass, and the mass-consistency quality field. |
annotations/part_<id>.json | Part semantics, intrinsic physical properties, kinematics, dependencies, and the part-level quality field. |
meta_data.json | Entity ID, original data source and license reference, object summary, geometry format, part count, and annotation version. |
The numeric ID is shared by part_<id>.obj, <id>.ply, and
part_<id>.json. This alignment lets applications move directly between mesh,
point-cloud, and annotation representations.
meta_data.json records provenance and a compact description of the released
asset:
{
"id": "<entity_id>",
"source": {
"dataset": "<source_dataset>",
"original_id": "<original_asset_id>",
"license_ref": "<source_license_reference>"
},
"object": {
"category": "Furniture/SeatingFurniture",
"object_name": "Executive Office Chair"
},
"geometry": {
"asset_type": "decomposed_parts",
"num_parts": 18,
"format": "obj"
},
"annotation": {
"version": "v1.0"
}
}
annotations/object.json stores dimensions in centimeters, mass in kilograms,
and mass_rate, the object-level mass-consistency result used during training
sample filtering:
{
"object_name": "Executive Office Chair",
"category": "Furniture/SeatingFurniture",
"volume": [70.0, 68.0, 110.0],
"mass": 15.5,
"mass_rate": 1.2
}
mass_rate <= 2 is required by the released generator for object-level
training samples. The same object-level condition is also applied to
part-level physical-semantic training samples.
Each annotations/part_<id>.json is aligned with the mesh and point cloud of
the same numeric ID:
{
"index": {
"type_name": "default",
"entity": "<entity_id>",
"label": "3"
},
"part_level": {
"part_name": "Front Seat Trim Bar",
"affordance": 2,
"graspable": false,
"basic_description": "Slim trim piece at the front edge of the seat.",
"functional_description": "Covers a seam and finishes the seat front.",
"movement_description": "Rotates together with its dependency group.",
"grasp_description": "Can be contacted at the front edge."
},
"basic_info": {
"material": "metal/Steel",
"density": 7.85,
"young": 200.0,
"hardness": 180.0,
"poisson": 0.3,
"friction": 0.45,
"pass_check": true
},
"kinematic_info": {
"motion_types": ["C"],
"motion_info": {
"dependency": [3],
"C": {
"axis": [-1.0, 0.0, 0.0],
"pos": [-0.02277967, 0.38144422, -0.02326505],
"range": [0.0, 0.785],
"damping": 0.03
}
}
}
}
basic_info.pass_check is true only when the part passes the intrinsic
physical-property checks. Part-level physical-semantic training requires both
mass_rate <= 2 and pass_check == true. The kinematic-parameter and
articulation-structure generators instead retain parts with non-empty B or
C motion annotations and do not filter on these two quality fields.
Download the repository with the Hugging Face CLI:
hf download \
breezexian/UniPhys-40K \
--repo-type dataset \
--local-dir data/UniPhys-40K
Generate point clouds consumed by UniPhysGen:
python pre_process/generate_npzs.py \
--data_root data/UniPhys-40K \
--output_dir data/UniPhys-40K-processed/npzs
Each generated .npz stores aligned point, color, and normal arrays.
Object files also store part_names and part_centers for articulation
structure grounding.
Build independent training data for the four UniPhysGen tasks:
python pre_process/generate_jsons_for_training.py \
--data_root data/UniPhys-40K \
--npz_dir data/UniPhys-40K-processed/npzs \
--output_dir data/UniPhys-40K-processed/train
The command creates physics, kinematic_parameters,
articulation_structure, and object_level task directories. See the
UniPhysGen README
for filtering rules and training commands.
UniPhys-40K is intended for research on unified physical grounding, articulation understanding, physical-property estimation, simulation-ready asset construction, embodied AI, and robotics simulation. Use UniPhys-Bench, which is held out and human-verified, for evaluation rather than evaluating on the UniPhys-40K training collection.
See LICENSE for the dataset licensing terms:
Use source.dataset, source.original_id, and source.license_ref in each
asset's meta_data.json to trace the applicable source terms. Retain required
creator credits, license notices, and modification notices when sharing data.
Citing UniPhys-40K does not replace upstream attribution or usage obligations.
@article{li2026uniphysgen,
title = {UniPhysGen: Unified Physical Grounding for Simulation-Ready 3D Assets},
author = {Li, Xian and Wei, Rong and Yang, Lujie and Huang, Haolin and Fang, Junyuan and Tang, Siliang and Xiao, Jun and Tang, Rui and Li, Juncheng},
journal = {arXiv preprint arXiv:2607.13586},
year = {2026}
}
58 commits