agentvfx
Vous dirigez ; le moteur effectue le rendu. Vous n'écrivez jamais de code de shader pour un clip. Vous choisissez un modèle, un préréglage et quelques paramètres typés, vous les écrivez dans une partition FX (JSON), et le moteur effectue le rendu dans Chrome headless (WebGL2), encode en H.264 avec ffmpeg, et l'audite pour les flashes.
Exécutez chaque commande depuis ce dossier (la racine de la compétence). Les chemins dans une partition sont résolus par rapport au répertoire courant.
1. Vérifier la machine
node scripts/vfx.mjs doctor
ok: true signifie que Chrome avec GPU WebGL2 et ffmpeg ont été trouvés. Sinon, lisez blockers et dites à l'utilisateur quoi installer (CHROME_PATH, FFMPEG_PATH). Blender 5.x n'est nécessaire que pour les fonds (BLENDER_PATH).
2. Choisir un look
node scripts/vfx.mjs list # famille, identifiant du modèle, type d'entrée, préréglages
node scripts/vfx.mjs list --json # avec descriptions
input indique ce dont un modèle a besoin : generative (rien), footage (input.video), ou either. Commencez par un préréglage ; modifiez deux ou trois paramètres au maximum par itération. Montrez le résultat à l'utilisateur avant d'en inventer plus.
3. Écrire la partition
Schéma : schemas/fx-score.schema.json. Minimal :
{ "version": 1, "template": "lattice", "preset": "vermilion-fine",
"input": { "video": "test-media/clip-01.mp4", "audio": "test-media/beat-132.mp3" },
"durationSec": 4, "seed": 47, "out": "my-lattice" }
durationSecest 3–5.seedrend le rendu reproductible.paramsremplace le préréglage (les noms et plages proviennent dufx.jsondu modèle).bindingslie un paramètre à une caractéristique audio (bass,onset,beat,bands.N, …) avecgain,offset,attackMs,releaseMs. Gardez l'attaque sur la trame d'onset et la relâche courte (environ 60 ms) : une réactivité vive donne un résultat professionnel, un lissage prononcé donne l'impression d'une démo.hitsdéclenche un modèle supplémentaire sur un onset ou un beat ;cutscoupe net la pile sur un beat ;stacksuperpose jusqu'à deux modèles sur la base.labelsettextStyleparamètrent la couche de texte du moteur (polices installées par nom ; fallback générique si absentes).
Vérifiez-la sans effectuer le rendu :
node scripts/vfx.mjs validate my-score.json
4. Effectuer le rendu et regarder
node scripts/vfx.mjs render my-score.json --out out/my-lattice --width 640 --height 360
Aperçu en petit d'abord (640x360), puis augmentez la taille pour le final. La commande affiche du JSON avec le chemin du film, le résultat du flash et les images. Ouvrez stills/sheet.png et chaque séquence avant de décrire le clip à quiconque. Un rendu que vous n'avez pas regardé n'est pas terminé.
5. Sécurité des flashes
Chaque rendu comporte un audit de flash (flashes généraux et rouges par seconde, style WCAG 2.3.1). Le mode par défaut stage conserve l'intensité maximale et écrit SAFETY.txt lorsque les limites sont dépassées. "safety": { "mode": "broadcast-safe" } applique les limites ; "safeVariant": true ajoute film.safe.mp4 à côté de la version complète. Dites clairement à l'utilisateur quand un clip dépasse les limites.
6. Fonds (optionnel, Blender)
node scripts/plate.mjs --scene terminalcore --shot gallery --out out/plate --width 640 --height 360 --seconds 4
Scènes procédurales, aucun asset téléchargé. Utilisez le film.mp4 du fond comme input.video. --quality final est lent (environ 2 minutes par trame 1080p) ; demandez avant d'en lancer un. Voir references/plates.md.
7. Boucles silencieuses
node scripts/loop.mjs out/my-lattice/film.mp4 reels/my-lattice.mp4 --preview reels/preview/my-lattice.webp --audit out/my-lattice/loop-flash.json
Joue le clip en avant puis en arrière (sans couture, sans piste audio) et audite les flashes de la boucle jouée deux fois. Le code de sortie 3 signifie que la boucle dépasse les limites de flash. Le sens inverse peut doubler les flashes autour d'un virage ; --hold 6 met en pause six trames à chaque virage, ce qui ramène souvent une telle boucle dans les limites. Un changement rouge qui devient un flash rouge en inversé ne peut pas être corrigé de cette façon — dites-le et laissez l'utilisateur décider.
8. En direct sur une page web
node scripts/export-web.mjs lattice collage --out out/web
Écrit un runtime autonome, les modèles choisis et une page de démonstration. Respecte prefers-reduced-motion. Voir references/web.md.
Règles
- N'expédiez jamais et ne commitez jamais de musique pour laquelle vous n'avez pas les droits de redistribution. Le mouvement d'un rendu peut provenir d'un morceau tandis que la boucle publiée reste silencieuse.
- Les références inspirent ; elles ne sont pas copiées. Ne reproduisez pas une trame, un logo, une marque ou un fichier de police provenant du travail de quelqu'un d'autre.
- Ne regroupez pas de fichiers de polices. Nommez les polices installées ; elles utilisent un fallback si elles sont absentes.
En savoir plus
references/template-format.md— comment un modèle est construit (fx.json, passes, préréglages, couche de texte).references/plates.md— fonds Blender.references/web.md— API du runtime web.