Reality Fork:從影片測量物理 是做什麼的?
Reality Fork 逐幀追蹤移動物體(使用 Meta SAM 3.1),擬合帶有誤差範圍的運動定律,並能在變更後的物理條件下「fork」該運動。
使用時機
使用者有一段影片(或一個範例片段 ID),並希望取得:重力、初速或角度、空氣阻力、球的彈性、擺的長度或週期、斜面上的加速度,或「如果場景發生在月球上會是什麼樣子」。此外,當程式碼需要從影片畫面中測量出的真實常數時也很適合。
如何呼叫
將 <DIR> 取代為 reality-fork 的程式目錄(即包含 mcp/ 的資料夾)。
MCP 工具(若已連線 reality-fork 伺服器):
list_clips- 列出片段 ID 以及每個是否已分析完成。analyze_video({path | clip_id, question?, live?})- 標題、答案、運動定律、含 sigma 的測量值、假設、信心度。fork_motion({clip_id, g?, drag?, e?})- 重新模擬:摘要、落地/彈跳事件、每 0.1 秒的位置(單位為公尺)。export_measurements({clip_id})- 以 JSON 格式輸出擬合的定律、參數、sigma、比例、幀範圍、fps。braking_fork({clip_id, hazard_distance_m = 20, speed_kmh?, react_s = 1.5, decel = 7})- 用於車輛橫越畫面的片段:若前方特定距離有人走出,車輛能否停下?剩多少公尺?或撞擊時的速度是多少?同時輸出測量到的速度(含誤差條)以及speed_kmh(若有提供)。speed_survey({clip_ids, limit_kmh = 30})- 多個已分析的車輛片段:每段的速度(km/h,含 sigma)、平均值、第 85 百分位速度(含不確定性)、超速比例,以及簡潔摘要。非車輛或未分析的片段會列出並標註跳過原因。
命令列(相同工具,JSON 輸出至 stdout;若 MCP 不可用則使用此方式):
node <DIR>/mcp/cli.mjs list
node <DIR>/mcp/cli.mjs analyze <video-path|clip_id> --question "what is g?"
node <DIR>/mcp/cli.mjs fork <clip_id> --g 1.62 # 或 --g moon, --drag none, --e 0.8
node <DIR>/mcp/cli.mjs export <clip_id>
node <DIR>/mcp/cli.mjs brake <clip_id> --distance 20 --speed 30 # 也可加入 --react 1.5 --decel 7
node <DIR>/mcp/cli.mjs survey <clip_id> <clip_id> ... --limit 30
典型流程:analyze,然後 export 取得數值,視需要 fork。將匯出的數值(含其 sigma 作為容差)放入使用者的程式碼中。
車輛:煞車與車速調查
當問題與街道安全相關時使用 braking_fork(例如「如果一個孩子從 20 公尺前方走出來,車子會停下來嗎?」、「30 km/h 的差異有多大?」)。當有人需要車流速度數據提交給市議會或學校時,使用 speed_survey:市議會根據的是第 85 百分位速度(85% 駕駛者保持在此速度以下),而非平均速度。兩者都需要片段已經以等速擬合方式分析,且物體大致橫越畫面,速度超過 2 m/s。報告答案時務必附上陳述的假設:1.5 秒感知反應時間與乾燥瀝青上 7 m/s² 的緊急煞車是典型數據,並非測量值;若駕駛疲勞或路面潮濕,請修改 react_s 和 decel。每個片段的速度取決於比例(例如車輛長度等已知物體的大小),因此需說明這點;若片段少於約 20 個,則將第 85 百分位視為粗略參考。
解讀數值
- 每個數值都帶有 1-sigma 誤差。
analyze_video測量值中的sigma已包含比例不確定性;在export_measurements中,對真實世界的主張使用sigma_total,僅對擬合雜訊使用sigma_fit。 - 約 68% 的重複測量應落在 1 sigma 內,95% 落在 2 sigma 內。若結果與已知數值(例如地球 g = 9.81)相差在 2 sigma 以內,則視為一致;不要因為 sigma 為 6%、差異為 3% 就過度解讀。
- 檢查
confidence和assumptions。請說「測量得 10.0 +/- 0.7 m/s^2」,切勿只給出裸露的數字。 - Fork 結果是根據擬合定律的模擬,並非新的測量值。時間為從軌跡起點開始的秒數,位置為從擬合起點算起的公尺數,x 向右,y 向上。
誠實的極限
- 相機需保持靜止;不可平移或變焦。
- 運動大致處於面向相機的平面上(無劇烈深度變化)。
- 比例來自與運動物體處於同一平面的已知尺寸物體(例如網球、人);錯誤的尺寸假設會使所有長度和速度產生比例誤差。
- 短片:最多使用 20 秒。影片需為 H.264 標準化;幀時間以時鐘為準。
- 新的分析(
live=true)會呼叫 Meta 的模型,消耗數美分的 API 額度,且僅在程序啟動時設定了RF_ALLOW_LIVE=1環境變數才能執行。否則僅能使用已分析過的片段。未經使用者同意,切勿啟用此功能。