Communitygithub.com

kevinbadi/blender-skills

プロダクトのヒーロー的なディテールに向かってスローに押し込むシネマティックなズームイン効果を作成します。リビール効果を生み出します。

blender-skills とは?

このBlenderスキルは、プロダクトのヒーロー的なディテール(ロゴ、テクスチャ、機能など)に向けてカメラをゆっくりと押し込む、シネマティックなスローズームアニメーションを自動生成します。特に「リビール」「ヒーローショット」「ズームイン」といったユーザーの意図を検出し、Blender MCP経由で3Dシーンに直接カメラアニメーションを設定します。パラメータには、ズームの開始/終了距離、高さ、焦点距離、持続時間、フレームレートなどが含まれており、ユーザーは自由に調整可能です。推奨される出力は、CyclesレンダリングとProRes 4444へのffmpegエンコードによる透過背景PNGシーケンスです。デフォルトのBEZIER補間により滑らかなイージングが実現し、焦点距離のシフト(35mm→65mm)が微妙なドリーズーム効果を生み出します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kevinbadi/blender-skills/tree/HEAD/slow-zoom

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

スローズームカメラアニメーション

カメラが広角のエスタブリッシングショットから、ヒーロー的なディテール(ロゴ、テクスチャ、特徴)のタイトなクローズアップへとゆっくりと押し込まれます。焦点距離のシフトによる微妙なドリーズーム効果も含まれ、シネマティックな圧縮感を生み出します。

使用するタイミング

  • 「リビール」や「ヒーローショット」をユーザーが望んでいる場合
  • 「ズームイン」「押し込み」「ロゴのクローズアップ」「シネマティックリビール」とユーザーが言った場合
  • プロダクト上の特定のディテールや特徴を強調したい場合

前提条件

  • Blender MCP: 接続済み
  • 3Dモデル: すでにBlenderシーンにインポート済み
  • 出力フォルダ: ~/Desktop/Blender Videos/
  • ffmpeg: インストール済み

パラメータ

パラメータデフォルト値説明
duration5動画の長さ(秒)
fps24フレームレート(フレーム/秒)
start_distance4.0開始時のカメラ距離
end_distance1.8終了時のカメラ距離(クローズアップ)
start_height3.0開始時のカメラ高さ
end_height1.2終了時のカメラ高さ
start_lens35開始時の焦点距離(広角)
end_lens65終了時の焦点距離(望遠)
focus_point(0,0,0.1)ズームのターゲット位置(例:ロゴの中心)
transparent_bgtrue透過背景

フロー

ステップ 1: フォーカスポイントの特定

ユーザーにどのディテールにズームインするかを尋ねるか、デフォルトでオブジェクトの中心を使用します。不明な場合はAskUserQuestionを使用します。

ステップ 2: カメラのセットアップ

import bpy, math

# フォーカスターゲット
bpy.ops.object.empty_add(type='PLAIN_AXES', location=FOCUS_POINT)
tgt = bpy.context.active_object
tgt.name = 'ZoomTarget'

# カメラ
bpy.ops.object.camera_add(location=(START_X, -START_DISTANCE, START_HEIGHT))
cam = bpy.context.active_object
cam.name = 'SlowZoomCam'
cam.data.lens = START_LENS

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

bpy.context.scene.camera = cam

ステップ 3: 押し込みアニメーションの設定

import bpy

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

# 開始位置(広角)
cam.location = (1.5, -START_DISTANCE, START_HEIGHT)
cam.keyframe_insert(data_path='location', frame=1)
cam.data.lens = START_LENS
cam.data.keyframe_insert(data_path='lens', frame=1)

# 終了位置(望遠)
cam.location = (0.3, -END_DISTANCE, END_HEIGHT)
cam.keyframe_insert(data_path='location', frame=TOTAL_FRAMES)
cam.data.lens = END_LENS
cam.data.keyframe_insert(data_path='lens', frame=TOTAL_FRAMES)

# デフォルトのBEZIER補間を維持し、スムーズなイージングを実現

ステップ 4: ライティング + レンダリング

ターンテーブルスキルと同じゴールデンアワーのライティングセットアップを使用します。CyclesでPNGシーケンスとしてレンダリングし、ffmpegでProRes 4444にエンコードします。

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

ヒント

  • 焦点距離のシフト(35mm→65mm)により、微妙なドリーズーム/ヒッチコック効果が生まれます
  • BEZIER補間はスムーズなイージングイン/アウトを実現します — このアニメーションにはLINEARを使用しないでください
  • 開始位置をX方向に少しオフセット(例:1.5)することで、よりシネマティックな斜めアプローチが可能になります

関連スキル