secondary_motion
Add secondary motion to a sprite's cape, hair, beard, scarf, tail or plume, like the Secondary Motion tool on voidless.dev/tools. Give the part as its hex colours (every pixel of those colours moves; its outer outline comes along). One image: the part sways in a gentle breeze that loops. Frames or a sheet (an animation): the part lags the body's movement and overshoots (spring-damper follow-through), same frame count, loops. The body never changes; the part moves by whole pixels in the sprite's own colours. Returns a GIF and a sprite sheet (one row). Images up to 2048x2048, 256 frames, 32 MB of input per call. Free: no credits.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"colors": "<colors>"
},
"name": "secondary_motion"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| hang | No | Which way the part hangs from where it's attached; it swings across this | auto |
| save | No | Also save the result to your Voidless library (free, private) and return its asset id and cdn.voidless.dev URL, for passing to the next tool without base64 | |
| seed | No | Same seed, same breeze | |
| wind | No | Breeze strength (default 0.5 for a still, 0 for an animation) | |
| image | No | One sprite (a still): makes a breeze idle. Or give frames / sheet. An image: an https URL (e.g. a cdn.voidless.dev link from get_asset or a saved result), a library image key (assets/…png, as get_asset lists it), a data: URI, or base64 PNG/GIF. | |
| sheet | No | Instead of frames: one sprite sheet image, cut into frames row by row. | |
| anchor | No | Where it's attached (auto: where it touches the body) | auto |
| colors | Yes | Hex colours of the part that should move, e.g. the cape's red shades | |
| follow | No | Animation: how strongly the body's movement throws the part | |
| frames | No | Frames in order, each an image (https URL, library image key, data: URI or base64). An animated GIF counts as all its frames. | |
| damping | No | Low = floppy, wobbles; high = heavy, settles | |
| outline | No | Move the part's outer dark outline with it | |
| stiffness | No | ||
| tolerance | No | Per-channel colour tolerance for matching colors | |
| sheet_rows | No | Rows of the sheet (with sheet). | |
| frame_count | No | Frames for a still's breeze loop | |
| sheet_columns | No | Columns of the sheet (with sheet). Omit columns and rows to auto-detect the grid. |