Animation de caméra avec zoom avant lent
La caméra s'avance lentement depuis un plan large d'établissement jusqu'à un gros plan serré sur un détail héroïque (logo, texture, fonctionnalité). Inclut un léger zoom basé sur le déplacement de focale (dolly zoom) pour une compression cinématique.
Quand l'utiliser
- L'utilisateur souhaite une « révélation » ou un « plan héroïque »
- L'utilisateur dit « zoom avant », « push-in », « gros plan sur le logo », « révélation cinématique »
- Mettre en avant un détail ou une fonctionnalité spécifique du produit
Prérequis
- Blender MCP : Connecté
- Modèle 3D : Déjà importé dans la scène Blender
- Dossier de sortie :
~/Desktop/Blender Videos/ - ffmpeg : Installé
Paramètres
| Paramètre | Par défaut | Description |
|---|---|---|
duration | 5 | Durée de la vidéo en secondes |
fps | 24 | Images par seconde |
start_distance | 4.0 | Distance initiale de la caméra |
end_distance | 1.8 | Distance finale de la caméra (gros plan) |
start_height | 3.0 | Hauteur initiale de la caméra |
end_height | 1.2 | Hauteur finale de la caméra |
start_lens | 35 | Longueur focale initiale (grand angle) |
end_lens | 65 | Longueur focale finale (serrée) |
focus_point | (0,0,0.1) | Point vers lequel zoomer (par ex. centre du logo) |
transparent_bg | true | Fond transparent |
Flux de travail
Étape 1 : Identifier le point de focalisation
Demander à l'utilisateur sur quel détail faire un zoom avant, ou prendre par défaut le centre de l'objet. Utiliser AskUserQuestion si ce n'est pas clair.
Étape 2 : Configurer la caméra
import bpy, math
# Cible de la mise au point
bpy.ops.object.empty_add(type='PLAIN_AXES', location=FOCUS_POINT)
tgt = bpy.context.active_object
tgt.name = 'ZoomTarget'
# Caméra
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
Étape 3 : Animer le zoom avant
import bpy
TOTAL_FRAMES = DURATION * FPS
scene = bpy.context.scene
scene.frame_start = 1
scene.frame_end = TOTAL_FRAMES
scene.render.fps = FPS
# Début grand angle
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)
# Fin serré
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)
# Conserver l'interpolation BEZIER par défaut pour des entrées/sorties douces
Étape 4 : Éclairage + Rendu
Utiliser le même éclairage golden hour que la compétence tourne-disque. Rendre en séquence PNG avec Cycles, encoder avec ffmpeg en 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"
Conseils
- Le déplacement de focale (35mm à 65mm) crée un effet de dolly zoom / Hitchcock subtil
- L'interpolation BEZIER produit des entrées/sorties douces — n'utilisez pas LINEAIRE pour cette animation
- Décaler légèrement la position de départ sur X (ex. 1.5) pour une approche diagonale plus cinématique