film-audit:未經這些檢查,影片不得外送
工具包所在位置: 請在
reels-maker資料夾(即 github.com/thativanng/reels-maker 的 clone,內含template/和tools/)中執行此技能的所有指令。如果專案中沒有此資料夾,請先按照該 repo 的 SETUP.md 進行設定。
規則: 影片只有在滿足以下三項條件時才能交給委託人:(1) 碰撞檢測結果為 NO COLLISIONS,(2) 每個「X 是否位於人臉上方」的疑慮都有具體像素數值,且 (3) 獨立審核員已簽核,且沒有任何 MUST-FIX 問題未解決。由建置者本人以 1 fps 瀏覽一遍只能算草稿檢查,並非正式關卡。每一次修復都可能連帶影響其他元素(例如移動對話框可能使其超出畫面邊緣),因此每次修復後都必須針對受影響的視窗進行狹義重檢。
閘門 1 · 3D 碰撞檢測(node tools/collide.mjs)
- 頁面會暴露
window.collide(t)。此函數會比較 AUD_M(會移動的物體)與 AUD_S(靜止物體)中每個網格的邊界盒,以及 AUD_M 中各網格之間的邊界盒,並在比較前將每個邊界盒縮小 0.03 單位。 - 必須註冊每個新的移動物體與靜止物體,否則檢測無法識別。投擲的箱子、拿著的杯子、經過的立方體以及飄浮的病毒都屬於移動物體。
- 原本就有意圖的接觸(例如手中的杯子)可透過名稱在
HELD中排除。 - 高度小於 0.12 單位的網格(如地板貼紙、道路標線、薄板)會被跳過,以避免扁平物體引發誤報。真正的薄型移動物體需要單獨檢查。
- 以 40 fps 執行(
STEP=.025,為預設值)。若以 10 fps 執行,曾漏掉兩個僅出現一幀的碰撞:投擲的箱子穿過兩個人的頭部。 - 輸出為每對物體一行:
from–to s A × B depth (frames)。僅在結果為NO COLLISIONS時才能輸出影片。
閘門 2 · 螢幕像素檢測(node tools/probe.mjs)
某些缺陷在 3D 空間中不會產生碰撞。例如,一個距離某人頭部 3 公尺的瓶蓋,看起來仍可能像從頭髮中長出來。請在螢幕上測量:
node tools/probe.mjs "4.4,4.6,4.8" "D.CUPS[0]" "head" # 杯子與主角頭部的重疊像素
node tools/probe.mjs "24.5,26" "head" "pill" # 頭部是否在字幕背景之後?
node tools/probe.mjs "3.0,3.5" "D.GUESTS[1].v.root" # 單個矩形:此人是否在畫面內?
- 讀取
overlap: [x, y](兩者皆 > 0 表示互相重疊)、gapY以及inside(A 完全位於 B 內部)。 - 在任何頁面(包括 2D 頁面)上:
sel:<css selector>代表元素實際繪製的內容(其文字、逐行測量的行高,以及任何背景、邊框或圖片),而safe是平台的保持清晰核心區域(來自window.FILM.safe)。螢幕上的每個文字,在每個時間點都必須對safe顯示inside: true:node tools/probe.mjs --page reels/<name>/page.html --format 9:16 "2,6.4,10.4" "sel:.title,.line,.kicker,.handle,.cap" "safe" - 若要測試攝影機關鍵影格而不編輯檔案,可傳入
PRE(它會在每次執行前執行):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"。 - 邊界盒是保守的(邊界盒比實際形狀大),因此重疊幾個像素在實際畫面上可能看來清晰。最終由審核員裁決。
在渲染前,請為以下每一項檢查提供具體像素數字:
- 每個文字、標題和標誌都必須位於平台的保持清晰區域內(
safe,來自 template/formats.json)。對於有機的 9:16 Reels,該區域是中間帶狀區(應用程式會覆蓋底部四分之一以及右側按鈕欄);對於付費 Reel,則為底部 35% 以上的所有區域。 - 任何靠近臉部的物體:帽子、頭後方的螢幕(光暈)、經過的立方體、嘴巴附近的道具。
- 攝影機移動過程中,主角與字幕背景之間的位置關係。
- 對話框與畫面邊緣及附近道具的相對位置。
- 人物與車輛與畫面邊緣的距離(≥24 像素為安全)。
- 飛行物體(投擲的箱子、金幣、病毒群)與它們經過的每個頭部。
閘門 3 · 獨立審核員
啟動一個全新的 AI 代理(絕不能是建置者,也不能是曾看過建置過程的代理),並提供 references/auditor-brief.md。
- 它讀取的是渲染後的 MP4 檔案,而非即時頁面:
ffmpeg -i out/film.mp4 -vf fps=2 …,然後產生帶時間戳的靜止幀圖表(tools/sheet.py)。 - 對整部影片以 ≥2 fps 的速度檢查,對每個有變動的視窗以 ≥4 fps 的速度檢查,並在接觸點(例如拿起物品或交接物品)以逐幀方式(30 fps)檢查。
- 它會針對每個項目回答:FIXED / NOT FIXED / REGRESSED / NEW,並標註等級 MUST-FIX / NICE-TO-FIX,最後輸出一行:
SIGN-OFF或NOT。 - 修復後的重檢為狹義重檢:僅針對修復觸及的視窗,加上簡短的回歸檢查。啟動全新的代理通常比讓一個攜帶完整歷史的代理繼續檢查更經濟。
審核員持續發現的問題(請優先檢查這些)
- 物體碰觸或位於頭部後方: 頭髮裡的瓶蓋、頭後方的圖釘、頭後方發光的螢幕、越過下巴的立方體。
- 物體穿過物體: 卡車穿過建築物和彼此、停在桌子底下的廂型車。
- 邏輯錯誤: 卡車車頭朝內對接、第二輛卡車超越第一輛、應該掉落卻放在桌緣的杯子。
- 人物問題: 兩個人站得太近導致頭部合併成一個形體;某人半個身體在畫面外。
- 動作問題: 單幀跳躍(瞬間移動)、物體在 0.1 秒內穿過地板、主角在場景轉換時消失。
- 文字問題: 文字位於應用程式按鈕覆蓋的區域、中文字在單字中間斷開、橫幅與場景節奏不同步、英式/美式拼寫混用、無法解釋的數字、字幕遮蓋主角。
- 音效問題: 嗖嗖聲、在音樂中無法聽見的音效提示、插入節拍後漂移的音效提示。