F FLUX MOTION ATLAS SPHERE

Processing

The latent path is a curve on a 3-sphere inside a four-dimensional subspace of latent space. Everything about continuity follows from that. CPU-side algorithms are designed here before they cost GPU time.

1 · The frame

Four seeds are drawn on CPU and flattened, then orthonormalised by Gram–Schmidt into a frame e0..3 spanning a 4-dimensional subspace of RN, with N the latent dimension.

ei,ej =δij , r=za

The radius r is taken from the first seed and every rendered latent is placed at exactly that radius, so the sampler always sees a vector of the norm it expects.

2 · The coefficient path

A cell’s latent is x = r ∑k ckek, where c lies on the unit 3-sphere S3. The map Ω : R6 → so(4) sends six coefficients onto the six coordinate planes.

c= exp(θsΩ(rates)) exp(Ω(offsets)) exp(αsΩ(0,3)) (1,0,0,0)T

Because Ω(v) is antisymmetric, exp Ω(v) ∈ SO(4), so ∥c∥ = 1 exactly — verified to 1.000000000000 across samples. The path can never drift off the sphere; it can only travel along it.

3 · Why θ was doing nothing

With rates and offsets unset they become zero vectors, and exp(θ s Ω(0)) = I. The first two factors collapse and θ drops out of the equation entirely:

c= exp(αsΩ(0,3)) (1,0,0,0)T =(cosαs,0,0,sinαs)

That is a circle in the e0–e3 plane, not a sphere. Azimuth advances 2π/ncols per column, so the path closes and repeats every ncols frames. At the former default of 64 columns the identical latent returned every 64 frames.

4 · Not every generator moves the state

After the azimuth rotation the state lies in span{e0, e3}. A generator acting only on the orthogonal complement is the identity on that state, so one of the six rate knobs is inert from the default start.

rates indexplane∥Δc∥ at θ=1effect
0(0,1)0.655166strong
1(0,2)0.655166strong
2(0,3)0.685796strong
3(1,2)0.000000no-op on this state
4(1,3)0.202666weak
5(2,3)0.202666weak

5 · The continuity law

Frame-to-frame displacement follows from differentiating the flow. For the omega path, dc/dθ = s Ω(rates) c, giving

Δx rs Ω(rates)c Δθ , Δα=2πncols

Three independent handles on continuity, all linear: the grid (ncols), the scale (shell_scale, live-updatable), and the generator magnitude (rates). Degrees per frame = 360 / ncols for pure azimuth stepping.

6 · Measured, not asserted

Mean absolute RGB difference between consecutive rendered frames, 0–1. Below ~0.02 reads as near-identical; above ~0.15 reads as unrelated images.

configurationdeg/framemeasured Δverdict
1024×64 nested_sparse177.76°no consecutive pairs existunrelated
1024×64 contiguous5.63°steppy
16×4096 contiguous0.088°0.0021near-identical

Van der Corput bisects its range, so consecutive samples land near-antipodal by construction. It is a survey sampler and cannot produce motion.

7 · Batch size is not free

Measured across the 4-GPU fleet, 128 cells at 512 × 512 / 16 steps. fps equals cells/s: one cell is one frame.

batchwallfpsvs batch 1
154.0s2.371.00×
252.0s2.461.04×
454.0s2.371.00×
860.0s2.130.90×
1668.0s1.880.79×
3286.1s1.490.63×
64*86.1s1.490.63×

*batch 64 clamped to 32: only 32 cells per shard were available, so it is not an independent measurement. At 512px a single image already saturates the card, so batching adds memory pressure and coarser scheduling for no gain. Batch 1–2 is also what atlas-xframe-cache requires, and it makes assets stream one at a time instead of arriving in bursts.

8 · The criterion, measured

Continuity alone is not the goal — a static image with jitter is locally smooth and going nowhere. Motion requires difference to grow with separation: tiny at lag 1, large across the run. Measured on aurora-whale-migration, 16×4096 contiguous, batch 2, rates[0]=0.8, coupling 4.0.

separation (frames)mean Δreading
10.0017near-identical
380.0096near-identical
1150.0243visibly evolved
2700.0474visibly evolved
4990.0725strongly travelled

Growth ratio 43.4×, monotonic with no plateau. The absence of a plateau is the image-space proof that the closed orbit is broken: under the old rates=0 circle this curve would rise and then fall back toward zero as the path returned to its own start. Local smoothness 0.0017, worst single step 0.0026, zero outliers above 3× median, batch-edge ratio 0.99×.

9 · The latent→image map is a power law

Image difference does not track latent difference linearly. Calibrated against 13 measured separations on aurora-whale-migration:

Δimage 0.0784· (Δlatent)0.624

Log-space R² = 0.983. The exponent below 1 means diminishing returns: 2× more image travel costs 3.0× more latent travel, 10× costs 40×. A plain linear fit scores R² = 0.988 but misses the lag-1 point — the continuity constraint — by 290%, where the power law errs 18%. Fit the regime you intend to use.

10 · The frontier is flat — the seeds are the ceiling

Sweeping coupling × rate × scale over 54 configurations inside the continuity budget, ranked by directed travel:

directness= c(end)c(0) Δc 2π0.637

The best config in budget reaches travel 0.1208 against the running config’s 0.1171 — 1.03×. Top configs hit directness 0.636, essentially the geodesic limit. End departure is already 1.90 of a hard maximum of 2.0, because c is a unit vector.

So traversal tuning is exhausted. The path already crosses the whole sphere; total variety is bounded by how far apart the four seed latents place e0..3. The seeds are the experiment’s ceiling, not the orbit.