Flohesion
On this page

Documentation

How Flohesion works

Free to read, no account needed — everything below describes the studio exactly as it behaves today, field names included, so you can use this page side by side with the real thing.

Overview

Flohesion builds Lottie animations from two engines rather than hand-placed keyframes. A particle layer simulates real physics — gravity, wind, drag, turbulence — and bakes the result to Lottie shapes. A spline layer takes a path you draw and reshapes it with deterministic maths — waves, noise, spirals — so it moves without ever needing a physics step.

Both engines share one displacement system (see modifiers), both can loop exactly, and both export through the same pipeline to a single Lottie JSON file — the same file format After Effects' Bodymovin plugin produces, playable anywhere a Lottie player runs.

Getting started

Open the studio and you land on an empty canvas. From there:

  1. 1. Pick a preset from the dropdown above the canvas, or add an empty particle or spline layer from the layer rail on the left.
  2. 2. Play it back with Space, and scrub the timeline at the bottom — everything you see is the real simulation running live, not a preview approximation.
  3. 3. Tweak it in the inspector on the right — every field there is documented in the sections below, under the same names.
  4. 4. Export with the button in the header (or press E) — see Exporting to Lottie.

Undo and redo (Ctrl+Z / Ctrl+Shift+Z) cover every edit, so there's no penalty for experimenting.

Particle layers

A particle layer owns an emitter, an appearance, a life span, and its own stack of physics forces — nothing is shared between layers, so gravity on one layer never leaks into another.

Emitter

Where and how particles are born. Shape sets the emitter's volume: point box circle sphere ring line grid or spline (emit along another spline layer's path, either evenly spaced or at random).

Rate / Burst
A steady rate in particles per second, or a fixed count released on specific frames instead. The two combine — a rate keeps emitting while a burst also fires on top of it.
One-time explosion
To fire every particle at once and nothing else: set Rate to 0, turn Burst on, and give it a single frame in At frames (0 to fire immediately). With Rate left above 0, Burst adds a spike on top of the continuous stream instead of replacing it.
Active from
The frame range the emitter runs across — negative start frames pre-roll a scene so it opens already populated.
Direction
uniform directional bidirectional disc outwards inwards or tangent (orbital), plus a spread cone.
Velocity
Launch speed, its randomisation, extra speed along the emitter’s own outward normal, and how much of the emitter’s own motion particles inherit.

Appearance

Shape is one of circle square rectangle triangle star polygon line cross or ring, with fill and/or stroke.

Size / Opacity
A base value, random variation, and a curve over the particle’s life — so a spark can grow then fade, for instance.
Colour
A gradient ramp, walked by life (age), random (one colour per particle), speed, or depth.
Rotation / Spin
Initial angle and degrees-per-second, both randomisable, plus an option to orient the particle along its own velocity — confetti flakes, arrows, dashes.
Depth of field
A fake defocus: particles away from a chosen focus depth grow and dim together, which reads as softness and — being only size and opacity — exports exactly, since Lottie has no reliable blur.

Physics forces

Stack any of these on a layer. Each is independent and can be enabled or disabled on its own.

Gravity
A constant pull in one direction.
Wind
A steady push, plus an optional sinusoidal gust on top of it.
Drag
Air resistance that settles particles toward a terminal velocity — linear or quadratic.
Turbulence
A noise-driven force field (fractal Brownian motion). Curl noise gives fluid-like swirling instead of jitter; scale, evolution speed, octave count and per-axis weighting are all tunable.
Vortex
Spins particles around a centre, with an inward pull and a falloff radius.
Attractor
Pulls particles toward a point — or repels them, with a negative strength.
Spherical
A solid sphere particles are pushed out of, with a feathered edge.
Bounce
Floor / ceiling / wall collision, with restitution, friction, surface roughness and spin lost on impact.

A layer also has a force scale (0 makes it purely deterministic — displacers only, no physics at all) and a time factor to speed up or slow down its physics without touching the comp's frame rate. Max particles caps the pool; leave auto on and it's derived from rate × life, so raising the rate reads as adding particles rather than recycling old ones early.

Spline layers

A spline layer is a path — anchors with in/out tangent handles, optionally closed — reshaped by the same modifier stack particle layers use for deterministic motion, then styled and optionally repeated.

Style

