vLAR/PhysInOne

Dataset

17

stars

500

commits

1

linked in READMEs

Sep 6, 2026

updated

3d
embodied-ai
fluid-dynamics
future-frame-prediction
magnetism
mechanics
motion-transfer
mpm
multiview
optics
physical-property-estimation
physical-reasoning
simulation
sph
synthetic-data
unreal-engine
video
video-generation
visual-physics
world-model

README

.physinone-card { line-height: 1.4; } .physinone-card p { margin-top: 0.35em; margin-bottom: 0.35em; } .physinone-card ul, .physinone-card ol { margin-top: 0.25em; margin-bottom: 0.45em; padding-left: 1.35em; } .physinone-card li { margin-top: 0.12em; margin-bottom: 0.12em; } .physinone-card li p { margin-top: 0.1em; margin-bottom: 0.1em; } .physinone-card h2 { font-size: 1.9em; line-height: 1.22; margin-top: 1.2em; margin-bottom: 0.5em; } .physinone-card h3 { font-size: 1.35em; margin-top: 0.55em; margin-bottom: 0.18em; line-height: 1.2; } .physinone-card h4 { font-size: 1.12em; margin-top: 0.45em; margin-bottom: 0.12em; line-height: 1.18; margin-left: 0; } .physinone-card h5 { font-size: 1.02em; margin-top: 0.45em; margin-bottom: 0.12em; line-height: 1.16; font-weight: 700; } .physinone-card pre { margin-top: 0.1em; } .physinone-card p + pre { margin-top: 0.05em; } .physinone-card table { margin-top: 0.35em; margin-bottom: 0.55em; } .physinone-card table th, .physinone-card table td { padding-top: 0.28em; padding-bottom: 0.28em; } .physinone-repo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px; margin: 12px 0 8px; } .physinone-repo-card { display: flex; flex-direction: column; min-width: 0; box-sizing: border-box; padding: 9px 10px; overflow: hidden; border: 1px solid rgba(148, 163, 184, 0.28); border-radius: 9px; background: linear-gradient(145deg, rgba(148, 163, 184, 0.07), rgba(148, 163, 184, 0.025)); } .physinone-repo-card-main { grid-column: 1 / -1; background: linear-gradient(135deg, rgba(253, 224, 71, 0.14), rgba(249, 115, 22, 0.055)); border-color: rgba(234, 179, 8, 0.30); } .physinone-repo-card-header, .physinone-repo-card-bottom { display: flex; flex-wrap: wrap; align-items: center; min-width: 0; gap: 5px 7px; } .physinone-repo-card-header { justify-content: space-between; flex-wrap: nowrap; } .physinone-repo-card-header > strong { overflow: hidden; font-size: 13px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .physinone-repo-card-tags { display: inline-flex; flex: 0 0 auto; align-items: center; margin-left: auto; gap: 3px; } .physinone-repo-split, .physinone-repo-status { padding: 1px 4px; font-size: 7.5px; font-weight: 700; line-height: 1.5; text-transform: uppercase; border-radius: 999px; white-space: nowrap; } .physinone-repo-split { color: #1d4ed8; background: rgba(59, 130, 246, 0.10); border: 1px solid rgba(59, 130, 246, 0.18); } .physinone-repo-status { color: #15803d; background: rgba(34, 197, 94, 0.11); border: 1px solid rgba(34, 197, 94, 0.18); } .physinone-repo-card-main .physinone-repo-status { color: #a16207; background: rgba(234, 179, 8, 0.12); border-color: rgba(234, 179, 8, 0.22); } .physinone-repo-card-bottom { margin-top: 6px; } .physinone-repo-size { flex: 0 0 auto; color: #d32f2f; font-size: 12px; line-height: 18px; white-space: nowrap; } .physinone-repo-downloads { display: flex; flex-wrap: wrap; align-items: center; min-width: 0; margin-left: auto; gap: 4px; } .physinone-repo-downloads a { display: inline-flex; max-width: 100%; } .physinone-repo-downloads img { display: block; max-width: 100%; height: 18px; } .physinone-repo-link { display: inline-flex; flex: 0 0 auto; align-items: center; margin-left: 0; padding: 1px 4px; font-size: 8.5px; font-weight: 700; line-height: 1.35; text-decoration: none; white-space: nowrap; background: rgba(59, 130, 246, 0.08); border: 1px solid rgba(59, 130, 246, 0.15); border-radius: 6px; } @media (max-width: 900px) { .physinone-card { display: block !important; } .physinone-card aside { width: auto !important; min-width: 0 !important; max-width: none !important; position: static !important; margin-bottom: 20px; box-sizing: border-box; } .physinone-card main { width: 100% !important; min-width: 0 !important; box-sizing: border-box; } .physinone-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (max-width: 560px) { .physinone-summary-grid { grid-template-columns: 1fr !important; } }

PhysInOne: Visual Physics Learning and Reasoning in One Suite

vLAR Group | The Hong Kong Polytechnic University | Syai Singapore | Meta

CVPR 2026

All PhysInOne repositories: 999,927 historical downloads (snapshot Sep 5, 2026)

🧭 Navigation

📌 Summary
🚀 Release Timetable
📦 Repositories & Downloads
📊 Data Splits
🧱 Validation 3D Assets
🏆 Leaderboard Evaluation Data
📥 How to Download
   1. Download Scripts
   2. Install Dependencies
   3. Filter Cases
      3.1 Split
      3.2 Split + Activity
      3.3 Phenomenon
      3.4 Random Sampling
   4. Download Cases
📦 Dataset Structure
📝 Annotation Details
   • Depth
   • Segmentation
   • Captions
   • Trajectories
      ◦ JSON file structure
      ◦ Actor-level pose storage
      ◦ Pose entry format
   • Cameras
      ◦ Camera JSON structure
      ◦ Dynamic camera behavior
   • Point Clouds
🧩 Data Fields
   • Physical Phenomena
📜 License
📚 Citation
📮 Contact

📌 Summary

PhysInOne is a large-scale synthetic dataset for visual physics learning and reasoning, containing 153,810 dynamic 3D scenes and 2 million annotated videos across 71 physical phenomena in mechanics, optics, fluid dynamics, and magnetism. Each scene features complex multi-object and multi-physics interactions with rich annotations, including RGB videos, depth maps, object masks, 3D trajectories, camera poses, object meshes, material properties, and textual descriptions. The dataset supports research on physics-aware video generation, future frame prediction, physical property estimation, motion transfer, physical reasoning, and world models.

153,810
Dynamic 3D scenes
2M
Annotated videos
71
Physical phenomena
4
Physics domains

🚀 Release Timetable

ComponentProgressStatusNotes
Mini SubSet (Val)██████████100%Released
Rendered Data - Train██████████ 100%(122988/122988)ReleasedLast updated: Aug 21
Rendered Data - Test██████████ 100%ReleasedAll Leaderboard user inputs released; GT excluded
Rendered Data - Val░░░░░░░░░░ 1%(103/15411)In progress
3D Assets██░░░░░░░░ 20%Partially releasedValidation assets for 1,000 scenes
Leaderboard██████████ 100%ReleasedPublic evaluation data for four tasks
Baseline code██░░░░░░░░ 25%In progressLast updated: Jul 23
Data processing░░░░░░░░░░ 0%Not releasedExpected around Aug

📦 Dataset Repositories & Downloads

Due to the large scale of PhysInOne, the rendered data and annotations are split across 16 Hugging Face repositories. Each entry shows the shard size, release status, live all-time downloads, live downloads in the last 30 days, and its repository link.

Combined snapshot (Sep 5, 2026): P01–P16 have 986,449 all-time downloads and 615,484 downloads in the last 30 days. Including the main repository, the per-repository sums are 999,927 and 616,472.

Main repositoryMainOpen ↗
PhysInOne total downloads PhysInOne 30d downloads
PhysInOneP01Train · 01/16CompleteOpen ↗
4.52 TB
PhysInOneP01 total downloads PhysInOneP01 30d downloads
PhysInOneP02Train · 02/16CompleteOpen ↗
7.09 TB
PhysInOneP02 total downloads PhysInOneP02 30d downloads
PhysInOneP03Train · 03/16CompleteOpen ↗
7.59 TB
PhysInOneP03 total downloads PhysInOneP03 30d downloads
PhysInOneP04Train · 04/16CompleteOpen ↗
7.58 TB
PhysInOneP04 total downloads PhysInOneP04 30d downloads
PhysInOneP05Train · 05/16CompleteOpen ↗
7.16 TB
PhysInOneP05 total downloads PhysInOneP05 30d downloads
PhysInOneP06Train · 06/16CompleteOpen ↗
7.19 TB
PhysInOneP06 total downloads PhysInOneP06 30d downloads
PhysInOneP07Train · 07/16CompleteOpen ↗
7.21 TB
PhysInOneP07 total downloads PhysInOneP07 30d downloads
PhysInOneP08Train · 08/16CompleteOpen ↗
7.21 TB
PhysInOneP08 total downloads PhysInOneP08 30d downloads
PhysInOneP09Train · 09/16CompleteOpen ↗
7.20 TB
PhysInOneP09 total downloads PhysInOneP09 30d downloads
PhysInOneP10Train · 10/16CompleteOpen ↗
7.25 TB
PhysInOneP10 total downloads PhysInOneP10 30d downloads
PhysInOneP11Train · 11/16CompleteOpen ↗
7.48 TB
PhysInOneP11 total downloads PhysInOneP11 30d downloads
PhysInOneP12Train · 12/16CompleteOpen ↗
6.68 TB
PhysInOneP12 total downloads PhysInOneP12 30d downloads
PhysInOneP13Train · 13/16CompleteOpen ↗
6.66 TB
PhysInOneP13 total downloads PhysInOneP13 30d downloads
PhysInOneP14Train · 14/16CompleteOpen ↗
6.72 TB
PhysInOneP14 total downloads PhysInOneP14 30d downloads
PhysInOneP15Train · 15/16CompleteOpen ↗
7.93 TB
PhysInOneP15 total downloads PhysInOneP15 30d downloads
PhysInOneP16Train · 16/16CompleteOpen ↗
1.57 TB
PhysInOneP16 total downloads PhysInOneP16 30d downloads

Download badges query the official Hugging Face API and update automatically. Counts are repository-level download events, not deduplicated users; accessing multiple shards can produce one event in each shard.

For large-scale downloading and filtering, please refer to the How to Download section below.

📊 Data Splits

PhysInOne is divided into Train, Val, and Test splits, containing 122,988, 15,411, and 15,411 scenes, respectively. The three splits are generated with completely distinct 3D meshes and backgrounds, ensuring that no scene or visual content is shared across splits. This separation provides a robust benchmark for evaluating generalization and physical reasoning.

🧱 Validation 3D Assets

The first public 3D asset release is now available and contains Unreal Engine project resources for 1,000 validation scenes. The current release includes 4,299 files (approximately 22.25 GiB), including eight archives that must be extracted in place while preserving their project-relative paths. Full training asset archives are not part of this validation release.

Install Unreal Engine 5.5.4. Windows is recommended for the simplest setup; Linux is also supported with additional platform configuration. The automated downloader retrieves the exact release, safely extracts all eight ZIP files into their correct parent directories, preserves the Unreal Engine package hierarchy, supports interrupted-run recovery, and records detailed logs.

pip install -U huggingface_hub tqdm

hf download vLAR/PhysInOne \
  "PhysInOne Utils/scripts/download_3d_assets.py" \
  --repo-type dataset \
  --local-dir .

python "PhysInOne Utils/scripts/download_3d_assets.py" \
  --output-dir ./PhysInOne-3D-Assets

After download and extraction, open:

PhysInOne-3D-Assets/3D Assets/PhysicBenchmark/PhysInOne.uproject

Do not rename or flatten directories such as Content/PhysInOne/, Content/__ExternalActors__/, or Content/__ExternalObjects__/; Unreal Engine asset references depend on the exact project-relative structure. See the full setup guide for manual extraction paths, disk-space guidance, resume behavior, and troubleshooting.

🏆 Leaderboard Evaluation Data

All user-facing evaluation inputs required for the four PhysInOne Leaderboard tasks have been released. Ground-truth targets remain private and are not included in the public release. Exact task-specific file lists and a resumable Python downloader allow users to download one task, multiple tasks, or individual scenes without scanning unrelated dataset shards.

TaskReleased filesPublic data
Video Generation75,865Initial RGB observations, camera metadata, and captions
Future Prediction103 ZIPsTraining-view RGB prefixes and train/val/test transform metadata
Physical Properties Estimation72 scene ZIPs + 2 shared filesTraining/novel-view inputs, camera metadata, and shared supplementary resources
Motion Transfer217 ZIPsSource videos, target reference frames, and captions

Install the downloader dependency and download any task as follows:

pip install -U huggingface_hub tqdm

hf download vLAR/PhysInOne \
  "PhysInOne Utils/scripts/download_leaderboard.py" \
  "PhysInOne Utils/leaderboard_lists/video-generation.txt" \
  "PhysInOne Utils/leaderboard_lists/future-prediction.txt" \
  "PhysInOne Utils/leaderboard_lists/physical-properties-estimation.txt" \
  "PhysInOne Utils/leaderboard_lists/motion-transfer.txt" \
  "PhysInOne Utils/LEADERBOARD_DOWNLOAD.md" \
  --repo-type dataset \
  --local-dir .

python "PhysInOne Utils/scripts/download_leaderboard.py" \
  --task future-prediction \
  --output-dir ./PhysInOne-Leaderboard

Use --task all to download all four tasks, --scene SCENE_ID to select individual scenes, or --extract to validate and extract scene ZIPs. Downloads are resumable, and every run records successes and failures for review.

See the full Leaderboard download guide and the task file lists for details.

📥 How to Download

1. Download Scripts

Please download the PhysInOne Utils folder from the main dataset repository. It contains:

PhysInOne Utils/
├── metadata/
│   ├── repo_assignment.txt
│   └── repo_map.json
├── 3d_assets_lists/
│   ├── validation.txt
│   ├── validation_archives.txt
│   └── summary.json
├── leaderboard_lists/
│   ├── video-generation.txt
│   ├── future-prediction.txt
│   ├── physical-properties-estimation.txt
│   └── motion-transfer.txt
├── 3D_ASSETS_DOWNLOAD.md
├── LEADERBOARD_DOWNLOAD.md
└── scripts/
    ├── filter_cases.py
    ├── download.py
    ├── download_3d_assets.py
    └── download_leaderboard.py

Run the following commands from inside the downloaded folder so the scripts can find metadata/ using their default paths:

cd "PhysInOne Utils"

PhysInOne is distributed across multiple Hugging Face dataset repositories because of its large scale. We provide utilities for selecting and downloading full-dataset cases and Leaderboard evaluation data:

  • filter_cases.py: exports selected cases to JSON.
  • download.py: downloads the selected case zip files from the corresponding repositories.
  • download_leaderboard.py: downloads public evaluation data for the four Leaderboard tasks; see LEADERBOARD_DOWNLOAD.md.
  • download_3d_assets.py: downloads and safely assembles the validation Unreal Engine project; see 3D_ASSETS_DOWNLOAD.md.

2. Install Dependencies

pip install huggingface_hub tqdm

3. Filter Cases

Export a JSON file containing case information matching your filter criteria, for use in subsequent download scripts. The filter_cases.py script supports selection by:

  • Split: train, val, test
  • Activity complexity: single, double, triple
  • Physical phenomenon abbreviation: MovingHitsFixed, FrictionStop, LiquidTension, ..., GranularFall
  • Number of cases: globally sample num cases after filtering

The following examples show common filtering workflows.

3.1 Filter by split

python scripts/filter_cases.py \
  --split train \
  --output selected_cases.json

3.2 Filter by split and activity complexity

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --output selected_cases.json

3.3 Filter by physical phenomenon abbreviation

By default, phenomenon matching uses contains mode. For example, the following command selects all double-physics cases that contain FrictionStop(For all physical phenomena and their abbreviations, please refer to the Data Fields section below.):

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --phenomena FrictionStop \
  --match_mode contains \
  --output selected_cases.json

For exact matching, use --match_mode exact. Order does not matter. For example, this command selects cases whose phenomenon set is exactly {AccelConcaveSpin, AccelSurfaceSpin}:

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --phenomena AccelConcaveSpin AccelSurfaceSpin \
  --match_mode exact \
  --output selected_cases.json

3.4 Randomly sample a fixed number of cases

--num is the global number of cases sampled after filtering (This is because the number of cases meeting the filtering criteria may be much larger than the number you need.). The default random seed is 42.

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --phenomena FrictionStop \
  --num 3000 \
  --seed 42 \
  --output selected_cases.json

4. Download Selected Cases

Each selected case is downloaded as a zip file from the corresponding Hugging Face shard repository.

python scripts/download.py \
  --selection selected_cases.json \
  --output_dir ./PhysInOne

If the dataset repositories are gated or private, pass a Hugging Face token:

python scripts/download.py \
  --selection selected_cases.json \
  --output_dir ./PhysInOne \
  --token YOUR_HF_TOKEN

By default, downloaded zip files are saved into a flat output folder. To preserve shard/split/activity structure:

python scripts/download.py \
  --selection selected_cases.json \
  --output_dir ./PhysInOne \
  --keep_shard_structure

The preserved structure is:

PhysInOne/
  physinone_part1/
    Train/
      DoublePhysics/
        AccelConcaveSpin_AccelSurfaceSpin__bg070__K5ER39_trajectory.zip

📦 Dataset Structure

AccelConcaveSpin__bg010__m3Zrtz_trajectory/
├── AccelConcaveSpin__bg010__m3Zrtz_trajectory.json
├── blender_CineCamera_0.json
├── blender_CineCamera_1.json
├── blender_CineCamera_2.json
├── blender_CineCamera_3.json
├── blender_CineCamera_5.json
├── blender_CineCamera_6.json
├── blender_CineCamera_7.json
├── blender_CineCamera_8.json
├── blender_CineCamera_9.json
├── blender_CineCamera_10.json
├── blender_CineCamera_11.json
├── blender_CineCamera_12.json
├── blender_CineCamera_Moving.json
├── cameras.ply
├── caption.txt
├── points3d.ply
├── recorder_stats.json
├── static_camera_list.txt
├── CineCamera_0/
│   ├── depth/  (0000.npz ~ 0089.npz, 90 files)
│   ├── rgb/    (0000.jpg ~ 0089.jpg, 90 files)
│   └── seg/    (0000.npz ~ 0089.npz, 90 files)
├── CineCamera_1/
│   ...
├── CineCamera_2/
│   ...
├── CineCamera_3/
│   ...
├── CineCamera_5/
│   ...
├── CineCamera_6/
│   ...
├── CineCamera_7/
│   ...
├── CineCamera_8/
│   ...
├── CineCamera_9/
│   ...
├── CineCamera_10/
│   ...
├── CineCamera_11/
│   ...
├── CineCamera_12/
│   ...
└── CineCamera_Moving/
    ├── depth/  (0000.npz ~ 0089.npz, 90 files)
    ├── rgb/    (0000.jpg ~ 0089.jpg, 90 files)
    └── seg/    (0000.npz ~ 0089.npz, 90 files)

📝 Annotation Details

PhysInOne provides synchronized visual and physical annotations for each dynamic 3D scene.

Depth

Depth maps are provided in .npz format and are expressed in meters.

Segmentation

Segmentation masks encode background, static foreground objects, and dynamic foreground objects.

Expected encoding:

Pixel ValueMeaning
0Background
1-127Static foreground objects
128-255Dynamic foreground objects

Captions

Each scene includes a caption.txt file containing an English paragraph that describes the visual elements and the physical activity.

Trajectories

Each sequence includes a JSON file with the same name as the sequence. This file records the per-frame poses of selected dynamic objects, including their rotations and translations in the world coordinate system.

JSON file structure

The JSON file contains two main parts:

  • sequence_info: basic information about the sequence, such as the total number of frames and the frame rate (fps).
  • actors: pose and metadata for dynamic objects, including object category, asset index path, actor type, and transformation data.
Actor-level pose storage

For each actor, the storage format depends on its actor_type:

  • If actor_type is solid, the object is treated as a single rigid body. Its per-frame pose is stored in the actor-level transform_data field, while the components field is empty.
  • If actor_type is interactable, the object is represented by multiple components. The actor-level transform_data field is empty, and the per-component poses are stored under components[component_name].transform_data.
Pose entry format in transform_data

Each entry in transform_data describes the pose of the object or component at a specific frame:

  • frame: frame index in the sequence
  • time_seconds: timestamp of the frame in seconds
  • transform: object or component transformation, including:
    • location: 3D position
    • rotation: rotation quaternion
    • scale: 3D scale

Cameras

Each scene includes multiple camera viewpoints to support 3D perception, reconstruction, and physics-based visual reasoning tasks.

  • Taichi-based MPM simulations (elastic solids, plasticine, granular substances, some Newtonian and Non-Newtonian fluids): 15 static cameras + 1 dynamic camera
  • Other scenes: 12 static cameras + 1 dynamic camera

Note: Camera IDs are not fixed across cases. The camera index mapping for each case is stored in static_camera_list.txt under that case directory.

Camera JSON structure

Per camera:

  • frames: list of per-frame 4×4 camera-to-world (C2W) transformation matrices in Blender coordinate system
  • camera_angle_x: horizontal field of view (FOV) in radians, can be used to compute intrinsic focal length
  • img_w, img_h: image width and height in pixels
  • trajectory_name: name of the camera trajectory
  • total_frames, fps: number of frames and frames per second
Dynamic camera behavior
  • The dynamic camera moves along a path randomly sampled on a hemisphere surrounding the center of the main objects, providing diverse viewpoints.
  • JSON frame indices correspond directly to video frame indices.

Point Clouds

Each scene should include points.ply.

The initial point cloud was obtained by back-projecting the pixels from each camera view in the first frame based on depth, followed by randomly sampling 100,000 points from the resulting data.

🧩 Data Fields

Physical Phenomenon and Abbreviations

IDPhysical PhenomenonAbbreviationRelated Physical Laws
1Object collide with static, stationary objectsMovingHitsFixedLaws of Momentum
2Moving objects collide with non-static stationary objectsMovingHitsStationaryLaws of Momentum
3Two moving objects collideMovingHitsMovingLaws of Momentum
............
Click to expand full abbreviation table
IDPhysical PhenomenonAbbreviationRelated Physical Laws
4Objects in equilibrium of wind and gravityWindGravityBalanceEquilibrium, Aerodynamics, Gravity
5Wind applied to a stationary objectWindPushStationaryAerodynamics
6Wind applied to objects moving in same directionWindPushSameDirAerodynamics
7Wind applied to objects moving in the opposite directionWindPushOppDirAerodynamics
8Wind applied to moving objects changes its velocity (applied at an angle)WindDeflectMotionAerodynamics
9Object thrown up with angleObliqueProjectileGravity
10Objects falling straight downVerticalFallGravity
11Objects rolling down a straight slopeRollDownSlopeGravity, Friction
12Objects rolling up a slopeRollUpSlopeGravity, Friction
13Magnetic AttractionMagnetAttractMagnetism
14Magnetic RepulsionMagnetRepelMagnetism
15Objects near uniformly rotating pillarUniformPanelSpinLaws of Rotation
16Objects near acceleratingly rotating pillarAccelPanelSpinLaws of Rotation
17Objects inside uniformly rotating bowlUniformConcaveSpinEquilibrium, Laws of Rotation, Gravity, Friction
18Objects inside acceleratingly rotating bowlAccelConcaveSpinEquilibrium, Laws of Rotation, Gravity, Friction
19Objects on uniformly rotating planeUniformSurfaceSpinLaws of Rotation, Friction
20Objects on acceleratingly rotating planeAccelSurfaceSpinLaws of Rotation, Friction
21Objects on coarse surface with frictionFrictionStopFriction
22Spring is compressedSpringCompressLaws of Elasticity
23Spring is stretchedSpringStretchLaws of Elasticity
24Breakable object shattersImpactFractureLaws of Plasticity
25Mirror shattersMirrorFragmentReflectLaws of Plasticity, Law of Reflection
26Elastic rope connectionElasticCoupleLaws of Elasticity
27Object bounces off spring boardSpringboardReboundLaws of Elasticity, Laws of Momentum
28Objects interact with a balanced seesawSeesawCenterPivotLaws of Torque
29Objects interact with an imbalanced seesawSeesawOffsetPivotLaws of Torque
30Free balloon floats to ceilingBalloonFloatLaws of Buoyancy
31Tethered balloon pulls string tautBalloonTetherLaws of Buoyancy, Rope Restraint
32Multiple balloons liftingBalloonLiftLaws of Buoyancy, Rope Restraint, Gravity
33Laser hits flat mirror and reflectsFixedPlanarRedirectLaw of Reflection
34Laser reflects off multiple mirrorsFixedArrayRedirectLaw of Reflection
35Laser hits and reflects off concave mirrorFixedConcaveRedirectLaw of Reflection
36Laser hits and reflects off convex mirrorFixedConvexRedirectLaw of Reflection
37Mirror sweeps beamDynMirrorRedirectLaw of Reflection
38Laser blocked by objectLaserBlockLight Obstruction
39Mirror reflectionMirrorReflectLaw of Reflection
40Cart moving forward with rolling wheelsCartMoveComplex Mechanical Structure Constraints
41Objects on rotating turntable flies offRotTurnableInertiaLaws of Rotation, Friction, Laws of Inertia
42Rotating block pushes another objectsRotBoardInertiaLaws of Inertia, Laws of Rotation, Laws of Momentum
43One object carrying anotherLinCarryInertiaLaws of Inertia, Friction
44Catapult launches objectsCatapultLaunchSpecial Mechanical Structure, Gravity
45Chain suspends objectsChainSuspendComplex Mechanical Structure Constraints, Gravity
46Objects SwingSimplePendulumLaws of Pendulum Motion, Gravity
47Double Pendulum MovesDoublePendulumLaws of Multiple Pendulum Motion, Gravity
48Crank push objectsCrankPushSpecial Mechanical Structure
49Wall composed of square blocks collapsesBlockWallCollapseGravity, Structural Stability
50Wooden board supported by sticks collapsesStickSupportFailGravity, Structural Stability
51Objects float on the fluid surfaceFloatOnLiquidLaws of Buoyancy, Fluid Dynamics
52Objects drop into the fluidDropInLiquidLaws of Buoyancy, Fluid Dynamics
53Objects' movement causes fluid motionMovingObjDriveLiquidFluid Dynamics
54Flowing fluid carries objects alongLiquidCarryMovingObjLaws of Buoyancy, Fluid Dynamics
55Fluid flows against stationary objectsLiquidHitFixedObjFluid Dynamics
56Fluid transfers from one container to anotherLiquidTransferFluid Dynamics, Conservation of Mass, Surface Tension
57Fluid passes through several connected containersLiquidMultiTransfersFluid Dynamics, Conservation of Mass, Surface Tension
58Fluid flows through grid-like structuresLiquidThroughGridFluid Dynamics, Conservation of Mass
59Fluid moves across mountainous or uneven landscapesLiquidAcrossUnevenFluid Dynamics
60Increasing fluid volume elevates the surface levelLiquidRiseFluid Dynamics
61Fluid flows along the contours of an object's surfaceLiquidAlongContoursFluid Dynamics
62Jet-like fluid projection upward or outwardJetLiquidFluid Dynamics
63Fluid exhibits surface tensionLiquidTensionFluid Dynamics, Laws of Surface Tension
64Fluid refracts light when crossing mediaLiquidRefractionFluid Dynamics, Optics, Law of Refraction (Snell's Law)
65Sticky fluid drips and accumulates on objectsStickyToObjectsLaws of Cohesion, Viscous Flow
66Sticky fluid falls from an object's surfaceStickyFromObjectsLaws of Cohesion, Laws of Viscous Flow (Navier-Stokes)
67An elastic object falls and bounces on another surfaceElasticFallLaws of Elasticity
68A plasticine object falls and deforms on a surfacePlasticineFallLaws of Plasticity
69A Newtonian fluid falls and spreads across a surfaceNewtonianFluidFallLaws of Viscous Flow (Navier-Stokes)
70A Non-Newtonian fluid falls and flows with variable resistanceNonNewtonianFluidFallLaws of Viscoplastics Flow
71A granular substance falls and disperses across a surfaceGranularFallLaws of Friction

Example: MovingHitsStationary_WindDeflectMotion_BalloonFloat__bg140__TZlWl1

  • The first three components correspond to specific physical phenomenon abbreviations (see table above).
  • bg140 indicates that the scene uses background number 140.
  • The last six-character string (TZlWl1) is a unique hash code generated for this scene to guarantee uniqueness.

This naming convention allows users to quickly parse scene metadata and link it to the corresponding physical phenomena, background, and unique identifier.

📜 License

All 3D assets and materials included in PhysInOne have been sourced from publicly available platforms and verified to carry licenses compatible with non-commercial use. These include:

  • SketchFab: assets under various licenses, verified that AI-related usage is allowed.
  • Fab: assets under CC BY or Unreal Engine Standard License, explicitly permitting AI-related usage.
  • BlenderKit: distributed under Royalty-Free (RF) license.
  • ShareTextures: textures under CC0 license.

In total, assets comply with licenses including CC BY-NC, CC BY-SA, CC BY-NC-SA, CC0, CC BY, and RF, ensuring all files can be legally used for building a non-commercial dataset. Users must adhere to the original licenses for any redistribution or derivative work.

📚 Citation

If you use PhysInOne in your research, please cite:

@misc{zhou2026physinonevisualphysicslearning,
      title={PhysInOne: Visual Physics Learning and Reasoning in One Suite}, 
      author={Siyuan Zhou and Hejun Wang and Hu Cheng and Jinxi Li and Dongsheng Wang and Junwei Jiang and Yixiao Jin and Jiayue Huang and Shiwei Mao and Shangjia Liu and Yafei Yang and Hongkang Song and Shenxing Wei and Zihui Zhang and Peng Huang and Shijie Liu and Zhengli Hao and Hao Li and Yitian Li and Wenqi Zhou and Zhihan Zhao and Zongqi He and Hongtao Wen and Shouwang Huang and Peng Yun and Bowen Cheng and Pok Kazaf Fu and Wai Kit Lai and Jiahao Chen and Kaiyuan Wang and Zhixuan Sun and Ziqi Li and Haochen Hu and Di Zhang and Chun Ho Yuen and Bing Wang and Zhihua Wang and Chuhang Zou and Bo Yang},
      year={2026},
      eprint={2604.09415},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2604.09415}, 
}

📮 Contact

For questions about the dataset, please contact:

Contributors

vLAR

500 commits

vLAR/PhysInOne

Dataset

17

stars

500

commits

1

linked in READMEs

Sep 6, 2026

updated

3d
embodied-ai
fluid-dynamics
future-frame-prediction
magnetism
mechanics
motion-transfer
mpm
multiview
optics
physical-property-estimation
physical-reasoning
simulation
sph
synthetic-data
unreal-engine
video
video-generation
visual-physics
world-model

README

.physinone-card { line-height: 1.4; } .physinone-card p { margin-top: 0.35em; margin-bottom: 0.35em; } .physinone-card ul, .physinone-card ol { margin-top: 0.25em; margin-bottom: 0.45em; padding-left: 1.35em; } .physinone-card li { margin-top: 0.12em; margin-bottom: 0.12em; } .physinone-card li p { margin-top: 0.1em; margin-bottom: 0.1em; } .physinone-card h2 { font-size: 1.9em; line-height: 1.22; margin-top: 1.2em; margin-bottom: 0.5em; } .physinone-card h3 { font-size: 1.35em; margin-top: 0.55em; margin-bottom: 0.18em; line-height: 1.2; } .physinone-card h4 { font-size: 1.12em; margin-top: 0.45em; margin-bottom: 0.12em; line-height: 1.18; margin-left: 0; } .physinone-card h5 { font-size: 1.02em; margin-top: 0.45em; margin-bottom: 0.12em; line-height: 1.16; font-weight: 700; } .physinone-card pre { margin-top: 0.1em; } .physinone-card p + pre { margin-top: 0.05em; } .physinone-card table { margin-top: 0.35em; margin-bottom: 0.55em; } .physinone-card table th, .physinone-card table td { padding-top: 0.28em; padding-bottom: 0.28em; } .physinone-repo-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px; margin: 12px 0 8px; } .physinone-repo-card { display: flex; flex-direction: column; min-width: 0; box-sizing: border-box; padding: 9px 10px; overflow: hidden; border: 1px solid rgba(148, 163, 184, 0.28); border-radius: 9px; background: linear-gradient(145deg, rgba(148, 163, 184, 0.07), rgba(148, 163, 184, 0.025)); } .physinone-repo-card-main { grid-column: 1 / -1; background: linear-gradient(135deg, rgba(253, 224, 71, 0.14), rgba(249, 115, 22, 0.055)); border-color: rgba(234, 179, 8, 0.30); } .physinone-repo-card-header, .physinone-repo-card-bottom { display: flex; flex-wrap: wrap; align-items: center; min-width: 0; gap: 5px 7px; } .physinone-repo-card-header { justify-content: space-between; flex-wrap: nowrap; } .physinone-repo-card-header > strong { overflow: hidden; font-size: 13px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; } .physinone-repo-card-tags { display: inline-flex; flex: 0 0 auto; align-items: center; margin-left: auto; gap: 3px; } .physinone-repo-split, .physinone-repo-status { padding: 1px 4px; font-size: 7.5px; font-weight: 700; line-height: 1.5; text-transform: uppercase; border-radius: 999px; white-space: nowrap; } .physinone-repo-split { color: #1d4ed8; background: rgba(59, 130, 246, 0.10); border: 1px solid rgba(59, 130, 246, 0.18); } .physinone-repo-status { color: #15803d; background: rgba(34, 197, 94, 0.11); border: 1px solid rgba(34, 197, 94, 0.18); } .physinone-repo-card-main .physinone-repo-status { color: #a16207; background: rgba(234, 179, 8, 0.12); border-color: rgba(234, 179, 8, 0.22); } .physinone-repo-card-bottom { margin-top: 6px; } .physinone-repo-size { flex: 0 0 auto; color: #d32f2f; font-size: 12px; line-height: 18px; white-space: nowrap; } .physinone-repo-downloads { display: flex; flex-wrap: wrap; align-items: center; min-width: 0; margin-left: auto; gap: 4px; } .physinone-repo-downloads a { display: inline-flex; max-width: 100%; } .physinone-repo-downloads img { display: block; max-width: 100%; height: 18px; } .physinone-repo-link { display: inline-flex; flex: 0 0 auto; align-items: center; margin-left: 0; padding: 1px 4px; font-size: 8.5px; font-weight: 700; line-height: 1.35; text-decoration: none; white-space: nowrap; background: rgba(59, 130, 246, 0.08); border: 1px solid rgba(59, 130, 246, 0.15); border-radius: 6px; } @media (max-width: 900px) { .physinone-card { display: block !important; } .physinone-card aside { width: auto !important; min-width: 0 !important; max-width: none !important; position: static !important; margin-bottom: 20px; box-sizing: border-box; } .physinone-card main { width: 100% !important; min-width: 0 !important; box-sizing: border-box; } .physinone-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } @media (max-width: 560px) { .physinone-summary-grid { grid-template-columns: 1fr !important; } }

PhysInOne: Visual Physics Learning and Reasoning in One Suite

vLAR Group | The Hong Kong Polytechnic University | Syai Singapore | Meta

CVPR 2026

All PhysInOne repositories: 999,927 historical downloads (snapshot Sep 5, 2026)

🧭 Navigation

📌 Summary
🚀 Release Timetable
📦 Repositories & Downloads
📊 Data Splits
🧱 Validation 3D Assets
🏆 Leaderboard Evaluation Data
📥 How to Download
   1. Download Scripts
   2. Install Dependencies
   3. Filter Cases
      3.1 Split
      3.2 Split + Activity
      3.3 Phenomenon
      3.4 Random Sampling
   4. Download Cases
📦 Dataset Structure
📝 Annotation Details
   • Depth
   • Segmentation
   • Captions
   • Trajectories
      ◦ JSON file structure
      ◦ Actor-level pose storage
      ◦ Pose entry format
   • Cameras
      ◦ Camera JSON structure
      ◦ Dynamic camera behavior
   • Point Clouds
🧩 Data Fields
   • Physical Phenomena
📜 License
📚 Citation
📮 Contact

📌 Summary

PhysInOne is a large-scale synthetic dataset for visual physics learning and reasoning, containing 153,810 dynamic 3D scenes and 2 million annotated videos across 71 physical phenomena in mechanics, optics, fluid dynamics, and magnetism. Each scene features complex multi-object and multi-physics interactions with rich annotations, including RGB videos, depth maps, object masks, 3D trajectories, camera poses, object meshes, material properties, and textual descriptions. The dataset supports research on physics-aware video generation, future frame prediction, physical property estimation, motion transfer, physical reasoning, and world models.

153,810
Dynamic 3D scenes
2M
Annotated videos
71
Physical phenomena
4
Physics domains

🚀 Release Timetable

ComponentProgressStatusNotes
Mini SubSet (Val)██████████100%Released
Rendered Data - Train██████████ 100%(122988/122988)ReleasedLast updated: Aug 21
Rendered Data - Test██████████ 100%ReleasedAll Leaderboard user inputs released; GT excluded
Rendered Data - Val░░░░░░░░░░ 1%(103/15411)In progress
3D Assets██░░░░░░░░ 20%Partially releasedValidation assets for 1,000 scenes
Leaderboard██████████ 100%ReleasedPublic evaluation data for four tasks
Baseline code██░░░░░░░░ 25%In progressLast updated: Jul 23
Data processing░░░░░░░░░░ 0%Not releasedExpected around Aug

📦 Dataset Repositories & Downloads

Due to the large scale of PhysInOne, the rendered data and annotations are split across 16 Hugging Face repositories. Each entry shows the shard size, release status, live all-time downloads, live downloads in the last 30 days, and its repository link.

Combined snapshot (Sep 5, 2026): P01–P16 have 986,449 all-time downloads and 615,484 downloads in the last 30 days. Including the main repository, the per-repository sums are 999,927 and 616,472.

Main repositoryMainOpen ↗
PhysInOne total downloads PhysInOne 30d downloads
PhysInOneP01Train · 01/16CompleteOpen ↗
4.52 TB
PhysInOneP01 total downloads PhysInOneP01 30d downloads
PhysInOneP02Train · 02/16CompleteOpen ↗
7.09 TB
PhysInOneP02 total downloads PhysInOneP02 30d downloads
PhysInOneP03Train · 03/16CompleteOpen ↗
7.59 TB
PhysInOneP03 total downloads PhysInOneP03 30d downloads
PhysInOneP04Train · 04/16CompleteOpen ↗
7.58 TB
PhysInOneP04 total downloads PhysInOneP04 30d downloads
PhysInOneP05Train · 05/16CompleteOpen ↗
7.16 TB
PhysInOneP05 total downloads PhysInOneP05 30d downloads
PhysInOneP06Train · 06/16CompleteOpen ↗
7.19 TB
PhysInOneP06 total downloads PhysInOneP06 30d downloads
PhysInOneP07Train · 07/16CompleteOpen ↗
7.21 TB
PhysInOneP07 total downloads PhysInOneP07 30d downloads
PhysInOneP08Train · 08/16CompleteOpen ↗
7.21 TB
PhysInOneP08 total downloads PhysInOneP08 30d downloads
PhysInOneP09Train · 09/16CompleteOpen ↗
7.20 TB
PhysInOneP09 total downloads PhysInOneP09 30d downloads
PhysInOneP10Train · 10/16CompleteOpen ↗
7.25 TB
PhysInOneP10 total downloads PhysInOneP10 30d downloads
PhysInOneP11Train · 11/16CompleteOpen ↗
7.48 TB
PhysInOneP11 total downloads PhysInOneP11 30d downloads
PhysInOneP12Train · 12/16CompleteOpen ↗
6.68 TB
PhysInOneP12 total downloads PhysInOneP12 30d downloads
PhysInOneP13Train · 13/16CompleteOpen ↗
6.66 TB
PhysInOneP13 total downloads PhysInOneP13 30d downloads
PhysInOneP14Train · 14/16CompleteOpen ↗
6.72 TB
PhysInOneP14 total downloads PhysInOneP14 30d downloads
PhysInOneP15Train · 15/16CompleteOpen ↗
7.93 TB
PhysInOneP15 total downloads PhysInOneP15 30d downloads
PhysInOneP16Train · 16/16CompleteOpen ↗
1.57 TB
PhysInOneP16 total downloads PhysInOneP16 30d downloads

Download badges query the official Hugging Face API and update automatically. Counts are repository-level download events, not deduplicated users; accessing multiple shards can produce one event in each shard.

For large-scale downloading and filtering, please refer to the How to Download section below.

📊 Data Splits

PhysInOne is divided into Train, Val, and Test splits, containing 122,988, 15,411, and 15,411 scenes, respectively. The three splits are generated with completely distinct 3D meshes and backgrounds, ensuring that no scene or visual content is shared across splits. This separation provides a robust benchmark for evaluating generalization and physical reasoning.

🧱 Validation 3D Assets

The first public 3D asset release is now available and contains Unreal Engine project resources for 1,000 validation scenes. The current release includes 4,299 files (approximately 22.25 GiB), including eight archives that must be extracted in place while preserving their project-relative paths. Full training asset archives are not part of this validation release.

Install Unreal Engine 5.5.4. Windows is recommended for the simplest setup; Linux is also supported with additional platform configuration. The automated downloader retrieves the exact release, safely extracts all eight ZIP files into their correct parent directories, preserves the Unreal Engine package hierarchy, supports interrupted-run recovery, and records detailed logs.

pip install -U huggingface_hub tqdm

hf download vLAR/PhysInOne \
  "PhysInOne Utils/scripts/download_3d_assets.py" \
  --repo-type dataset \
  --local-dir .

python "PhysInOne Utils/scripts/download_3d_assets.py" \
  --output-dir ./PhysInOne-3D-Assets

After download and extraction, open:

PhysInOne-3D-Assets/3D Assets/PhysicBenchmark/PhysInOne.uproject

Do not rename or flatten directories such as Content/PhysInOne/, Content/__ExternalActors__/, or Content/__ExternalObjects__/; Unreal Engine asset references depend on the exact project-relative structure. See the full setup guide for manual extraction paths, disk-space guidance, resume behavior, and troubleshooting.

🏆 Leaderboard Evaluation Data

All user-facing evaluation inputs required for the four PhysInOne Leaderboard tasks have been released. Ground-truth targets remain private and are not included in the public release. Exact task-specific file lists and a resumable Python downloader allow users to download one task, multiple tasks, or individual scenes without scanning unrelated dataset shards.

TaskReleased filesPublic data
Video Generation75,865Initial RGB observations, camera metadata, and captions
Future Prediction103 ZIPsTraining-view RGB prefixes and train/val/test transform metadata
Physical Properties Estimation72 scene ZIPs + 2 shared filesTraining/novel-view inputs, camera metadata, and shared supplementary resources
Motion Transfer217 ZIPsSource videos, target reference frames, and captions

Install the downloader dependency and download any task as follows:

pip install -U huggingface_hub tqdm

hf download vLAR/PhysInOne \
  "PhysInOne Utils/scripts/download_leaderboard.py" \
  "PhysInOne Utils/leaderboard_lists/video-generation.txt" \
  "PhysInOne Utils/leaderboard_lists/future-prediction.txt" \
  "PhysInOne Utils/leaderboard_lists/physical-properties-estimation.txt" \
  "PhysInOne Utils/leaderboard_lists/motion-transfer.txt" \
  "PhysInOne Utils/LEADERBOARD_DOWNLOAD.md" \
  --repo-type dataset \
  --local-dir .

python "PhysInOne Utils/scripts/download_leaderboard.py" \
  --task future-prediction \
  --output-dir ./PhysInOne-Leaderboard

Use --task all to download all four tasks, --scene SCENE_ID to select individual scenes, or --extract to validate and extract scene ZIPs. Downloads are resumable, and every run records successes and failures for review.

See the full Leaderboard download guide and the task file lists for details.

📥 How to Download

1. Download Scripts

Please download the PhysInOne Utils folder from the main dataset repository. It contains:

PhysInOne Utils/
├── metadata/
│   ├── repo_assignment.txt
│   └── repo_map.json
├── 3d_assets_lists/
│   ├── validation.txt
│   ├── validation_archives.txt
│   └── summary.json
├── leaderboard_lists/
│   ├── video-generation.txt
│   ├── future-prediction.txt
│   ├── physical-properties-estimation.txt
│   └── motion-transfer.txt
├── 3D_ASSETS_DOWNLOAD.md
├── LEADERBOARD_DOWNLOAD.md
└── scripts/
    ├── filter_cases.py
    ├── download.py
    ├── download_3d_assets.py
    └── download_leaderboard.py

Run the following commands from inside the downloaded folder so the scripts can find metadata/ using their default paths:

cd "PhysInOne Utils"

PhysInOne is distributed across multiple Hugging Face dataset repositories because of its large scale. We provide utilities for selecting and downloading full-dataset cases and Leaderboard evaluation data:

  • filter_cases.py: exports selected cases to JSON.
  • download.py: downloads the selected case zip files from the corresponding repositories.
  • download_leaderboard.py: downloads public evaluation data for the four Leaderboard tasks; see LEADERBOARD_DOWNLOAD.md.
  • download_3d_assets.py: downloads and safely assembles the validation Unreal Engine project; see 3D_ASSETS_DOWNLOAD.md.

2. Install Dependencies

pip install huggingface_hub tqdm

3. Filter Cases

Export a JSON file containing case information matching your filter criteria, for use in subsequent download scripts. The filter_cases.py script supports selection by:

  • Split: train, val, test
  • Activity complexity: single, double, triple
  • Physical phenomenon abbreviation: MovingHitsFixed, FrictionStop, LiquidTension, ..., GranularFall
  • Number of cases: globally sample num cases after filtering

The following examples show common filtering workflows.

3.1 Filter by split

python scripts/filter_cases.py \
  --split train \
  --output selected_cases.json

3.2 Filter by split and activity complexity

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --output selected_cases.json

3.3 Filter by physical phenomenon abbreviation

By default, phenomenon matching uses contains mode. For example, the following command selects all double-physics cases that contain FrictionStop(For all physical phenomena and their abbreviations, please refer to the Data Fields section below.):

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --phenomena FrictionStop \
  --match_mode contains \
  --output selected_cases.json

For exact matching, use --match_mode exact. Order does not matter. For example, this command selects cases whose phenomenon set is exactly {AccelConcaveSpin, AccelSurfaceSpin}:

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --phenomena AccelConcaveSpin AccelSurfaceSpin \
  --match_mode exact \
  --output selected_cases.json

3.4 Randomly sample a fixed number of cases

--num is the global number of cases sampled after filtering (This is because the number of cases meeting the filtering criteria may be much larger than the number you need.). The default random seed is 42.

python scripts/filter_cases.py \
  --split train \
  --activity_type double \
  --phenomena FrictionStop \
  --num 3000 \
  --seed 42 \
  --output selected_cases.json

4. Download Selected Cases

Each selected case is downloaded as a zip file from the corresponding Hugging Face shard repository.

python scripts/download.py \
  --selection selected_cases.json \
  --output_dir ./PhysInOne

If the dataset repositories are gated or private, pass a Hugging Face token:

python scripts/download.py \
  --selection selected_cases.json \
  --output_dir ./PhysInOne \
  --token YOUR_HF_TOKEN

By default, downloaded zip files are saved into a flat output folder. To preserve shard/split/activity structure:

python scripts/download.py \
  --selection selected_cases.json \
  --output_dir ./PhysInOne \
  --keep_shard_structure

The preserved structure is:

PhysInOne/
  physinone_part1/
    Train/
      DoublePhysics/
        AccelConcaveSpin_AccelSurfaceSpin__bg070__K5ER39_trajectory.zip

📦 Dataset Structure

AccelConcaveSpin__bg010__m3Zrtz_trajectory/
├── AccelConcaveSpin__bg010__m3Zrtz_trajectory.json
├── blender_CineCamera_0.json
├── blender_CineCamera_1.json
├── blender_CineCamera_2.json
├── blender_CineCamera_3.json
├── blender_CineCamera_5.json
├── blender_CineCamera_6.json
├── blender_CineCamera_7.json
├── blender_CineCamera_8.json
├── blender_CineCamera_9.json
├── blender_CineCamera_10.json
├── blender_CineCamera_11.json
├── blender_CineCamera_12.json
├── blender_CineCamera_Moving.json
├── cameras.ply
├── caption.txt
├── points3d.ply
├── recorder_stats.json
├── static_camera_list.txt
├── CineCamera_0/
│   ├── depth/  (0000.npz ~ 0089.npz, 90 files)
│   ├── rgb/    (0000.jpg ~ 0089.jpg, 90 files)
│   └── seg/    (0000.npz ~ 0089.npz, 90 files)
├── CineCamera_1/
│   ...
├── CineCamera_2/
│   ...
├── CineCamera_3/
│   ...
├── CineCamera_5/
│   ...
├── CineCamera_6/
│   ...
├── CineCamera_7/
│   ...
├── CineCamera_8/
│   ...
├── CineCamera_9/
│   ...
├── CineCamera_10/
│   ...
├── CineCamera_11/
│   ...
├── CineCamera_12/
│   ...
└── CineCamera_Moving/
    ├── depth/  (0000.npz ~ 0089.npz, 90 files)
    ├── rgb/    (0000.jpg ~ 0089.jpg, 90 files)
    └── seg/    (0000.npz ~ 0089.npz, 90 files)

📝 Annotation Details

PhysInOne provides synchronized visual and physical annotations for each dynamic 3D scene.

Depth

Depth maps are provided in .npz format and are expressed in meters.

Segmentation

Segmentation masks encode background, static foreground objects, and dynamic foreground objects.

Expected encoding:

Pixel ValueMeaning
0Background
1-127Static foreground objects
128-255Dynamic foreground objects

Captions

Each scene includes a caption.txt file containing an English paragraph that describes the visual elements and the physical activity.

Trajectories

Each sequence includes a JSON file with the same name as the sequence. This file records the per-frame poses of selected dynamic objects, including their rotations and translations in the world coordinate system.

JSON file structure

The JSON file contains two main parts:

  • sequence_info: basic information about the sequence, such as the total number of frames and the frame rate (fps).
  • actors: pose and metadata for dynamic objects, including object category, asset index path, actor type, and transformation data.
Actor-level pose storage

For each actor, the storage format depends on its actor_type:

  • If actor_type is solid, the object is treated as a single rigid body. Its per-frame pose is stored in the actor-level transform_data field, while the components field is empty.
  • If actor_type is interactable, the object is represented by multiple components. The actor-level transform_data field is empty, and the per-component poses are stored under components[component_name].transform_data.
Pose entry format in transform_data

Each entry in transform_data describes the pose of the object or component at a specific frame:

  • frame: frame index in the sequence
  • time_seconds: timestamp of the frame in seconds
  • transform: object or component transformation, including:
    • location: 3D position
    • rotation: rotation quaternion
    • scale: 3D scale

Cameras

Each scene includes multiple camera viewpoints to support 3D perception, reconstruction, and physics-based visual reasoning tasks.

  • Taichi-based MPM simulations (elastic solids, plasticine, granular substances, some Newtonian and Non-Newtonian fluids): 15 static cameras + 1 dynamic camera
  • Other scenes: 12 static cameras + 1 dynamic camera

Note: Camera IDs are not fixed across cases. The camera index mapping for each case is stored in static_camera_list.txt under that case directory.

Camera JSON structure

Per camera:

  • frames: list of per-frame 4×4 camera-to-world (C2W) transformation matrices in Blender coordinate system
  • camera_angle_x: horizontal field of view (FOV) in radians, can be used to compute intrinsic focal length
  • img_w, img_h: image width and height in pixels
  • trajectory_name: name of the camera trajectory
  • total_frames, fps: number of frames and frames per second
Dynamic camera behavior
  • The dynamic camera moves along a path randomly sampled on a hemisphere surrounding the center of the main objects, providing diverse viewpoints.
  • JSON frame indices correspond directly to video frame indices.

Point Clouds

Each scene should include points.ply.

The initial point cloud was obtained by back-projecting the pixels from each camera view in the first frame based on depth, followed by randomly sampling 100,000 points from the resulting data.

🧩 Data Fields

Physical Phenomenon and Abbreviations

IDPhysical PhenomenonAbbreviationRelated Physical Laws
1Object collide with static, stationary objectsMovingHitsFixedLaws of Momentum
2Moving objects collide with non-static stationary objectsMovingHitsStationaryLaws of Momentum
3Two moving objects collideMovingHitsMovingLaws of Momentum
............
Click to expand full abbreviation table
IDPhysical PhenomenonAbbreviationRelated Physical Laws
4Objects in equilibrium of wind and gravityWindGravityBalanceEquilibrium, Aerodynamics, Gravity
5Wind applied to a stationary objectWindPushStationaryAerodynamics
6Wind applied to objects moving in same directionWindPushSameDirAerodynamics
7Wind applied to objects moving in the opposite directionWindPushOppDirAerodynamics
8Wind applied to moving objects changes its velocity (applied at an angle)WindDeflectMotionAerodynamics
9Object thrown up with angleObliqueProjectileGravity
10Objects falling straight downVerticalFallGravity
11Objects rolling down a straight slopeRollDownSlopeGravity, Friction
12Objects rolling up a slopeRollUpSlopeGravity, Friction
13Magnetic AttractionMagnetAttractMagnetism
14Magnetic RepulsionMagnetRepelMagnetism
15Objects near uniformly rotating pillarUniformPanelSpinLaws of Rotation
16Objects near acceleratingly rotating pillarAccelPanelSpinLaws of Rotation
17Objects inside uniformly rotating bowlUniformConcaveSpinEquilibrium, Laws of Rotation, Gravity, Friction
18Objects inside acceleratingly rotating bowlAccelConcaveSpinEquilibrium, Laws of Rotation, Gravity, Friction
19Objects on uniformly rotating planeUniformSurfaceSpinLaws of Rotation, Friction
20Objects on acceleratingly rotating planeAccelSurfaceSpinLaws of Rotation, Friction
21Objects on coarse surface with frictionFrictionStopFriction
22Spring is compressedSpringCompressLaws of Elasticity
23Spring is stretchedSpringStretchLaws of Elasticity
24Breakable object shattersImpactFractureLaws of Plasticity
25Mirror shattersMirrorFragmentReflectLaws of Plasticity, Law of Reflection
26Elastic rope connectionElasticCoupleLaws of Elasticity
27Object bounces off spring boardSpringboardReboundLaws of Elasticity, Laws of Momentum
28Objects interact with a balanced seesawSeesawCenterPivotLaws of Torque
29Objects interact with an imbalanced seesawSeesawOffsetPivotLaws of Torque
30Free balloon floats to ceilingBalloonFloatLaws of Buoyancy
31Tethered balloon pulls string tautBalloonTetherLaws of Buoyancy, Rope Restraint
32Multiple balloons liftingBalloonLiftLaws of Buoyancy, Rope Restraint, Gravity
33Laser hits flat mirror and reflectsFixedPlanarRedirectLaw of Reflection
34Laser reflects off multiple mirrorsFixedArrayRedirectLaw of Reflection
35Laser hits and reflects off concave mirrorFixedConcaveRedirectLaw of Reflection
36Laser hits and reflects off convex mirrorFixedConvexRedirectLaw of Reflection
37Mirror sweeps beamDynMirrorRedirectLaw of Reflection
38Laser blocked by objectLaserBlockLight Obstruction
39Mirror reflectionMirrorReflectLaw of Reflection
40Cart moving forward with rolling wheelsCartMoveComplex Mechanical Structure Constraints
41Objects on rotating turntable flies offRotTurnableInertiaLaws of Rotation, Friction, Laws of Inertia
42Rotating block pushes another objectsRotBoardInertiaLaws of Inertia, Laws of Rotation, Laws of Momentum
43One object carrying anotherLinCarryInertiaLaws of Inertia, Friction
44Catapult launches objectsCatapultLaunchSpecial Mechanical Structure, Gravity
45Chain suspends objectsChainSuspendComplex Mechanical Structure Constraints, Gravity
46Objects SwingSimplePendulumLaws of Pendulum Motion, Gravity
47Double Pendulum MovesDoublePendulumLaws of Multiple Pendulum Motion, Gravity
48Crank push objectsCrankPushSpecial Mechanical Structure
49Wall composed of square blocks collapsesBlockWallCollapseGravity, Structural Stability
50Wooden board supported by sticks collapsesStickSupportFailGravity, Structural Stability
51Objects float on the fluid surfaceFloatOnLiquidLaws of Buoyancy, Fluid Dynamics
52Objects drop into the fluidDropInLiquidLaws of Buoyancy, Fluid Dynamics
53Objects' movement causes fluid motionMovingObjDriveLiquidFluid Dynamics
54Flowing fluid carries objects alongLiquidCarryMovingObjLaws of Buoyancy, Fluid Dynamics
55Fluid flows against stationary objectsLiquidHitFixedObjFluid Dynamics
56Fluid transfers from one container to anotherLiquidTransferFluid Dynamics, Conservation of Mass, Surface Tension
57Fluid passes through several connected containersLiquidMultiTransfersFluid Dynamics, Conservation of Mass, Surface Tension
58Fluid flows through grid-like structuresLiquidThroughGridFluid Dynamics, Conservation of Mass
59Fluid moves across mountainous or uneven landscapesLiquidAcrossUnevenFluid Dynamics
60Increasing fluid volume elevates the surface levelLiquidRiseFluid Dynamics
61Fluid flows along the contours of an object's surfaceLiquidAlongContoursFluid Dynamics
62Jet-like fluid projection upward or outwardJetLiquidFluid Dynamics
63Fluid exhibits surface tensionLiquidTensionFluid Dynamics, Laws of Surface Tension
64Fluid refracts light when crossing mediaLiquidRefractionFluid Dynamics, Optics, Law of Refraction (Snell's Law)
65Sticky fluid drips and accumulates on objectsStickyToObjectsLaws of Cohesion, Viscous Flow
66Sticky fluid falls from an object's surfaceStickyFromObjectsLaws of Cohesion, Laws of Viscous Flow (Navier-Stokes)
67An elastic object falls and bounces on another surfaceElasticFallLaws of Elasticity
68A plasticine object falls and deforms on a surfacePlasticineFallLaws of Plasticity
69A Newtonian fluid falls and spreads across a surfaceNewtonianFluidFallLaws of Viscous Flow (Navier-Stokes)
70A Non-Newtonian fluid falls and flows with variable resistanceNonNewtonianFluidFallLaws of Viscoplastics Flow
71A granular substance falls and disperses across a surfaceGranularFallLaws of Friction

Example: MovingHitsStationary_WindDeflectMotion_BalloonFloat__bg140__TZlWl1

  • The first three components correspond to specific physical phenomenon abbreviations (see table above).
  • bg140 indicates that the scene uses background number 140.
  • The last six-character string (TZlWl1) is a unique hash code generated for this scene to guarantee uniqueness.

This naming convention allows users to quickly parse scene metadata and link it to the corresponding physical phenomena, background, and unique identifier.

📜 License

All 3D assets and materials included in PhysInOne have been sourced from publicly available platforms and verified to carry licenses compatible with non-commercial use. These include:

  • SketchFab: assets under various licenses, verified that AI-related usage is allowed.
  • Fab: assets under CC BY or Unreal Engine Standard License, explicitly permitting AI-related usage.
  • BlenderKit: distributed under Royalty-Free (RF) license.
  • ShareTextures: textures under CC0 license.

In total, assets comply with licenses including CC BY-NC, CC BY-SA, CC BY-NC-SA, CC0, CC BY, and RF, ensuring all files can be legally used for building a non-commercial dataset. Users must adhere to the original licenses for any redistribution or derivative work.

📚 Citation

If you use PhysInOne in your research, please cite:

@misc{zhou2026physinonevisualphysicslearning,
      title={PhysInOne: Visual Physics Learning and Reasoning in One Suite}, 
      author={Siyuan Zhou and Hejun Wang and Hu Cheng and Jinxi Li and Dongsheng Wang and Junwei Jiang and Yixiao Jin and Jiayue Huang and Shiwei Mao and Shangjia Liu and Yafei Yang and Hongkang Song and Shenxing Wei and Zihui Zhang and Peng Huang and Shijie Liu and Zhengli Hao and Hao Li and Yitian Li and Wenqi Zhou and Zhihan Zhao and Zongqi He and Hongtao Wen and Shouwang Huang and Peng Yun and Bowen Cheng and Pok Kazaf Fu and Wai Kit Lai and Jiahao Chen and Kaiyuan Wang and Zhixuan Sun and Ziqi Li and Haochen Hu and Di Zhang and Chun Ho Yuen and Bing Wang and Zhihua Wang and Chuhang Zou and Bo Yang},
      year={2026},
      eprint={2604.09415},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2604.09415}, 
}

📮 Contact

For questions about the dataset, please contact:

Contributors

vLAR

500 commits