CoolFace
Datasetpublic

huuuuuuuuu/CameraOperator-BlockCam

CameraOperator-BlockCam (Synthetic) CameraOperator-BlockCam (Synthetic) contains 37,499 repaired-and-audited synthetic annotation-label trajectory records pairing English camera-motion descriptions, 150-frame camera trajectories, and time-varying target-object 3D oriented bounding boxes (OBBs). They are grouped into 5,180 reconstructed source events and 13,121 augmentation families; the 37,499 records should not be interpreted as 37,499 independent scenes or events. The dataset… See the full description on the dataset page: https://huggingface.co/datasets/huuuuuuuuu/CameraOperator-BlockCam.

sourceHugging Facecc-by-4.0updated 21d agoView on Hugging Face
1likes142downloads
Dataset Card

CameraOperator-BlockCam (Synthetic)

CameraOperator-BlockCam (Synthetic) contains 37,499 repaired-and-audited synthetic annotation-label trajectory records pairing English camera-motion descriptions, 150-frame camera trajectories, and time-varying target-object 3D oriented bounding boxes (OBBs). They are grouped into 5,180 reconstructed source events and 13,121 augmentation families; the 37,499 records should not be interpreted as 37,499 independent scenes or events. The dataset accompanies the ACM Multimedia 2026 paper Camera Operator: Object-Grounded Camera Trajectory Generation from Text and 3D Bounding Box Sequences.

This public release is the synthetic-only distribution derived from the audited strict-semfix-v10 candidate. Its processed-record membership and grouping differ from the approximately 41K mixed real/synthetic BlockCam benchmark described in the paper; the two counts are not directly comparable, and this release should not be treated as a drop-in reproduction of the paper's reported split or metrics.

Release boundary

The repository contains:

  • synthetic JSON annotations and camera/3D-OBB trajectory labels;
  • split-aware Parquet files derived from those JSON records;
  • public source-event split lists, integrity metadata, and checksums; and
  • dataset documentation and license files.

It contains no source videos, rendered images, REAL annotation or label payloads, Unreal Engine project files, Fab assets, model weights, or Camera Operator source code. In each annotation, video_name is a sequence identifier only and source_files.video is empty.

Dataset statistics

PropertyValue
Processed annotation-label records37,499
Synthetic records37,499
REAL sequences0
Reconstructed source events5,180
Augmentation families13,121
Frames per sequence150
Frame rate30 fps
Total frames5,624,850
Total OBB corners44,998,800

Camera modes

ModeSequencesModeSequences
DOLLY7,417FOLLOW2,875
LEAD3,776ORBIT2,507
OVERHEAD95PAN_TILT3,442
PROFILE3,921SPIRAL1,924
TAIL4,421TRANSLATION7,121

Recommended split

SplitSequences
Train35,833
Validation775
Test891

Use the default Parquet configuration or the lists under splits/public_source_event/ for new experiments. The grouping uses recorded member IDs and source-event and augmentation-family IDs reconstructed from frozen exporter filenames. Under those identifiers, no cross-split exact-member, source-event, or augmentation-family overlap was detected. This does not imply that all latent scene, character, motion, or semantic similarity is absent across splits.

The split is not mode-balanced: OVERHEAD has 93 train, 0 validation, and 2 test sequences. Validation therefore cannot support balanced claims over every camera mode.

Access

Hugging Face Datasets / Parquet

python
from datasets import load_dataset

dataset = load_dataset("huuuuuuuuu/CameraOperator-BlockCam")
sample = dataset["train"][0]

print(sample["id"], sample["camera_mode"], sample["user_prompt"])
print(len(sample["camera_position"]))  # 150
print(len(sample["bbox_vertices"]))    # 150, each frame has 8 corners

The Parquet representation provides the principal text, camera, OBB, intrinsics, projection, provenance-grouping, and integrity fields. Float-valued geometric arrays are stored as 64-bit values.

