Was macht agentvfx?
Du führst Regie; die Engine rendert. Du schreibst niemals Shader-Code für einen Clip. Du wählst eine Vorlage, eine Voreinstellung und einige wenige Parameter aus, schreibst sie in eine FX-Partitur (JSON), und die Engine rendert sie in headless Chrome (WebGL2), codiert H.264 mit ffmpeg und prüft sie auf Blitze.
Jeden Befehl von diesem Ordner aus ausführen (dem Skill-Wurzelverzeichnis). Pfade innerhalb einer Partitur werden relativ zum aktuellen Verzeichnis aufgelöst.
1. Maschine überprüfen
node scripts/vfx.mjs doctor
ok: true bedeutet, dass Chrome mit GPU WebGL2 und ffmpeg gefunden wurden. Andernfalls blockers lesen und dem Benutzer mitteilen, was zu installieren ist (CHROME_PATH, FFMPEG_PATH). Blender 5.x wird nur für Platten benötigt (BLENDER_PATH).
2. Look auswählen
node scripts/vfx.mjs list # Familie, Vorlagen-ID, Eingabeart, Voreinstellungen
node scripts/vfx.mjs list --json # mit Beschreibungen
input gibt an, was eine Vorlage benötigt: generative (nichts), footage (input.video) oder either. Mit einer Voreinstellung beginnen; pro Runde maximal zwei oder drei Parameter ändern. Dem Benutzer das Ergebnis zeigen, bevor weitere Änderungen erfunden werden.
3. Partitur schreiben
Schema: 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" }
durationSecist 3–5.seedmacht den Render wiederholbar.paramsüberschreiben die Voreinstellung (Namen und Bereiche stammen aus derfx.jsonder Vorlage).bindingsbinden einen Parameter an ein Audio-Feature (bass,onset,beat,bands.N, …) mitgain,offset,attackMs,releaseMs. Attack auf dem Onset-Frame halten und Release kurz halten (ca. 60 ms): schnell wirkt professionell, starkes Glätten wirkt wie eine Demo.hitsfeuern eine zusätzliche Vorlage auf einen Onset oder Beat;cutsschneiden den Stack hart auf einen Beat;stackschichtet bis zu zwei Vorlagen über die Basis.labelsundtextStylelegen die Textebene der Engine fest (installierte Schriftarten nach Namen; generischer Fallback bei Fehlen).
Ohne Rendern prüfen:
node scripts/vfx.mjs validate my-score.json
4. Rendern und anschauen
node scripts/vfx.mjs render my-score.json --out out/my-lattice --width 640 --height 360
Zuerst klein in der Vorschau (640x360), dann die Größe für das Finale erhöhen. Der Befehl gibt JSON mit dem Filmpfad, dem Blitzergebnis und den Standbildern aus. Öffne stills/sheet.png und jeden Streifen, bevor du den Clip jemandem beschreibst. Ein Render, den du nicht angesehen hast, ist nicht fertig.
5. Blitzsicherheit
Jeder Render trägt eine Blitzprüfung (allgemeine und rote Blitze pro Sekunde, WCAG 2.3.1-ähnlich). Der Standardmodus stage behält die volle Intensität und schreibt SAFETY.txt, wenn Grenzen überschritten werden. "safety": { "mode": "broadcast-safe" } erzwingt die Grenzen; "safeVariant": true fügt film.safe.mp4 neben der Vollversion hinzu. Teile dem Benutzer klar mit, wenn ein Clip die Grenzen überschreitet.
6. Hintergrundplatten (optional, Blender)
node scripts/plate.mjs --scene terminalcore --shot gallery --out out/plate --width 640 --height 360 --seconds 4
Prozedurale Szenen, keine heruntergeladenen Assets. Verwende das film.mp4 der Platte als input.video. --quality final ist langsam (ca. 2 Minuten pro 1080p-Frame); vor dem Start nachfragen. Siehe references/plates.md.
7. Stille Loops
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
Spielt den Clip vorwärts und dann rückwärts ab (nahtlos, keine Audiospur) und prüft den zweimal abgespielten Loop auf Blitze. Exit-Code 3 bedeutet, dass der Loop die Blitzgrenzen überschreitet. Das Umkehren kann die Blitze um einen Wendepunkt herum verdoppeln; --hold 6 pausiert sechs Frames an jedem Wendepunkt, was einen solchen Loop oft wieder innerhalb der Grenzen bringt. Eine rote Änderung, die beim Umkehren zu einem roten Blitz wird, kann so nicht behoben werden – dies mitteilen und den Benutzer entscheiden lassen.
8. Live auf einer Webseite
node scripts/export-web.mjs lattice collage --out out/web
Schreibt eine eigenständige Laufzeitumgebung, die ausgewählten Vorlagen und eine Demoseite. Beachtet prefers-reduced-motion. Siehe references/web.md.
Regeln
- Verschicke oder committe niemals Musik, für die du keine Verbreitungsrechte hast. Die Bewegung eines Renders kann von einem Track stammen, während der veröffentlichte Loop stumm bleibt.
- Referenzen inspirieren; sie werden nicht kopiert. Reproduziere keinen Frame, kein Logo, keine Marke oder keine Schriftartdatei aus der Arbeit eines anderen.
- Bündle keine Schriftartdateien. Benenne installierte Schriftarten; sie fallen zurück, wenn sie fehlen.
Mehr
references/template-format.md— Wie eine Vorlage aufgebaut ist (fx.json, Durchläufe, Voreinstellungen, Textebene).references/plates.md— Blender-Platten.references/web.md— Web-Runtime-API.