Stroke / Fill
Colour, width, opacity. A stroke can run a gradient along the path itself instead of one flat colour.
Cap / Join / Dash
Standard line-drawing controls — butt, round or square caps; miter, round or bevel joins; an optional dash pattern.
Trim
An animated draw-on/draw-off, exported as a native Lottie Trim Paths modifier rather than baked geometry.

Modifiers

Every modifier shares one idea: a domain (what its phase is measured against — arcLength age distance index or time) and an apply mode (offset pushes the point sideways, steer bends the direction of travel so the effect compounds into a genuine curl, speed modulates magnitude only). That is what lets the same stack drive a spline by arc length and a particle by its own age.

Wave
A sine wave.
Zigzag
Sharp ridges — ridge count and how rounded the corners are.
Spiral
Radius grows every cycle, with an optional tilt out of the flat plane.
Coil
Coils around the path itself — radius, turns, and an optional real-3D render.
Twist
Rotates around a centre over the domain; a repeated copy can randomise its own direction and amount so a run doesn’t read as one rigid fan.
Roughen
Noise-based jitter — detail level and how jagged versus smooth it looks.
Wander
A heading that drifts over time, with a cohesion pull back toward the original direction.
Taper
Scales the start and end of the path independently.
Pulse
An on/off duty cycle, with adjustable softness at the transition.

Repeat

Repeats the finished (already-displaced) path as a run of copies with an incremental transform — offset, rotation and scale applied about a chosen pivot rather than the comp origin, so a path near a corner rotates in place instead of swinging across it. Each copy can randomise its own position (shuffled off the perfectly even step spacing a repeater naturally produces), width, length, start delay, opacity, rotation and colour, and colour itself can walk a ramp or scatter along it at random.

Seamless looping

Turn on Seamless in the comp panel and the frame immediately after the last frame is provably identical to frame zero — position, rotation, size, everything — not just close enough to not catch the eye. Every time-varying input (turbulence evolution, displacer phase, wind gusts) is driven by a periodic function whose period divides the loop length, rather than drifting forever.

Pre-roll simulates frames before frame zero so the population is already in a steady state when the file starts — without it, a scene that emits from off-screen opens on a blank frame. This applies whether or not looping itself is on.

Seamless looping costs a heavier one-time warm-up at build time, so it's worth leaving off while you're still iterating on a scene and turning on for the final export.

Exporting to Lottie

Export bakes the simulation to keyframes and fits a curve to each track, dropping keyframes that fall within a tolerance rather than keeping one per frame. The preview in the export dialog is not another canvas drawing — it's the literal exported JSON, played in a real Lottie player, so anything the fitter got wrong or any shape the format can't express shows up before the file leaves the studio.

Position / Rotation / Opacity / Size
Independent fitting tolerances — the maximum a track is allowed to deviate before a keyframe is kept.
Precision
Decimal places kept in the JSON.
Colour keys
Whether colour is allowed to animate as keyframes, or is baked to a static value.
Depth sort
Sort layers by z each frame rather than by spawn order.
Cull offscreen
Drop particles never actually visible inside the comp frame.
Background / Minify
Include a background rectangle; strip names and editor-only metadata no player reads.

File size is reported both raw and gzipped, because that's the number that actually matters — every CDN and dev server gzips JSON in transit, and the raw figure alone makes a perfectly deployable file look much heavier than it will ever be over the wire.

Right now export produces one format: a plain Lottie JSON file, downloadable or copyable straight from the dialog.

Built-in presets

Presets are just starting documents — open one and every field above is still yours to change.

PresetFamilyWhat it does
ConfettiPhysicsGravity, drag and flutter.
SnowPhysicsCurl turbulence and gusting wind.
RainPhysicsFast oriented streaks.
SparksPhysicsRadial burst into a vortex.
FireworksHybridA rocket layer triggers an AUX burst on death.
Heart monitorDeterministicECG Pulse, seamlessly looping, stacked with Repeat Y.
Spline flowHybridParticles emitted along a path.

Project files

Save project writes the whole editable document — every layer, force and modifier — to a .floh file. This is not a Lottie file; opening it in a player shows nothing. Open project reads it back.

Keyboard shortcuts

SpacePlay / pause
HomeGo to the start
← →Step one frame
EOpen the export dialog
GToggle guides
RNew random seed
Ctrl / ⌘ + ZUndo
Ctrl / ⌘ + Shift + ZRedo
Ctrl / ⌘ + YRedo (alternate)

Found something this page gets wrong, or missing? Use the feedback form on the home page — it goes straight to us.