AM Math 3D

Video into equations. Equations into video.

AM Math 3D

Turning AI video into equations, locking them before anything is generated, and measuring every painted frame against them.

Sealed single-take tests · every number from the record · November 2026

The big question

There is no video model that takes raw numbers.

AM answers a shot with numbers for every frame: where the object stands, when it moves, how big it looks. Veo, FLUX and Kling take text, pictures and video. So today the numbers have to be drawn as a picture before any model can use them.

AM's answer: raw numbers

framet (s)square u, vfoot (px)height (px)
00.03.2367, 4.4161460.34, 303.0060.92
301.03.2367, 3.9161462.02, 313.0463.36
451.53.2367, 3.4161463.85, 323.9766.00

Chess plan, 91 rows · SHA-256 e9c256d1…83ab · sealed before generation

As words

221 px off, 1.6 s late.

The Veo take whose prompt carried AM's raw numbers missed the mouse's landing spot by 221 px. Every text-prompted mouse stayed in its own depth plane.

As a picture

AM draws its numbers
Kling repaints it: median 1.7 px

The closest thing to a model that takes numbers is 3DTrajMaster, which reads object poses directly. AM's numbers for it are written and sealed. See the numbers test.

Method

Four steps from a clip to a locked plan.

Each step writes numbers down. Nothing a model paints later can change them.

01 / Measure

Every object, every frame, in centimetres.

Apple Vision tracks each object's box, and Depth Anything V2 Metric gives every pixel a depth. The lens is stated: a 60° pinhole. Six background patches give the camera's motion and the light's changes, which are taken out.

X = (x − cx) · Z / f,   W = w · Z / ff ≈ 740 px at 854 px wide

02 / Reason

A law for each number, or CANNOT.

Four hives propose a rule: exact, a shape, a local line, a period. A rule counts only if it keeps 60% of the frames inside a band set by the number's own noise. AM's number law then states one rule, with the frames that keep and break it, or answers CANNOT.

τ = 3σ + 0.5σ from the second differences

03 / Solve

The action, as equations for every frame.

The last frame becomes geometry: a fitted stage, the pieces on it, a chessboard's pose. A jump is a gravity arc, and a slide starts and stops at rest. If the scene forbids the action, the answer is CANNOT, with the reason.

Y(k) = Y0 + (Y1 − Y0)s − 4Haps(1 − s),   Hap = gT2/8

04 / Lock and measure

Sealed first. Measured after.

The plan and its rule are hashed with SHA-256 before any video exists. The same tracker then runs on AM's guide and on the generated take, so its own bias cancels. Background patches show whether the camera moved.

e = 3s2 − 2s3the slide: at rest at both ends

Proofs

Sealed, one take each, measured against the lock.

Each plan was hashed before generation and each rule written in advance. Results are single takes, so they show what AM can do, not yet how often.

TestGeneratorTakesMeasured against AM's lockResult
Cats Playing Chess: the pawn's slideKling 4.0 Edit1median 1.7 px, worst 3.4 px; rests 1.5 px from square 3,3PASS
Mouse Jump: the plate leapFLUX 3 Edit on AM's guide1lands 3 px from AM's spot at 1.29 s (1.33 s asked)
Mouse Jump, words onlyVeo 3.1 Lite653 to 221 px off; never landedMISSES
The beat: a clip extended by AM's lawKling 4.0 Edit1period 14 frames, inside the locked 13 ± 1; 5% slowPASS
The ad: 15 s camera move from one photoKling 4.0 Edit1returned 4.04 s, not 15FAIL
The numbers test: poses straight in3DTrajMaster0sealed; needs a 40 GB GPUNOT RUN

Cats Playing Chess

1.7 pxmedian, 73 planned frames

The ask was "the grey cat moves a pawn two steps". AM answered CANNOT: every pawn's second square ahead is taken. The move became one square, and in the final plan the pawn slides by itself between 0.5 and 1.5 s.

One Kling 4.0 Edit take kept the pawn within a worst case of 3.4 px and set it down 1.5 px from square 3,3. Sixteen still pawns matched the start frame within 1.2 px. Two earlier takes failed where the ask clashed with the scene: the models had the grey cat move a piece within its own reach.

Kling's take with AM's locked numbers and the measured distance on every frame.

The Mouse Jump

3 pxfrom AM's landing spot

