Reality Fork: física a partir de vídeo
O Reality Fork rastreia um objeto em movimento quadro a quadro (Meta SAM 3.1), ajusta uma lei de movimento com barras de erro e pode "forkar" o movimento sob condições físicas alteradas.
Quando usar
O usuário tem um vídeo (ou um ID de clipe de amostra) e deseja: gravidade, velocidade ou ângulo de lançamento, arrasto do ar, elasticidade de uma bola, comprimento ou período de um pêndulo, aceleração em uma rampa, ou "como isso seria na Lua". Também quando o código precisa de constantes reais medidas a partir de imagens.
Como chamar
Substitua <DIR> pelo diretório do reality-fork (a pasta que contém mcp/).
Ferramentas MCP (se o servidor reality-fork estiver conectado):
list_clips- IDs dos clipes e se cada um está analisado.analyze_video({path | clip_id, question?, live?})- título, resposta, lei, medidas com sigma, suposições, confiança.fork_motion({clip_id, g?, drag?, e?})- re-simulação: resumo, eventos de pouso/quique, trajetória a cada 0,1 s em metros.export_measurements({clip_id})- JSON da lei ajustada, parâmetros, sigmas, escala, intervalo de quadros, fps.braking_fork({clip_id, hazard_distance_m = 20, speed_kmh?, react_s = 1.5, decel = 7})- para um clipe de um carro atravessando o quadro: ele para se alguém sair a essa distância, por quantos metros, ou a que velocidade ele atinge? Tanto a velocidade medida (com sua barra de erro) quantospeed_kmh, se fornecido.speed_survey({clip_ids, limit_kmh = 30})- vários clipes de carros analisados: cada velocidade em km/h com sigma, a média, a velocidade no 85º percentil com incerteza, a proporção acima do limite e um resumo simples. Clipes não veiculares ou não analisados são listados como ignorados, com o motivo.
Linha de comando (mesmas ferramentas, JSON na saída padrão; use isso se o MCP não estiver disponível):
node <DIR>/mcp/cli.mjs list
node <DIR>/mcp/cli.mjs analyze <caminho-do-video|clip_id> --question "qual é g?"
node <DIR>/mcp/cli.mjs fork <clip_id> --g 1.62 # ou --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 # também --react 1.5 --decel 7
node <DIR>/mcp/cli.mjs survey <clip_id> <clip_id> ... --limit 30
Fluxo típico: analyze, depois export para obter números, opcionalmente fork. Coloque os valores exportados no código do usuário, com seus sigmas como tolerâncias.
Carros: frenagem e levantamentos de velocidade
Use braking_fork quando a pergunta for sobre segurança em uma rua ("o carro pararia se uma criança saísse 20 m à frente?", "que diferença faz 30 km/h?") e speed_survey quando alguém precisar da velocidade do tráfego para um conselho ou escola: conselhos agem com base na velocidade do 85º percentil, a velocidade que 85% dos motoristas não ultrapassam, não a média. Ambos precisam de clipes já analisados com um ajuste de velocidade constante de algo se movendo lateralmente pelo quadro a mais de 2 m/s. Sempre cite as suposições declaradas junto com a resposta: 1,5 s de tempo de percepção-reação e frenagem forte a 7 m/s² em asfalto seco são valores típicos, não medições; altere react_s e decel para um motorista cansado ou pista molhada. A velocidade de cada clipe depende da escala (o tamanho de um objeto conhecido, como o comprimento de um carro), então diga isso, e com menos de cerca de 20 clipes considere o 85º percentil como um guia aproximado.
Lendo os números
- Cada valor tem um erro de 1 sigma.
sigmanas medições deanalyze_videojá inclui a incerteza da escala; emexport_measurementsusesigma_totalpara afirmações do mundo real esigma_fitapenas para ruído do ajuste. - Cerca de 68% das repetições devem estar dentro de 1 sigma, 95% dentro de 2. Se um resultado estiver dentro de 2 sigma de um valor conhecido (g da Terra = 9,81), ele concorda; não interprete demais uma diferença de 3% quando sigma é 6%.
- Verifique
confidenceeassumptions. Diga "medido 10,0 +/- 0,7 m/s^2", nunca um número simples. - Resultados de fork são simulações a partir da lei ajustada, não novas medições. Os tempos são segundos a partir do início da trajetória, as posições são metros a partir do ponto inicial do ajuste, x para a direita, y para cima.
Limites honestos
- Câmera parada; sem movimento de pan ou zoom.
- Movimento aproximadamente em um plano voltado para a câmera (sem mudança forte de profundidade).
- A escala vem de um objeto de tamanho conhecido no mesmo plano (uma bola de tênis, uma pessoa); uma suposição de tamanho errada escala todo comprimento e velocidade.
- Clipes curtos: no máximo 20 s são usados. O vídeo é normalizado em H.264; o tempo dos quadros é o relógio.
- Uma nova análise (
live=true) chama os modelos da Meta, custa alguns centavos de crédito de API e só é executada se o processo foi iniciado comRF_ALLOW_LIVE=1. Caso contrário, apenas clipes já analisados estão disponíveis. Nunca ative isso sem a autorização do usuário.