CARNAGE GRAINS / DOCUMENTATION

Post Processing

Clean up a loaded point cache, add positional jitter, or create a denser grain cache without re-running the original simulation.

Load a cache first

Use Cache → Load Point Cache to load the simulation. Post Processing groups the tools into Remove Grains, Jitter, Upres and Post Processing Cache.

  1. Set Start and End in Post Processing Cache to the source frames you want to process.
  2. Open Remove Grains and enable the filters you need. Use Preview Removal and switch Display to Spheres to see the highlight. Clear Preview removes it.
  3. Choose a separate output path in Post Processing Cache, then click Apply. Review the compatibility notice and confirm. The processed cache loads when complete.

Removal filters select whole grain tracks across the chosen range, including frames where a grain did not fail the test. Boolean Per Frame applies its test independently to each frame.

Processing frame range

StartDefault: Scene Start

First source-cache frame to analyze and process, including removal preview and Upres. Follows the scene’s Start until you edit it.

EndDefault: Scene End

Last source-cache frame to analyze and process. Follows the scene’s End until you edit it.

End must be at or after Start, and every source frame in the range must exist. Removal needs consistent grain tracks across that range. A fresh output contains only the processed frames; the source cache stays unchanged.

Boolean

BooleanDefault: Off

Remove cached grains based on whether they are inside the selected mesh volume.

Object

Closed mesh defining the removal volume. Its shape and transform at the current scene frame are used for the operation.

EvaluateDefault: Current Frame

Whether the volume test removes whole grain tracks or removes grains separately on each frame.

  • Current Frame: Test the current cache frame and remove the selected grains throughout the selected range.
  • Any Frame: Remove a grain throughout the selected range if it meets the removal condition on any frame in the selected range.
  • Per Frame (die & be born): Apply removal independently on each frame, allowing grains to disappear and reappear. The output omits glue bonds and UV/mask sidecar data.
Invert (Keep Inside)Default: Off

Keep grains inside the volume and remove those outside it.

Per Frame (die & be born) can change the particle count from frame to frame. Its output omits glue bonds and UV/mask sidecar data. The selected Boolean object’s shape and transform are taken from the current scene frame for the operation.

For Current Frame, a timeline position outside Start/End uses the nearest frame within the processing range. The Boolean object’s pose is taken from the current scene frame.

Velocity & stray grains

VelocityDefault: Off

Remove a grain throughout the selected range if its stored speed exceeds Max Speed on any frame in the selected range.

Max SpeedDefault: 20.0

Stored speed above which a grain is removed, in scene units per second.

Stray GrainsDefault: Off

Remove grains that have fewer than Min Neighbors within Search Radius.

Search RadiusDefault: 0.1

Distance around each grain within which other grains count as neighbors.

Min NeighborsDefault: 2

Minimum number of other grains required within Search Radius for a grain to be kept.

EvaluateDefault: Current Frame

Frames checked for isolated grains. Grains selected for removal are removed throughout the chosen processing range.

  • Current Frame: Identify isolated grains on the current cache frame and remove them throughout the selected range.
  • Any Frame: Remove a grain throughout the selected range if it is isolated on any frame in the selected range.

Stray Grains → Current Frame uses the nearest frame inside Start/End when the timeline is outside the processing range.

Teleport

TeleportDefault: Off

Remove a grain throughout the selected range if its position changes by more than Max Jump between consecutive source frames.

Max JumpDefault: 1.0

Maximum allowed distance between a grain’s positions in consecutive source frames, in scene units.

Jitter

JitterDefault: Off

Add a repeatable random offset to each grain's cached position to break up regular patterns. Updates live and can be saved with Apply.

StrengthDefault: 0.25

Maximum jitter distance as a multiple of each grain's radius. Each grain keeps the same offset across frames.

SeedDefault: 0

Random pattern used for grain offsets. Change this to generate a different pattern.

Jitter is a live preview with a stable per-grain random offset. Apply saves the result; it does not add a new force to the simulation.

Upres

UpresDefault: Off

Preview a denser set of smaller grains generated from the cached simulation.

Points per PointDefault: 1

Number of finer grains generated for each source grain. Their radii decrease to preserve the source grain's combined spherical volume.

Motion BlendingDefault: 1.5

Neighborhood size used to blend source-grain velocities onto the finer grains. Higher values average velocities over a wider area.

Separation PassesDefault: 4

Number of passes used to reduce overlaps between the finer grains. Higher values allow more separation work and increase calculation time.

Upres CacheDefault: Empty

Folder and base filename for the generated Upres NPZ cache. Use a different path from the source cache.

  1. Enable Upres and increase Points per Point above 1. Scrub to preview the denser result.
  2. Tune Motion Blending and Separation Passes for the motion and spacing you need.
  3. Choose a separate Upres Cache path and click Apply Upres. The generated cache loads when complete.

Upres derives finer-grain motion from the cached source velocities; it is not a new high-resolution physics simulation. Child radius decreases with the cube root of Points per Point, preserving combined spherical volume. The original and generated counts are shown in the panel.

Upres drops the parent set’s glue, mask, and UV sidecar data. Live Jitter can be included by Apply Upres, but the ordinary removal filters must be applied in a separate cleanup step.

Post Processing Cache

Post Processing CacheDefault: Empty

Folder and base filename for the processed NPZ cache. Use a different path from the source cache.

The output path and Apply button live in Post Processing Cache, below the frame range. When Upres is enabled, the panel uses Upres Cache and shows Apply Upres. Apply removal first, then upres the cleaned cache. Jitter can be included with Upres.

Apply shows a compatibility notice before writing. An existing explicit destination requires Replace Existing Output; the source-cache path cannot be replaced. A blank or folder-only Upres path chooses an unused output name.

Use a new output name for a clean sequence. If you replace an existing output for only part of its range, files outside the processed range can remain.

Processed cache attributes

  • Fixed removal: preserves UVs and static masks for surviving grains, surviving glue bonds, and a valid Reference Surface reference.
  • Jitter: retains existing per-grain UVs, static masks and surviving glue bonds. It does not preserve the Reference Surface reference.
  • Per Frame removal: omits glue bonds, UVs and static mask sidecars because the grain set can change each frame.
  • Upres: creates new grains and omits the parent set’s glue, UVs and static mask sidecars.

All processed outputs use Particle Velocity; Recorded Motion is not preserved. Check the compatibility notice before applying, especially when preparing a textured mesh. See UV mapping and Motion blur.

Reference updated 7 November 2026. Defaults describe a fresh setup; saved scenes may use different values.