Original JSON records

The raw/ directory contains deterministic .tar.zst shards. Each sequence's annotation and label are placed in the same shard, preserving these paths:

text
annotations/{stem}_annotation.json
labels/{stem}.json

Download and extract the raw layer with, for example:

bash
hf download huuuuuuuuu/CameraOperator-BlockCam \
  --repo-type dataset \
  --include "raw/*.tar.zst" \
  --local-dir CameraOperator-BlockCam

mkdir -p CameraOperator-BlockCam/raw-json
for shard in CameraOperator-BlockCam/raw/*.tar.zst; do
  tar --use-compress-program=unzstd -xf "$shard" \
    -C CameraOperator-BlockCam/raw-json
done

Verify downloads with checksums/sha256sums.txt. metadata/shard_index.jsonl maps each sequence ID to its split, archive, JSON paths, and record hashes.

Parquet schema

Each row represents one sequence. Core columns include:

ColumnMeaning
id, split, camera_modeSequence identity and public split
user_promptCanonical short camera-motion prompt
geometric_prompt, cinematic_promptGeometry-aware and fuller relation descriptions
technical_option, structured_tags_jsonStructured camera/subject labels
num_frames, fps, duration_sTemporal metadata; duration_s = num_frames / fps
image_width, image_heightDeclared projection resolution
focal_length_pixel_x, focal_length_pixel_y, principal_point_x, principal_point_yCamera intrinsics
camera_position[150][3]Camera positions in centimeters
camera_rotation[150][3]Camera [roll, pitch, yaw] in radians
bbox_center[150][3]Numerical mean of the eight released OBB vertices
bbox_vertices[150][8][3]Ordered world-space OBB corners in centimeters
object_rotation[150][3]Object rotations in degrees
projection_all_vertices_inside[150]Per-frame released projection flag
projection_coverage_ratio[150]Projected-corner 2D axis-aligned bounding-box area, clipped to image bounds, divided by image area; not segmentation or visible-surface coverage
annotation_path, label_path, raw_shardLocation of the lossless JSON pair
annotation_sha256, label_sha256SHA-256 of the raw JSON records

Original JSON schema and conventions

Annotation records contain video_name, camera_mode, camera_mode_description, training_data, trajectory_stats, caption, trajectory_only_caption, source_files, and annotation_provenance.

Label records contain sequence-level camera, coordinate_system, geometry_schema, sequence_summary, and frames[150]. Each frame contains frame_id, camera, object, bbox_vertices, and projection.

  • Camera and OBB positions are in centimeters.
  • camera.rotation is [roll, pitch, yaw] in radians.
  • object.rotation is in degrees.
  • Consumers are not required to reconstruct the OBB from object.rotation; use the ordered bbox_vertices for geometric operations.
  • The audited camera convention uses +X forward with camera-to-world basis columns corresponding to forward/right/up.
  • object.bbox_center is numerically equal to the mean of the eight released vertices.
  • object.position is a compatibility alias of object.bbox_center.
  • object.source_position preserves exporter-dependent provenance and should not replace the released OBB center.
  • Geometry consumers should use bbox_vertices as the authoritative box representation.

The ordered OBB corner topology is:

text
axis 0: (0,1), (3,2), (4,5), (7,6)
axis 1: (0,3), (1,2), (4,7), (5,6)
axis 2: (0,4), (1,5), (2,6), (3,7)

Text labels

The English camera captions are deterministically generated from the released camera/OBB geometry and fixed labeling rules; annotation_provenance.llm_used is false.

Text layerUnique values
User_Prompt33
Geometric prompt strings380
Cinematic prompt strings380
Technical_Option1,674
Structured-tag combinations8,374

User_Prompt contains 6--11 English words (median 8) and is intentionally template-like rather than open-vocabulary human captioning. FOLLOW and TAIL share the canonical prompt The viewpoint tracks behind the subject., so User_Prompt alone does not distinguish those two internal modes; use camera_mode or the structured fields when that distinction matters.

Validation scope

Automated audits found no failing sequence under the declared schema, finite-value, synchronization, projection, text-closure, and frozen 3D continuity checks.

For the released 150-frame trajectories, all eight OBB corners were found at positive camera depth and within the declared image bounds using the released intrinsics, coordinate convention, and a 0.001-pixel audit tolerance. This statement applies only to the released trajectories; it does not guarantee visibility for newly generated, perturbed, or interpolated trajectories.

Continuity diagnosticObserved maximumGate
Camera-position normalized acceleration0.09911830.1
Camera viewing-direction angular acceleration2.64076 degrees10 degrees
OBB-center normalized acceleration0.04403200.1
Adjacent OBB-diagonal change0.07436420.1

Additional expanded-geometry gates also found no failing sequence:

Expanded diagnosticObserved maximumGate
Ordered-corner rotation change29.5042 degrees30 degrees
Adjacent projected-scale ratio1.45043x1.5x

Three sequences contain five transitions with projected 2D IoU below 0.5, and two sequences contain one elevated second-order projected-scale diagnostic each. Local geometric diagnostics were consistent with smooth OBB rotation near an edge-on view and did not indicate an isolated 3D camera/OBB discontinuity. These cases remain in the dataset and are disclosed as diagnostics.

See audits/VALIDATION_SUMMARY.md for the public validation summary and checksums/sha256sums.txt for release-file integrity.

Version and provenance

Public distribution version 1.0.0 packages the repaired-and-audited synthetic records from strict-semfix-v10. The raw annotation and label bytes are unchanged from the audited source candidate, while the public Parquet, shard index, manifest, and checksums are newly generated for this distribution.

The v10 designation identifies synthetic-only filtering and distribution. Retained record contents are byte-identical to their audited v9 parent, so a per-record provenance field can still name strict-semfix-v9-release; this is lineage information, not mixed payload membership.

Intended use

The release is intended for research on text-conditioned camera-trajectory generation, object-grounded camera planning, camera/target relation modeling, and related 3D motion-control tasks. Users should report the exact dataset version, split, preprocessing, and evaluation protocol.

Limitations and out-of-scope uses

  • The data is synthetic-only and does not represent the full distribution of real cinematography.
  • Captions are short deterministic templates, not unrestricted human descriptions.
  • The public split is imbalanced, especially for OVERHEAD.
  • Source-event grouping is reconstructed from exporter filename lineage.
  • Passing operational geometry checks does not establish subjective cinematic quality or physical realism for every downstream use.
  • The data provides target OBB and camera relations, not full-scene geometry, collision constraints, obstacle avoidance, or general occlusion reasoning.
  • This release is not intended for safety-critical or unreviewed physical camera control.

License and attribution

The dataset owner authorizes public distribution of the files included in this release under the Creative Commons Attribution 4.0 International License. The license applies only to files included in this release. It does not grant rights to any underlying Unreal Engine or Fab assets, source videos, rendered images, or project files; none of those materials are distributed.

Suggested attribution:

text
CameraOperator-BlockCam synthetic dataset, Hu et al. (2026),
https://doi.org/10.1145/3767308.3835459

Citation

bibtex
@inproceedings{hu2026cameraoperator,
  author    = {Hu, Zhongyuan and Ma, Yue and Wang, Jiangming and Li, Ronghui and Li, Xiu},
  title     = {Camera Operator: Object-Grounded Camera Trajectory Generation from Text and 3D Bounding Box Sequences},
  booktitle = {Proceedings of the 34th ACM International Conference on Multimedia},
  year      = {2026},
  doi       = {10.1145/3767308.3835459}
}

Contact, corrections, and takedown

For questions, corrections, or removal requests concerning a released record, email huzhongyyuan@gmail.com with the sequence ID and reason. The maintainer will review the request and may correct or remove the record in a future dataset revision.