Live demo

Latent directions on your field

Two anchor fields A and B differ by one edit, such as a blur, a stretch or a split. The direction between their embeddings, η = ζmB − ζmA, is that edit read off the latent space. It is then added, with a coefficient c from −1 to 2, to the embedding of a completely different field, yours, and the result is decoded: c = 1 applies the edit once, a negative c reverses it.

Checking the server…
Direction anchor A → anchor B
Input a sample, your own image, or a painted field
Your input moved along the direction appears here; scroll over it to change the coefficient.
How it works

An edit learned from two fields, applied to any other

The direction η = ζmB − ζmA between two anchors is added to your embedding ζm with a coefficient c from −1 to 2, and the sum is put back on the sphere.
1

Two anchors

Each preset comes from two analytic fields that differ by one operation, such as a sharp and a broad bump for diffusion. Their single-partition embeddings ζmA and ζmB define the direction η = ζmB − ζmA.

2

Your input

The input is encoded as a single partition, like the anchors: its shape becomes one embedding ζm, its position, extent and value range the static frame.

3

Move the embedding

The embedding ζm becomes |ζm| (ζm + c η) / |ζm + c η|: it moves along η and stays on the sphere. The static frame is kept.

4

Decode

The input is decoded for coefficients c from −1 to 2: c = 0 is your input as one embedding, a negative c reverses the edit.

The input is one partition, so the direction acts on its overall shape, as on the anchors it was measured on; a detailed input is reconstructed coarsely by a single embedding.