Communitygithub.com

Daham0/blender-previs-one-take

一镜到底白模预演工作流。用户给一张参考图或一句描述,技能直接产出 3D 白模运镜预演视频;与用户逐版用大白话修改确认后,再按白模实测的相机运动写详细视频提示词;最终交付「白模视频(运动参考)+ 提示词」,一起交给 Seedance 2.5 等视频模型出成片。

Qu'est-ce que blender-previs-one-take ?

Cette compétence pour agents IA (comme Claude Code) permet de produire une prévisualisation en maquette blanche 3D d'un plan-séquence à partir d'une image de référence ou d'une description textuelle. Elle est destinée aux créateurs de vidéos IA qui souhaitent contrôler précisément les mouvements de caméra (circling, suivi, ascension, apesanteur, FPV) sans recourir à des prompts aléatoires. Le flux comprend six étapes ordonnées : réception du brief, détection de l'environnement (Blender haute précision ou Three.js fallback), génération de la première maquette vidéo, itération en langage naturel, validation automatique (monotonie, sortie de champ, interpénétration, plafond), puis rédaction du prompt final. Le skill intègre des scripts Blender pour la construction de scène, le rendu, l'export de données caméra et la validation. La livraison finale se compose de la vidéo maquette (référence de mouvement) et d'un prompt structuré en six sections, prêt à être injecté dans Seedance 2.5 ou un autre modèle vidéo. L'interface utilisateur est en langage courant, sans jargon technique.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Daham0/blender-previs-one-take/tree/HEAD

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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)

  1. 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").
  2. 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".
  3. 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)

PhaseCe que fait l'utilisateurCe que vous devez livrerCondition de validation
① Réception du besoinImage de référence / description en une phraseReformulation en 3 phrases "j'ai compris la scène", incluant le sujet, la direction de la caméra, et si flottement/apesanteurL'utilisateur dit "oui" ou modifie une phrase ; confirmation du format/durée
② Détection de l'environnementChoix binaire (installer / ne pas installer)Résultat de check_blender.py + explication de la voie en une phraseVoie claire, on entre dans la branche A ou B
③ Première vidéo maquetteRegarder la vidéomp4/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éeSuggérer des modifications en langage courantNouvelle version v2/v3… + 1 ligne d'explication du changementChaque itération ne modifie qu'un point ; approbation explicite de l'utilisateur
⑤ Validation + rédaction du promptConfirmer que le rendu est correctQuatre validations RESULT: PASS + prompt en six sectionsSi validation non PASS, pas de rédaction de prompt
⑥ Livraison finaleRécupérer les éléments pour le renduVidé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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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é.
  6. 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 :

  1. 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 ;
  2. 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 JSON
    • scripts/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 :

  1. É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°".
  2. 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.
  3. 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èneCause racineTraitement
La caméra oscille latéralement, va-et-vientCourbe d'angle polaire non monotone / rebond d'interpolationParamétrisation monotone + vérification du signe de la différence première + interpolation LINEAR
Le sujet sort du cadre en cours de mouvementLe sujet s'élève mais la caméra ne suit pasSynchroniser 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 traversentPersonne et siège décollent en même tempsLa 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 tempsL'équipement monte d'abord à environ 1,3 m en vol stationnaire, la table après 2–3 s
La pièce flottePoint de regard ou relation parent mal définisNe 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 grisLa 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érenceLa première phrase n'insiste pas sur la reproductionPremiè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'imageCoordonnées estiméesRevenir à 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

ScriptParamètres clésDescription
check_blender.py--jsonDé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 --csvSans --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 --tolCode de sortie 0=PASS 1=FAIL ; quatre vérifications
export_cam_data.py--out --center --keysSortie [{f,cam,rad,ang,pitch,objets:[x,y,z]}]
render_previs.py--out --res --samples --fps --start --end --engineD'abord petit échantillon 16 images, puis vidéo complète
install_blender.ps1-TargetDir -Version `-Mirror autoofficial

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

ÉtapeRésultat
Détection de BlenderOK (4.5.15 LTS portable, disque D)
Construction de la scène + trajectoire + animation de lévitationOK (240 images @24fps, fichier CSV de coordonnées)
Quatre validationsPASS : sortie cadre 0 (960 détections NDC), nouvelle interpénétration 0, sortie plafond 0, trois monotonies vraies
Export des données image par imageOK (JSON 240 images)
Rendu de prévisualisationOK (EEVEE_NEXT, échantillon 16 images mp4 normal)
Script d'installationOK (-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.

Skills associés