Compétence : Plan-séquence en maquette blanche 3D
En une phrase : l'utilisateur fournit une image ou une description, cette compétence produit une vidéo en maquette blanche ; une fois la maquette validée, elle rédige le prompt, et la vidéo maquette sert de référence de mouvement, le tout étant envoyé au modèle vidéo. Les longs mouvements de caméra ne reposent pas sur des prompts aléatoires, mais sur un calcul précis du trajet de la caméra, vérifié visuellement par l'utilisateur.
0. Mode opératoire (à l'extérieur, on ne présente que ces trois étapes)
- L'utilisateur fournit une image de référence ou une description ("10 secondes, contourne-moi par derrière jusqu'au côté avant, les objets sur la table flottent d'abord").
- La compétence produit une vidéo de prévisualisation 3D en maquette blanche, les deux parties itèrent jusqu'à ce que l'utilisateur dise "c'est exactement ça".
- Une fois validé, deux éléments sont livrés : la vidéo de prévisualisation en maquette blanche + le prompt vidéo détaillé, le tout envoyé à Seedance 2.5 pour produire le rendu final.
Ce qui se passe en interne (scène, coordonnées, validation) relève de la compétence, ne demandez pas de détails techniques à l'utilisateur. Les règles d'entrée complètes, les questions obligatoires et la table de traduction en langage courant se trouvent dans references/00-flow-intake-iteration.md, qui est le document maître du flux ; lisez-le à chaque déclenchement.
1. Processus principal en six phases (ordre impératif)
| Phase | Ce que fait l'utilisateur | Ce que vous devez livrer | Condition de validation |
|---|---|---|---|
| ① Réception du besoin | Image de référence / description en une phrase | Reformulation en 3 phrases "j'ai compris la scène", incluant le sujet, la direction de la caméra, et si flottement/apesanteur | L'utilisateur dit "oui" ou modifie une phrase ; confirmation du format/durée |
| ② Détection de l'environnement | Choix binaire (installer / ne pas installer) | Résultat de check_blender.py + explication de la voie en une phrase | Voie claire, on entre dans la branche A ou B |
| ③ Première vidéo maquette | Regarder la vidéo | mp4/webm lisible + 3–4 images clés + "dites directement ce qui ne va pas" | La vidéo est réellement produite et livrée. Fournir seulement une table de coordonnées = manquement |
| ④ Itération dialoguée | Suggérer des modifications en langage courant | Nouvelle version v2/v3… + 1 ligne d'explication du changement | Chaque itération ne modifie qu'un point ; approbation explicite de l'utilisateur |
| ⑤ Validation + rédaction du prompt | Confirmer que le rendu est correct | Quatre validations RESULT: PASS + prompt en six sections | Si validation non PASS, pas de rédaction de prompt |
| ⑥ Livraison finale | Récupérer les éléments pour le rendu | Vidéo maquette + prompt + instructions de téléversement (vidéo1=réf mouvement, image1=réf visuelle) | Toutes les coordonnées du prompt proviennent du JSON de mesure |
Les phases ③④ peuvent faire plusieurs allers-retours ; c'est la valeur principale de cette compétence : corriger les problèmes de caméra en 3D, pas en tirant au sort avec le modèle vidéo.
2. Six règles absolues
- Règle d'ordre : construire la scène → vidéo maquette → confirmation utilisateur → puis rédiger le prompt. Rédiger le prompt avant que l'utilisateur n'ait vu la vidéo, c'est du travail perdu.
- Le prompt ne s'appuie que sur l'image de référence pour l'aspect visuel. La maquette blanche n'est pas une référence visuelle, elle sert uniquement à verrouiller le mouvement, le timing et les coordonnées ; la qualité d'image, le style, l'éclairage et les couleurs se réfèrent uniquement à l'image de référence.
- Mouvement de caméra unidirectionnel et continu. L'angle polaire doit être strictement croissant ou décroissant, pas de va-et-vient ; un retour en arrière = échec, ajuster la courbe.
- Le sujet ne sort jamais du cadre. Vérification projection par image, le NDC du sujet doit rester dans le cadre de sécurité ; quand le sujet s'élève, la caméra suit en inclinaison.
- Zéro interpénétration. Si la distance entre deux ensembles d'objets en mouvement, à une image quelconque, est inférieure au seuil, c'est un échec ; résoudre par "d'abord se dégager puis s'élever", "d'abord les objets légers puis les lourds", pas en empilant la densité.
- L'utilisateur ne parle qu'en langage courant. L'utilisateur dit "plus haut" ou "la chaise touche la jambe", vous traduisez en paramètres et ne modifiez que cela ; pas d'explication sur les angles polaires, NDC, AABB.
3. Détection de l'environnement et choix de branche (Astuce 1 : Détection + modélisation)
check_blender.py
├─ Installé → Branche A (Blender, précision maximale, export de données image par image)
├─ Non installé
│ ├─ L'utilisateur accepte l'installation → Guide pour version portable (05-blender-setup.md) → Branche A
│ ├─ L'utilisateur a une autre version/chemin → Remplir le chemin → Branche A
│ └─ L'utilisateur refuse (ou environnement sans droits, manque de temps) → Branche B (maquette web Three.js)
└─ La branche B suit aussi les six phases complètes, mais ne fournit qu'une "référence de mouvement" ; validation et rédaction du prompt sont identiques
Façon de parler pour guider l'installation — un seul point de décision à la fois, pas de longs textes :
Blender n'est pas installé, deux options :
- J'installe la version portable (environ 300 Mo, installation hors disque système, sans écriture dans le registre ni occupation du disque C, suppression complète possible) — précision maximale, export de coordonnées image par image ;
- Sans installation, je génère la vidéo maquette via Three.js dans le navigateur — quelques minutes pour voir le mouvement, précision légèrement inférieure. Que choisissez-vous ?
L'utilisateur choisit 1 → suivre references/05-blender-setup.md ; choisit 2 → suivre references/06-threejs-fallback.md.
4. Détails des phases
① Réception du besoin
Lire references/00-flow-intake-iteration.md §1–§3 : déterminer si l'entrée est une image, une description, ou les deux. Les questions obligatoires sont seulement trois (durée/format, orientation du sujet, intention de la caméra), deviner ce qui peut l'être, le reste utilise les valeurs par défaut du modèle dans knowledge/kb-levitation-office.md. Si l'utilisateur dit "comme tu veux", utiliser les valeurs par défaut pour la première version, le laisser regarder et critiquer.
③ Première vidéo maquette (Astuce 3 : d'abord la maquette)
Construire d'abord la maquette blanche statique et définir les coordonnées du monde (1 unité = 1 mètre, origine au sol) → trajectoire de caméra paramétrée → rendu basse résolution 480P → vidéo + images clés. À ce stade, ne pas rédiger le prompt. Critères de validation : vidéo lisible, pas d'image noire, sujet dans le cadre, murs et sol de la pièce immobiles.
④ Itération dialoguée
Utiliser la table de traduction de 00 §4 pour traduire les paroles de l'utilisateur en paramètres, ne modifier qu'un seul point à la fois, produire une nouvelle version avec une ligne d'explication (v2 : rayon 3.45→2.95, le sujet remplit mieux le cadre à la fin). Convention de nommage des versions selon 00 §5.
⑤ Validation finale et rédaction du prompt (Astuce 2 : vérification automatique + Astuce 4 : écrire le prompt en regardant la maquette)
Les quatre validations (monotonie de l'angle polaire / sortie du sujet / interpénétration entre groupes / sortie par le plafond) doivent toutes être RESULT: PASS, puis exporter le JSON de mesure image par image, puis rédiger le prompt en six sections. Chaque coordonnée dans le prompt ne peut provenir que de ce JSON, pas de valeurs estimées. Norme de rédaction dans references/04-prompt-format.md.
⑥ Livraison finale (interface avec Seedance 2.5)
Selon le format de 00 §6 : vidéo maquette marquée comme référence de mouvement/position/timing, image de référence marquée comme seule référence visuelle, la première phrase du prompt insiste sur "reproduire strictement le mouvement de caméra et l'ordre de décollage de la vidéo de référence", la durée alignée avec la maquette, les mouvements de caméra découpés par segments de 2~3 secondes.
5. Branche A : Manuel d'exécution Blender
- Normes de scène et de coordonnées :
references/01-scene-spec.md - Normes de conception de mouvement de caméra :
references/02-camera-motion.md - Timing de lévitation et anti-interpénétration :
references/03-levitation-timing.md - Installation et connexion :
references/05-blender-setup.md - Scripts :
scripts/build_scene_template.py— squelette de scène en maquette blanche (pièce, table, double écran, chaise, personnage en blocs)scripts/render_previs.py— rendu basse résolution 480P (EEVEE, sans matériau)scripts/export_cam_data.py— export image par image de caméra / point de regard / angle d'élévation / position z des objets vers JSONscripts/validate_trajectory.py— quatre validations (monotonie / sortie du cadre / interpénétration / sortie par le plafond)
Séquence en ligne de commande (fonctionne sur la machine locale, $BLENDER est le chemin absolu de blender.exe, adapter les chemins selon le projet) :
# 1 Détection
python scripts/check_blender.py --json
# 2 Construction de la scène + écriture de la trajectoire orbitale et de l'animation de lévitation (--orbit 1), et export du fichier de coordonnées
"$BLENDER" -b --python scripts/build_scene_template.py -- \
--orbit 1 --center 0.0 0.15 --dur 10 --fps 24 \
--a0 186 --a1 300 --r0 3.45 --r1 2.45 --z0 0.78 --z1 1.20 --l0 1.05 --l1 1.45 \
--out "Z:/project/scene.blend" --csv "Z:/project/coords.csv"
# 3 Quatre validations (obligatoires avant validation finale), doivent être RESULT: PASS
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/validate_trajectory.py -- \
--center 0.0 0.15 --ceiling 2.75 \
--keys Person_Head,Person_Torso,Desk_Top,Monitor_H_Body \
--moving Minion_,Monitor,PC_Case,Keyboard,Mouse,Person_,Desk_,Chair_
# 4 Export des données image par image (uniquement ces données pour le prompt)
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/export_cam_data.py -- \
--out "Z:/project/cam.json" --center 0.0 0.15 --keys Person_Head,Desk_Top,Chair_Seat
# 5 Rendu de prévisualisation : d'abord un petit échantillon de 16 images pour vérifier le pipeline, puis la vidéo complète
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/render_previs.py -- \
--out "Z:/project/previs.mp4" --res 960x540 --samples 4 --start 1 --end 240
Pour les itérations, il suffit de relancer l'étape 2 (modifier les paramètres) → étape 5 (produire la vidéo), puis après validation finale, faire les étapes 3 et 4.
--keys ne remplit que les points clés du sujet (tête, torse, dessus de table, écran principal) ; les accessoires à moins d'1 m du sujet (assise de chaise etc.) seront inévitablement hors cadre, c'est un résultat physique.
--moving ne remplit que les préfixes des objets qui se déplacent ; sinon, pas de détection d'interpénétration ; les objets sont groupés par première partie du nom, le contact au sein d'un même groupe n'est pas compté.
6. Branche B : Maquette web Three.js
- Schéma et limitations :
references/06-threejs-fallback.md - Exécutable directement :
scripts/threejs_previs.html(fichier unique, CDN three, avec lecture de trajectoire, bascule perspective/vue de dessus, export JSON, enregistrement webm) - Limitations : personnages approximatifs en blocs, matériaux entièrement blancs, ne peut valider que la direction du mouvement, la relation de composition et le timing, pas l'éclairage ni la texture.
- Sortie : webm + captures d'images clés, coordonnées exportées par les mêmes paramètres de la page.
7. Normes de livraison du prompt (Astuce 4)
Six sections fixes, toutes obligatoires : 【Generation Unit】 【Références】 【Continuité】 【Narration et sons】 【Chronologie avec coordonnées】 【Prompts négatifs】.
Trois exigences strictes :
- Écrire en regardant la maquette, pas au hasard : chaque phrase de mouvement de caméra doit pouvoir renvoyer au timecode de la maquette, par exemple "0–2,5s : commence derrière le dos du sujet, à gauche, caméra à 0,78 m de haut, rayon 3,45 m, angle polaire 186°, inclinaison 3,7°".
- Distinguer les rôles des références : la vidéo maquette ne verrouille que le mouvement, l'image de référence verrouille l'aspect visuel, les deux phrases doivent être réalistes.
- Rédiger les anti-interpénétration sous forme de phrases de cause à effet, pas "faites attention à ne pas traverser".
Techniques d'écriture, structures de phrases, exemples d'erreurs, causes de défaillance courantes : voir references/04-prompt-format.md ; paramètres réels du projet : voir knowledge/kb-levitation-office.md (réutilisables comme valeurs de modèle).
8. Dépannage rapide des problèmes courants
| Phénomène | Cause racine | Traitement |
|---|---|---|
| La caméra oscille latéralement, va-et-vient | Courbe d'angle polaire non monotone / rebond d'interpolation | Paramétrisation monotone + vérification du signe de la différence première + interpolation LINEAR |
| Le sujet sort du cadre en cours de mouvement | Le sujet s'élève mais la caméra ne suit pas | Synchroniser la position z de la caméra et du point de regard avec un coefficient de suivi de 0,8–0,95 |
| Table/chaise et personnage se traversent | Personne et siège décollent en même temps | La personne décolle d'abord, le siège avec un retard de 0,4–0,7 s, et d'abord se dégager horizontalement avant de s'élever |
| Équipement et table se heurtent | Équipement et table décollent en même temps | L'équipement monte d'abord à environ 1,3 m en vol stationnaire, la table après 2–3 s |
| La pièce flotte | Point de regard ou relation parent mal définis | Ne déplacer que le groupe du sujet en z, murs/sol/plafond immobiles |
| Le personnage se retourne, visage déformé | Orientation non verrouillée | 【Références】 écrire fixement dos/dos-latéral ; prompts négatifs : retournement, visage, gros plan |
| Le rendu ressemble à un modèle 3D gris | La maquette blanche est prise comme référence visuelle | 【Références】 préciser "la maquette blanche n'est qu'une référence de mouvement" ; style fixé à photographie réaliste |
| Le modèle ignore complètement la vidéo de référence | La première phrase n'insiste pas sur la reproduction | Première phrase : "reproduire strictement le mouvement de caméra et l'ordre de décollage de la vidéo de référence", mouvement découpé en segments de 2–3 s |
| Les coordonnées du prompt ne correspondent pas à l'image | Coordonnées estimées | Revenir à l'étape ⑤ et prendre les valeurs du JSON de mesure, interdiction de remplir à la main |
9. Liste de vérification pour une livraison de qualité
- L'utilisateur a fourni une image de référence ou une description, et a confirmé "j'ai compris la scène"
- La première vidéo maquette a été réellement produite et livrée (pas seulement des coordonnées)
- Les versions itératives sont numérotées avec une explication du changement, la version finale a été explicitement approuvée par l'utilisateur
- Les quatre validations
RESULT: PASS - L'image de référence est désignée comme @image1 dans le prompt, la vidéo maquette comme référence de mouvement
- La chronologie est découpée par secondes, chaque segment a "position départ → position fin + point de regard + inclinaison + rayon"
- Le timing de léviation précise qui vole en premier, qui vole ensuite, hauteur de montée, hauteur finale des couches
- La logique anti-interpénétration est rédigée sous forme de phrases causales
- Les prompts négatifs couvrent : orientation et visage du personnage, ajout/suppression et orientation de l'équipement, interpénétration et chute, dérive de la pièce, retournement de la caméra, saut de style, sous-titres et filigranes
- La livraison précise "la prévisualisation ne valide que le mouvement, l'aspect visuel est basé sur l'image de référence" et fournit les instructions de téléversement
10. Aide-mémoire des paramètres de script
| Script | Paramètres clés | Description |
|---|---|---|
check_blender.py | --json | Détection en lecture seule ; sortie found/path/source/version |
build_scene_template.py | --orbit 1 --center cx cy --dur --fps --a0 --a1 --r0 --r1 --z0 --z1 --l0 --l1 --out --csv | Sans --orbit : scène statique uniquement ; avec : écriture image par image de la caméra et des images clés de léviation (LINEAR) |
validate_trajectory.py | --center --ceiling --keys --moving --margin --tol | Code de sortie 0=PASS 1=FAIL ; quatre vérifications |
export_cam_data.py | --out --center --keys | Sortie [{f,cam,rad,ang,pitch,objets:[x,y,z]}] |
render_previs.py | --out --res --samples --fps --start --end --engine | D'abord petit échantillon 16 images, puis vidéo complète |
install_blender.ps1 | -TargetDir -Version `-Mirror auto | official |
Les paramètres sont toujours placés après -- pour être transmis au script Python.
11. Présentation externe (réponse à "à quoi sert cette compétence ?")
Donnez-lui une image de référence ou une description, elle construit d'abord votre mouvement de caméra en maquette blanche 3D, vous la regardez, vous modifiez jusqu'à satisfaction, puis elle rédige le prompt, et la vidéo maquette et le prompt sont envoyés ensemble à Seedance 2.5 pour produire le rendu. Détection de l'environnement, quatre validations automatiques, prévisualisation en maquette blanche, rédaction du prompt en regardant le mouvement : tout est inclus. Que ce soit un cercle, une ascension ou une apesanteur, le mouvement est fluide et sans interpénétration soudaine. Avec cette compétence pour plan-séquence, les longs mouvements de caméra sont redoutablement stables – pour faire de la vidéo IA, a-t-on encore besoin de passer des heures à apprendre des prompts alchimiques ?
12. État d'auto-vérification de cette compétence
| Étape | Résultat |
|---|---|
| Détection de Blender | OK (4.5.15 LTS portable, disque D) |
| Construction de la scène + trajectoire + animation de lévitation | OK (240 images @24fps, fichier CSV de coordonnées) |
| Quatre validations | PASS : sortie cadre 0 (960 détections NDC), nouvelle interpénétration 0, sortie plafond 0, trois monotonies vraies |
| Export des données image par image | OK (JSON 240 images) |
| Rendu de prévisualisation | OK (EEVEE_NEXT, échantillon 16 images mp4 normal) |
| Script d'installation | OK (-DryRun testé : officiel 403 → Aliyun 4.5.16, environ 380 Mo) |
Les paramètres par défaut du modèle se trouvent dans knowledge/kb-levitation-office.md, directement utilisables comme point de départ pour un nouveau projet.