Generates synthetic datasets for training and evaluating vision models on object rotation and alignment tasks. Each sample contains multiple objects that must be rotated to match orientation and then moved to align with their corresponding dashed target outlines.
Each sample pairs a task (first frame + prompt describing what needs to happen) with its ground truth solution (final frame showing the result + video demonstrating how to achieve it). This structure enables both model evaluation and training.
| Property | Value |
|---|---|
| Task ID | G-25 |
| Task | Separate Object Spinning |
| Category | Transformation |
| Resolution | 1024×1024 px |
| FPS | 16 fps |
| Duration | ~3 seconds |
| Output | PNG images + MP4 video |
# 1. Clone the repository
git clone https://github.com/VBVR-DataFactory/G-25_seperate_object_spinning_data-generator.git
cd G-25_seperate_object_spinning_data-generator
# 2. Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# 3. Install dependencies
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .# Generate 50 samples
python examples/generate.py --num-samples 50
# Custom output directory
python examples/generate.py --num-samples 100 --output data/my_dataset
# Reproducible generation with seed
python examples/generate.py --num-samples 50 --seed 42
# Without videos (faster)
python examples/generate.py --num-samples 50 --no-videos| Argument | Description |
|---|---|
--num-samples |
Number of tasks to generate (required) |
--output |
Output directory (default: data/questions) |
--seed |
Random seed for reproducibility |
--no-videos |
Skip video generation (images only) |
The scene shows 3 objects on the left side and dashed target outlines on the right side. The dashed target outlines remain completely stationary. For each object, first rotate it in place to match the orientation of its corresponding dashed target outline, then move it horizontally to the right so that it aligns exactly with and fits within its corresponding dashed target outline.
![]() |
![]() |
![]() |
| Initial Frame Objects with different orientations |
Animation Objects rotate then move to targets |
Final Frame Objects aligned with correct orientation |
Rotate objects to match target orientation, then move them horizontally to align with their corresponding dashed target outlines.
- Objects: 2-5 colored shapes (circles, squares, triangles, diamonds, hexagons)
- Initial position: Left side of canvas with random orientations
- Target outlines: Dashed outlines on right side with specific orientations (stationary)
- Movement sequence: First rotate in place, then translate horizontally
- Rotation: Match orientation of target outline
- Alignment: Object must fit exactly within target outline after rotation
- Background: White with clear visibility
- Goal: Achieve perfect orientation and position match with targets
- Two-phase motion: rotation followed by translation
- In-place rotation before horizontal movement
- Orientation matching requirement
- Dashed target outlines showing both shape and orientation
- Shape and color matching between objects and targets
- Sequential animation showing rotate-then-move pattern
data/questions/separate_object_spinning_task/separate_object_spinning_00000000/
├── first_frame.png # Objects with initial orientations
├── final_frame.png # Objects aligned with rotated targets
├── prompt.txt # Rotation and alignment instruction
├── ground_truth.mp4 # Animation of rotate-then-move
└── question_metadata.json # Task metadata
File specifications:
- Images: 1024×1024 PNG format
- Video: MP4 format, 16 fps
- Duration: ~3 seconds
physics rotation object-alignment spatial-reasoning trajectory shape-matching orientation-matching


