mcpField
C
crane-shot

crane-shot

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

About crane-shot

crane-shot is a skill for creating a Blender camera animation that rises from a low product angle to an overhead view. It is intended for product scenes that call for a dramatic reveal, with adjustable movement, duration, and frame rate.

Key features

  1. 01Animate camera from low to high
  2. 02Pull back as the camera rises
  3. 03Set duration and frame rate
  4. 04Adjust start and end heights
  5. 05Render PNG frames and encode with ffmpeg

Use cases

  1. 01Create a dramatic product reveal
  2. 02Show a product on a pedestal from above
  3. 03Render a rising camera move as a video

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/kevinbadi/blender-skills --skill crane-shot

After installing, type/crane-shotin Claude Code to confirm it loaded.

Details

From the project README

Crane Shot Camera Animation

Camera begins at a low angle looking up at the product, then smoothly rises to reveal the full product from above. Creates a dramatic unveiling effect.

When to Use

  • User wants a "reveal" or "unveil" shot
  • User says "crane", "rise up", "low to high", "dramatic reveal"
  • Product on a pedestal or platform

Parameters

ParameterDefaultDescription
duration5Video length in seconds
fps24Frames per second
start_height-0.2Starting height (below product level)
end_height3.5Ending height (above product)
start_distance3.0Starting distance
end_distance4.0Ending distance (pulls back as it rises)

Flow

Step 1: Set Up Camera
import bpy, math

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

bpy.ops.object.camera_add(location=(1.0, -START_DISTANCE, START_HEIGHT))
cam = bpy.context.active_object
cam.name = 'CraneCam'
cam.data.lens = 45

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

bpy.context.scene.camera = cam
Step 2: Animate Crane Movement
TOTAL_FRAMES = DURATION * FPS

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

# Start low
cam.location = (1.0, -START_DISTANCE, START_HEIGHT)
cam.keyframe_insert(data_path='location', frame=1)
cam.data.lens = 45
cam.data.keyframe_insert(data_path='lens', frame=1)

# Rise up and pull back
cam.location = (1.5, -END_DISTANCE, END_HEIGHT)
cam.keyframe_insert(data_path='location', frame=TOTAL_FRAMES)
cam.data.lens = 35
cam.data.keyframe_insert(data_path='lens', frame=TOTAL_FRAMES)

# BEZIER for smooth crane motion
Step 3: Render + Encode

Same pipeline — Cycles, PNG sequence, ffmpeg ProRes 4444.

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

Comments

Markdown supported