film-audit: kein Film verlässt das Haus ohne diese Prüfungen
Wo das Kit lebt: führe jeden Befehl dieses Skills aus dem Ordner
reels-maker(dem Klon von github.com/thativanng/reels-maker, dertemplate/undtools/enthält). Wenn das Projekt keinen hat, richte ihn zuerst ein, indem du der SETUP.md dieses Repos folgst.
Die Regel: Ein Film geht nur dann zur Person, wenn (1) die Kollisionsprüfung „NO COLLISIONS“ meldet, (2) für jede „Liegt X über einem Gesicht“-Sorge eine Pixelzahl vorliegt und (3) ein unabhängiger Auditor mit „SIGN-OFF“ abgeschlossen hat und kein „MUST-FIX“ offen ist. Ein Blick mit 1 fps durch den Erbauer ist eine Skizzenprüfung, kein Gate. Eine Korrektur verschiebt andere Dinge (einmal schob das Verschieben einer Sprechblase diese aus dem Bild), daher bekommt jede Fehlerbehebung eine enge Nachprüfung der betroffenen Fenster.
Gate 1 · Kollisionen in 3D (node tools/collide.mjs)
- Die Seite stellt
window.collide(t)bereit. Es vergleicht die Bounding-Boxes jedes Meshes in AUD_M (Dinge, die sich bewegen) gegen AUD_S (Dinge, die stehen) und gegeneinander, nachdem jede Box um 0,03 verkleinert wurde. - Jeden neuen Beweger und jedes neue feste Objekt registrieren, sonst kann die Prüfung es nicht sehen. Geworfene Kisten, getragene Becher, vorbeifliegende Würfel und schwebende Viren zählen alle als Beweger.
- Kontakte, die beabsichtigt sind (ein Becher in einer Hand), werden namentlich in
HELDausgeschlossen. - Meshes unter 0,12 Einheiten Höhe (Boden-Markierungen, dünne Platten) werden übersprungen, damit ein flaches Objekt keinen Fehlalarm auslöst. Ein echter dünner Beweger braucht seine eigene Prüfung.
- Führe es mit 40 fps aus (
STEP=.025, Standard). Bei 10 fps wurden zwei Ein-Frame-Kontakte übersehen: geworfene Kisten durch die Köpfe zweier Personen. - Ausgabe ist eine Zeile pro Paar:
von–nach s A × B Tiefe (Frames). Nur beiNO COLLISIONSausliefern.
Gate 2 · Pixel auf dem Bildschirm (node tools/probe.mjs)
Manche Defekte berühren sich in 3D nie. Ein Flaschendeckel 3 m hinter dem Kopf von jemandem kann trotzdem aussehen, als wachse er aus den Haaren heraus. Miss den Bildschirm:
node tools/probe.mjs "4.4,4.6,4.8" "D.CUPS[0]" "head" # Überlappung eines Bechers und des Heldenkopfes, in Pixeln
node tools/probe.mjs "24.5,26" "head" "pill" # liegt der Kopf hinter dem Untertitel?
node tools/probe.mjs "3.0,3.5" "D.GUESTS[1].v.root" # ein Rechteck: ist diese Person innerhalb des Bildrahmens?
- Lies
overlap: [x, y](beide > 0 bedeutet übereinander),gapYundinside(A liegt vollständig in B). - Auf jeder Seite, auch 2D:
sel:<CSS-Selektor>ist das, was ein Element tatsächlich malt (seine Buchstaben, Zeile für Zeile gemessen, plus Hintergrund, Rahmen oder Bild) undsafeist der freizuhaltende Kern der Plattform (auswindow.FILM.safe). Jedes Wort auf dem Bildschirm muss bei jedem Beatinside: truegegensafesein:node tools/probe.mjs --page reels/<name>/page.html --format 9:16 "2,6.4,10.4" "sel:.title,.line,.kicker,.handle,.cap" "safe" - Um einen Kamera-Key auszuprobieren, ohne die Datei zu bearbeiten, übergib
PRE(es wird vor jedem Durchlauf ausgeführt):PRE="window._CK.find(k => k[0] === 23.8)[1] = window._dbg.A(72.2, 10, 31, 72, 5.2, 1.5)" node tools/probe.mjs "25,28" "head". - Die Boxen sind konservativ (eine Bounding-Box ist größer als die Form), daher kann eine Überlappung von wenigen Pixeln in der Realität klar sein. Die Entscheidung des Auditors zählt.
Überprüfe jeden dieser Punkte mit einer Zahl, bevor du renderst:
- Jedes Wort, jede Bildunterschrift und jedes Logo innerhalb der freizuhaltenden Zone der Plattform (
safe, aus template/formats.json). Bei organischen 9:16-Reels ist das das mittlere Band (die App bedeckt das untere Viertel und die rechte Buttonschiene); bei einem bezahlten Reel alles oberhalb der unteren 35 % - Alles in der Nähe eines Gesichts: Kappen, Bildschirme hinter dem Kopf (der Heiligenschein), vorbeifliegende Würfel, Requisiten am Mund
- Der Held gegen die Untertitelleiste während Kamerafahrten
- Die Sprechblase gegen den Bildrand und nahe Requisiten
- Personen und Fahrzeuge gegen den Bildrand (≥24 px ist sicher)
- Fliegende Dinge (geworfene Kisten, Münzen, Virencluster) gegen jeden Kopf, den sie passieren
Gate 3 · Der unabhängige Auditor
Starte einen FRISCHEN Agenten (niemals den Erbauer, niemals einen, der den Bau gesehen hat) mit references/auditor-brief.md.
- Er liest die gerenderte MP4, nicht die Live-Seite:
ffmpeg -i out/film.mp4 -vf fps=2 …, dann mit Zeitstempeln versehene Blätter (tools/sheet.py). - ≥2 fps für den gesamten Film, ≥4 fps für jedes geänderte Fenster, Bild für Bild (30 fps) an Kontaktstellen wie Aufnahme oder Übergabe.
- Er antwortet pro Element: FIXED / NOT FIXED / REGRESSED / NEW, eingestuft MUST-FIX / NICE-TO-FIX, dann eine Zeile:
SIGN-OFFoderNOT. - Eine erneute Prüfung nach Korrekturen ist eng: nur die Fenster, die die Korrekturen betroffen haben, plus einen kurzen Regressionstest. Es kann günstiger sein, einen frischen Agenten zu starten, als einen fortzusetzen, der seine gesamte Geschichte mit sich trägt.
Was Prüfer immer wieder fanden (zuerst danach suchen)
- Etwas, das einen Kopf berührt oder dahinter liegt: ein Flaschendeckel im Haar, Stecknadeln hinter dem Kopf, ein Monitor, der hinter dem Kopf leuchtet, ein Würfel quer über ein Kinn
- Dinge, die durch Dinge gehen: Lastwagen durch Gebäude und durch einander, ein Van, der unter einem Schreibtisch parkt
- Logik: ein LKW, der mit der Nase voran andockt, der zweite LKW, der den ersten überholt, eine Tasse, die auf einer Tischkante stehen gelassen wird und fallen sollte
- Personen: zwei Personen, die so nah stehen, dass ihre Köpfe zu einer Figur verschmelzen; jemand zur Hälfte außerhalb des Bildes
- Bewegung: ein Ein-Frame-Sprung (Teleport), Dinge, die in 0,1 s durch den Boden fallen, der Held, der zwischen Szenen verschwindet
- Wörter: Text in einer Zone, die von den Schaltflächen der Plattform verdeckt wird, chinesische Zeichen, die mitten im Wort gebrochen sind, ein Banner, das nicht mit der Szene Schritt hält, gemischte britische/amerikanische Rechtschreibung, eine Zahl, die niemand verteidigen kann, der Untertitel, der den Helden verdeckt
- Ton: Rauschen, ein Cue, der unter der Musik unhörbar ist, Cues, die nach einem eingefügten Beat abdriften