spatialverse/UniPhys-Bench
UniPhys-Bench UniPhys-Bench is a human-verified benchmark comprising 1,927 heterogeneous articulated 3D objects across two releases. It jointly evaluates articulation semantics, articulation structure, part-level intrinsic physical properties, and object-level scale and mass. This repository is the primary UniPhys-Bench release. It contains 1,473 articulated 3D objects provided by Manycore Tech (群核科技), with part decompositions created by professional designers. The remaining 454… See the full description on the dataset page: https://huggingface.co/datasets/spatialverse/UniPhys-Bench.
UniPhys-Bench
UniPhys-Bench is a human-verified benchmark comprising 1,927 heterogeneous articulated 3D objects across two releases. It jointly evaluates articulation semantics, articulation structure, part-level intrinsic physical properties, and object-level scale and mass.
This repository is the primary UniPhys-Bench release. It contains 1,473 articulated 3D objects provided by Manycore Tech (群核科技), with part decompositions created by professional designers. The remaining 454 evaluation-only articulated 3D objects are released separately as UniPhys-Bench Part 2, completing the 1,927-object benchmark.
- Primary release (this repository): spatialverse/UniPhys-Bench
- Companion release (Part 2): breezexian/UniPhys-Bench-Part2
- Code: breezexian/UniPhysGen
- Paper: UniPhysGen: Unified Physical Grounding for Simulation-Ready 3D Assets
- Training dataset: breezexian/UniPhys-40K
Dataset summary
Dataset showcase
The following benchmark-level examples visualize 3D assets and selected physical-grounding results across the complete UniPhys-Bench. Each row follows one articulated object from its original textured mesh through part decomposition and affordance grounding to the motion of all articulated parts. In the affordance view, redder parts indicate higher interactivity.
Simulation-based embodied interaction
The following benchmark-level demonstrations illustrate downstream embodied interaction with assets from the complete UniPhys-Bench.
1. Drawer Pulling
2. Faucet Turning
3. Laptop Closing
Release scope
The complete benchmark used in the paper contains 1,927 articulated 3D objects and is hosted as two independent releases:
The two releases use the same annotation schema and evaluation protocol. They are hosted separately so that each repository can state the provenance and terms applicable to the assets it contains. Entity IDs are globally unique across the two releases and should not be renumbered.
The benchmark covers diverse object categories, structural complexities, part granularities, modeling styles, scales, masses, materials, and articulation patterns.
Benchmark construction
The assets in this repository were provided by Manycore Tech, and their part decompositions were created by professional designers. The UniPhys pipeline first produces articulation and physical-property annotations. Human annotators then inspect and correct joint type, axis, pivot, motion range, motion-dependent part groupings, and intrinsic physical-property plausibility for motion-relevant components.
UniPhys-Bench Part 2 provides the complementary source-distribution split used by the complete benchmark. It is distributed separately and is not contained in this repository.
Annotation scope
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. Object dimensions are [L, W, H] in centimeters and mass is in kilograms. Affordance is scored from 1 to 10, with smaller values indicating higher affordance.
Motion labels use B for prismatic translation and C for revolute rotation. The broader part-level annotations additionally use A for contact-only and D for rigid or fixed parts.
Dataset structure
Each benchmark object is stored in one UPB_<id> directory. For example:
UPB_00000454/
├── annotations/
│ ├── object.json
│ ├── part_1.json
│ ├── part_2.json
│ └── ...
├── full_model/
│ ├── model.obj
│ ├── material.mtl
│ └── texture files
├── meta_data.json
├── model.urdf
├── parts/
│ ├── part_1.obj
│ ├── part_2.obj
│ ├── material and texture files
│ └── ...
└── plys/
├── model.ply
├── 1.ply
├── 2.ply
└── ...The same numeric part ID is used by part_<id>.obj, <id>.ply, and part_<id>.json, so geometry and annotations can be joined without an additional mapping file.
Simulation-ready URDF
model.urdf assembles all parts and encodes the annotated joint types and motion parameters. During export, the mesh is rescaled using the annotated object dimensions so that the assembled asset has a real physical size. URDF geometry uses meters, while annotations/object.json stores dimensions in centimeters.
[!IMPORTANT] The released URDF provides the articulated geometry and kinematic assembly, but intrinsic physical properties are not written into the URDF. Density, friction, mass, and other physical values should be read from the JSON annotations and assigned as needed for the target simulator and experiment.
Metadata
meta_data.json stores the dataset origin and released entity summary. A Manycore entity uses metadata of the following form:
{
"id": "UPB_00000454",
"source": [
{
"dataset": "UniPhys-Bench",
"organization": "Manycore Tech Inc.",
"license_ref": "UniPhys-Bench"
}
],
"object": {
"category": "Furniture/StorageFurniture",
"object_name": "Corner Display Cabinet with Drawer"
},
"geometry": {
"asset_type": "decomposed_parts",
"num_parts": 6,
"format": "obj"
},
"annotation": {
"version": "v1.0"
}
}Part-level annotations
Each annotations/part_<id>.json contains the part description, intrinsic physical properties, motion type, joint parameters, and motion dependency:
{
"index": {
"type_name": "default",
"entity": "UPB_00000000",
"label": "3"
},
"part_level": {
"part_name": "Front Seat Trim Bar",
"affordance": 2,
"graspable": false,
"basic_description": "Slim ABS trim piece at the front edge of the seat.",
"functional_description": "Covers a seam and provides a finished edge.",
"movement_description": "Revolute; attached to the seat base.",
"grasp_description": "Grasp the handle of the bar."
},
"basic_info": {
"material": "metal/Steel",
"density": 7.85,
"young": 200.0,
"hardness": 180.0,
"poisson": 0.3,
"friction": 0.45
},
"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
}
}
}
}kinematic_info.motion_info.dependency lists the part IDs that move together. For movable parts, B contains prismatic parameters and C contains revolute parameters; axis, pos, range, and damping describe the corresponding joint. range is the [lower, upper] motion interval; for a revolute (C) joint, both limits are rotation angles expressed in radians.
Object-level annotations
annotations/object.json contains the object identity and global physical properties:
{
"object_name": "Example Object",
"category": "Furniture/StorageFurniture",
"volume": [70.0, 68.0, 110.0],
"mass": 15.5
}volume is [length, width, height] in centimeters and mass is in kilograms. The values above illustrate the schema; released files contain the verified values for each entity.
Download and prepare
Download this primary release:
hf download \
spatialverse/UniPhys-Bench \
--repo-type dataset \
--local-dir data/UniPhys-BenchGenerate model-ready point clouds:
python pre_process/generate_npzs.py \
--data_root data/UniPhys-Bench \
--output_dir data/UniPhys-Bench-processed/npzsGenerate one inference manifest for each evaluation task:
python pre_process/generate_jsons_for_inference.py \
--data_root data/UniPhys-Bench \
--npz_dir data/UniPhys-Bench-processed/npzs \
--output_dir data/UniPhys-Bench-processed/manifestsThe command writes:
manifests/
├── intrinsic_physics_part.json
├── intrinsic_physics_object.json
├── kinematic_parameters.json
└── articulation_structure.jsonEach sample keeps its complete benchmark annotation. UniPhysGen inference embeds that record as source_sample, which the evaluation package reads as ground truth.
To reproduce results on the complete benchmark of 1,927 articulated objects, also download UniPhys-Bench Part 2 and evaluate both releases with the same protocol. Keep the original entity IDs when preparing a combined data root.
Evaluation protocol
The paper reports the following metrics:
Kinematic parameters are evaluated on ground-truth movable parts, separating parameter estimation from movable-part identification. Axis directions a and -a are treated as the same articulation axis. Pivot error is measured in a shared AABB-normalized object frame as point-to-ground-truth-axis distance. Motion ranges are canonicalized to unsigned intervals before computing IoU.
Run the four evaluators on prediction JSON files or directories of per-sample records:
python -m eval intrinsic_physics_part PREDICTIONS \
--output intrinsic_physics_part_metrics.json
python -m eval intrinsic_physics_object PREDICTIONS \
--output intrinsic_physics_object_metrics.json
python -m eval kinematic_parameters PREDICTIONS \
--output kinematic_parameters_metrics.json
python -m eval articulation_structure PREDICTIONS \
--output articulation_structure_metrics.jsonSee the UniPhysGen README for the complete inference workflow and checkpoint commands.
Intended use
UniPhys-Bench is intended for research evaluation of unified physical grounding, including articulation reasoning, physical-property estimation, simulation-ready asset construction, embodied AI, and robotics simulation. It is an evaluation benchmark and should not be mixed into UniPhysGen training or model-selection data.
Scope and usage considerations
- Human annotators verify and correct articulation annotations and assess physical-property plausibility to support consistent research evaluation. Physical values are reference estimates for the depicted objects.
- The benchmark cannot cover every object category, material, mechanism, part granularity, or mesh failure mode.
- Results can depend on geometric completeness, scale correctness, texture quality, and candidate part decomposition.
Licensing and provenance
The complete contents of this release—including assets, annotations, metadata, derived representations, and dataset organization—are licensed under CC BY-NC 4.0. Commercial use is not permitted. See LICENSE_UNIPHYS_BENCH for the release-specific license notice and attribution information.
Use the source field in each entity's meta_data.json to retain the supplied organization and license reference. Retain all required attribution, license, and modification notices when sharing the data.
Citation
@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}
}