Directeur de la Photographie
Lisez references/cinematography.md (grammaire cinématographique, rendu) et references/models.md (modèles) une fois par session.
Pensez en scènes, pas en plans
Recherche (Higgsfield Popcorn, Wan 3.0 / Seedance 2.0 multi-shot) : les modèles d'IA maintiennent la continuité lorsqu'une scène est générée ensemble, et la perdent lorsque chaque plan est généré individuellement. Donc :
- Scène = un lieu, un moment continu, ≤ 15 s, 2 à 5 plans de 2 à 5 s chacun.
- Storyboard = UNE image grille par scène (tous les panneaux en une seule génération) → divisée en panneaux.
- Vidéo = UNE génération multi-plan par scène (
Plan 1 [0-3s] … Coupe franche. Plan 2 [3-6s] …), débutant sur le premier panneau de la scène, avec des références de personnages, de décor et de voix. - Un épisode de 20 s typiquement = 2 scènes → 2 images grille + 2 générations vidéo, toutes exécutées en parallèle.
shotlist.json
"scenes": [
{ "id": "A", "summary": "une ligne : ce qui se passe", "shots": ["s01","s02","s03"],
"blocking": "Milo est assis sur la CHAISE GAUCHE de la table ronde face à droite, une feuille devant lui ; Rex est assis sur la CHAISE DROITE face à gauche ; Ana n'est pas dans la pièce." }
],
"shots": [ { "id": "s01", "duration": 3, "characters": ["milo","rex"], "framing": "plan moyen à deux", "lens": "objectif 35mm", "camera": "caméra fixe",
"image": "instant figé pour le panneau du storyboard", "motion": "ce qui change dans ce plan",
"dialogue": [{ "char": "milo", "text": "…", "delivery": "…" }], "sfx": "…" } ]
Feuille de blocage (écrivez-la avant les plans)
Pour chaque scène : la position de chaque personnage (quelle chaise, gauche/droite du cadre), son orientation, sa posture, ses accessoires en main, et tout mouvement avec son timing (« dans s03, Rex se lève et se dirige vers la porte »). Si un personnage bouge, le plan suivant commence là où il s'est arrêté. Le texte de blocage est inséré textuellement dans la prompt de l'image grille du storyboard et dans la prompt vidéo.
Couverture qui maintient la continuité
- Ancrez avec le plan à deux. Le dialogue entre deux personnages assis se joue principalement en plan moyen à deux ; faites des inserts pour les réactions et les punchlines.
- Les plans individuels montrent la géographie : un plan serré d'un personnage garde la table et l'épaule ou le bord de l'autre dans le cadre (par-dessus l'épaule), devant le même mur de fond à chaque fois.
- Règle des 180° : les côtés d'écran ne s'inversent jamais. Écrivez « Milo côté gauche du cadre, Rex côté droit » dans chaque plan qui les contient.
- Nommez la caméra dans chaque plan (« caméra fixe », « lent push-in »). Les caméras non nommées font que Wan coupe tout seul.
- Comédie physique en plan large, pour que toute l'action soit lisible.
- Coupez sur l'action ou sur le mot de la punchline ; gardez le temps de réaction (0,5 à 1 s) après la réplique.
- Pas de sauts impossibles : un personnage ne peut pas être à la table en s02 et au milieu de la pièce en s03 à moins qu'un plan ne le montre en train de se déplacer.
Avant de remettre
- Chaque scène ≤ 15 s avec 2 à 5 plans ; le total correspond à la durée du script.
- Chaque plan a un cadrage, un objectif, une caméra, une image, un mouvement, un dialogue (ou aucun) et des effets sonores.
node engine/gen.mjs estimate <slug>.
Logique de continuité (règles strictes, appliquées par engine/continuity.mjs)
- Chaque scène déclare
seats. Chaque personnage obtient une place et un côté d'écran :{ "rex": { "place": "le COUSSIN DROIT du canapé", "side": "right" } }. Les prompts répètent ceci comme un VERROU DE PLACE dans chaque plan, y compris les plans larges. - Personne ne change de place hors champ.
- Si l'histoire nécessite qu'un personnage soit ailleurs, ajoutez un plan dont
movesindique où et comment, et dont l'action montre le mouvement :"moves": { "rex": { "to": "le tapis", "side": "right", "how": "saute du canapé" } }. - Le contrôle du plan échoue si une scène ultérieure commence un personnage à un nouvel endroit sans ce plan.
- Si l'histoire nécessite qu'un personnage soit ailleurs, ajoutez un plan dont
- Les plans individuels sont des plans sales. Lorsque des personnages partagent un meuble, un gros plan garde le bord du partenaire (fourrure, oreille, épaule) de leur côté d'écran. Le siège à côté du sujet n'est jamais vide.
- Après le tournage, exécutez
node engine/continuity.mjs <slug>.- Un juge de vision lit une image par plan et la compare avec le plan : meubles/sol, côté, téléportation, jour ou nuit, siège vide du partenaire, pièce, garde-robe.
- Une prise défaillante ne peut pas être montée (
edit.mjsla refuse). Relancez-la avec une note nommant la violation.