Skip to content
Русский

The outline has to land on a band edge, or the figure dissolves

The one arithmetic rule the authored looks are built on, and nothing checks it for you. A band edge sits at every multiple of 1 / palette_steps, and the figure’s outline sits at color_center + color_span. Put the second exactly on the first and the silhouette reads crisp — the seam at the outline is a band boundary, so it is a hard edge. Miss it and the outline falls inside a band, which draws the figure in the same flat colour as the ring just outside it and the silhouette dissolves into the ring family around it.

It is not a subtle difference. Measured over four spans on the maple: at 5 and at 8 interior bands the leaf is simply gone.

[params]
palette_steps = "16"
color_span = "0.1875" # 3/16
color_center = "mod(0.875 + beat_index / 16, 1)" # 14/16, stepping by 1/16

Every number is a multiple of 1/16, which is why presets/shape_maple.toml looks the way it does: 14/16 + 3/16 lands on an edge, and so does every step of the travel. A figure with two interior bands does the same at 14/16 + 2/16.

Two consequences, and they are what you act on:

  • color_span must not be bound at all on a figure whose edge has to stay crisp. Any value between two multiples of 1 / palette_steps walks the outline off its edge, and there is no increment small enough to read as a change while still landing on one.
  • color_center moves in whole band steps — beat_index / 16 at palette_steps = 16, not time * 0.15. A continuous drift blunts the figure in every frame between two steps. Stepping keeps the alignment exact at all times, which is why the shipped authored looks travel on beat_index rather than on time.

gamma is the safe interior binding, and the reason is the useful part. At the outline the coordinate is exactly 1, and 1^g = 1 for any g, so gamma provably cannot move the outline off its band edge — it only redistributes the bands inside the figure. That reason is also the test for a binding you think of next: it is safe exactly when it leaves the coordinate at the outline equal to 1, and scale and pan_* qualify because they move the figure in the frame rather than the coordinate on it.

The rule is the same under both coord_mode values, because the outline is at coordinate 1 under both. What changes with the mode is what the interior bands are, not where the outline sits.

Built from 13c7582 at version 0.158.0. This site tracks main and is not versioned per release.