The ask: the mouse leaps onto the tomato plate, 69 cm deeper, landing at 1.33 s. AM solved it as a gravity arc and drew the mouse's own pixels along it. One FLUX 3 Edit take landed 3 px from AM's spot at 1.29 s.

Six Veo takes driven only by words landed 53 to 221 px off and never reached the plate. The floating hat in FLUX's take came from AM's guide background, which still held it.

AM's guide, repainted
Veo, normal words: never reaches the plate

The beat

13 → 14frames per bounce, locked 13 ± 1

From numbers alone, AM's core proved five dancers bounce on one shared law, every 14 frames. Over the clip's last 55 frames it proved 13: the tempo rose. The pixels, measured without AM, agree both times.

AM's law for the new frames, frame(t) = frame(t − 13), was locked before generation. Kling's continuation kept a 14-frame beat, inside the rule and 5% slow, and AM's core found the beat again in the generated video.

Kling's continuation, built from AM's law.

The ad

4.04 sreturned for a 15 s plan

From one product photo, AM wrote and locked all 450 frames of a 15-second camera move: an 8° arc around the notebook and a push-in to 85% of the frame height.

The one Kling take returned 4 seconds and ran the move about twice as fast, so it failed the sealed rule. The lesson is practical: lock the plan for the length a model actually returns.

AM's guide, 15 s
Kling's take, 4 s

Inside the core reasoner

Laws with proofs, or CANNOT.

On a Sora clip of two cats at a chessboard, AM proved 8 rules. Each is a formula a machine can run, with the frames that keep it.

Object (frames)NumberRuleFormulaKept / measured
2 (0–149)HREPEATtable[t mod 18]95 / 150
4 (10–149)rZEXACT12*((0)-12)88 / 140
4 (10–149)WREPEATtable[t mod 20]87 / 140
5 (30–149)rYLOCALa line through the frames within 5 of t119 / 120
5 (30–149)rZLOCALa line through the frames within 5 of t118 / 120
6 (90–149)rXEXACT((0)-11)<<438 / 60
6 (90–149)rZEXACT((-t)//8)^1247 / 60
6 (90–149)oBEXACT5*(min((t//4),24))59 / 60

CANNOT is information. The clip's other 28 numbers came back CANNOT. In 26 of them, hives each found a rule but disagreed with one another; one was a lone local fit with 18 misses, and in one no hive reached 60%. Sora's motion can be traced frame by frame, but no single law holds for the whole clip.

The numbers test

The closest thing to a model that takes numbers.

3DTrajMaster (ICLR 2025) makes a video from a short text and, for each entity, 13 poses: a rotation and a position in metres. AM wrote its two shots as those 13 × 12 numbers, with no picture in between.

400 → 10.7 px

Where the poses land: through the camera the model publishes, then through the camera fitted from its own training renders.

29.0 px

How far the model's own published videos land from the numbers they were given (median, ten one-entity videos).

44.7 px

The bar for AM's shots, fixed in advance: the 90th percentile of those ten videos.

AM's planned slide and jump paths drawn over a frame from the model's training data
AM's slide (red) and jump (blue), solved in the model's world and drawn here over one of its training frames (360°-Motion dataset, Apache-2.0). Only the numbers go to the model.

SEALED · NOT RUN

Slide: a fox moves 3.6 m, starting and stopping at rest, and stops on AM's spot at frame 39.

Jump: a 70 cm gravity arc landing at frame 30. No animal in the model's training data ever leaves the ground.

The words carry nothing: "a fox … is moving in the desert". The plan was sealed on 3 November 2026 (SHA-256 61c9ceb0…d95d). The run needs one CUDA GPU with 40 GB or more, and then it is a single command.

Cost

AM's part costs 0 tokens.

AM's work on the chess shot took 166 s of Mac time, about $0.0014. The one generated take cost about $1.05. Before the ask and the scene agreed, three takes cost about $2.19 and none was exact. Prompt-only, the mouse took six tries and $0.87 and never landed.

Limits

  • Single takes, not rates. A sealed run of 20 to 50 shots would turn passes into a rate.
  • The lens is assumed and depth comes from a model, not a measured camera.
  • The core often answers CANNOT on Sora clips, including the mouse's own motion; that jump was solved from AM's measurements.
  • The repaint adds error AM cannot remove, and models do not keep the clock.
  • The numbers test has not run. Whether a pose-driven model follows AM is still open.