mcpField
D
dolly-rotate

dolly-rotate

github.com/kevinbadiCreative & media210144 installsUpdated 30w ago
Repository

About dolly-rotate

dolly-rotate is a skill for creating Blender camera animations that move toward a subject while rotating around it. It defines camera and timing parameters, then renders frames for video encoding.

Key features

  1. 01Combined dolly and rotation motion
  2. 02Adjustable duration and frame rate
  3. 03Configurable rotation and camera distances
  4. 04Adjustable camera heights
  5. 05PNG frame rendering workflow
  6. 06ProRes 4444 encoding command

Use cases

  1. 01Creating a sweeping product reveal
  2. 02Animating a camera approach around an object

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/kevinbadi/blender-skills --skill dolly-rotate

After installing, type/dolly-rotatein Claude Code to confirm it loaded.

Details

From the project README

Dolly + Rotate Camera Animation

Camera dollies forward while simultaneously rotating around the product, creating a dynamic sweeping reveal that's more engaging than a straight zoom or static orbit.

When to Use

  • User wants a "dynamic" or "sweeping" shot
  • User says "dolly", "move and rotate", "sweeping reveal"
  • More cinematic than a simple turntable

Parameters

ParameterDefaultDescription
duration5Video length in seconds
fps24Frames per second
rotation_degrees90How far to rotate during the dolly
start_distance4.0Starting distance
end_distance2.5Ending distance
start_height2.0Starting height
end_height1.5Ending height

Flow

Step 1: Set Up Camera Rig
import bpy, math

bpy.ops.object.empty_add(type='PLAIN_AXES', location=(0, 0, 0.05))
tgt = bpy.context.active_object
tgt.name = 'DollyTarget'

bpy.ops.object.camera_add(location=(2.5, -START_DISTANCE, START_HEIGHT))
cam = bpy.context.active_object
cam.name = 'DollyCam'
cam.data.lens = 40

trk = cam.constraints.new(type='TRACK_TO')
trk.target = tgt
trk.track_axis = 'TRACK_NEGATIVE_Z'
trk.up_axis = 'UP_Y'

# Parent camera to target for orbital rotation
bpy.ops.object.select_all(action='DESELECT')
cam.select_set(True)
tgt.select_set(True)
bpy.context.view_layer.objects.active = tgt
bpy.ops.object.parent_set(type='OBJECT', keep_transform=True)

bpy.context.scene.camera = cam
Step 2: Animate Dolly + Rotation
TOTAL_FRAMES = DURATION * FPS

scene = bpy.context.scene
scene.frame_start = 1
scene.frame_end = TOTAL_FRAMES
scene.render.fps = FPS

# Frame 1: start position
tgt.rotation_euler = (0, 0, 0)
tgt.keyframe_insert(data_path='rotation_euler', frame=1)
cam.location = (2.5, -START_DISTANCE, START_HEIGHT)
cam.keyframe_insert(data_path='location', frame=1)
cam.data.lens = 40
cam.data.keyframe_insert(data_path='lens', frame=1)

# End: rotated + closer
tgt.rotation_euler = (0, 0, math.radians(ROTATION_DEGREES))
tgt.keyframe_insert(data_path='rotation_euler', frame=TOTAL_FRAMES)
cam.location = (1.5, -END_DISTANCE, END_HEIGHT)
cam.keyframe_insert(data_path='location', frame=TOTAL_FRAMES)
cam.data.lens = 50
cam.data.keyframe_insert(data_path='lens', frame=TOTAL_FRAMES)

# Default BEZIER interpolation for smooth cinematic feel
Step 3: Render + Encode

Same as turntable — PNG sequence with Cycles, encode to ProRes 4444.

ffmpeg -y -framerate 24 \
  -i "~/Desktop/Blender Videos/dolly_rotate_frames/%04d.png" \
  -c:v prores_ks -profile:v 4444 -pix_fmt yuva444p10le \
  "~/Desktop/Blender Videos/dolly_rotate.mov"

Comments

Markdown supported