CARNAGE GRAINS / DOCUMENTATION

Meshing

Turn a saved grain simulation into points, instanced spheres, or a continuous surface, then bake output to Alembic.

Choose an output method

Write a point cache first. Both Create Mesh and Create Geometry Nodes check for a saved simulation cache. Choose the method before creating the output.

MethodDefault: Carnage Meshing

Method used to convert the grain data into output geometry.

  • Carnage Meshing: Build a separate surface mesh using Carnage's GPU mesher.
  • Geometry Nodes: Create a Geometry Nodes modifier for point or meshed output.

Carnage Meshing creates a separate surface object with GPU surface and grid controls. Geometry Nodes creates a modifier for native points, spheres, or meshed output.

Carnage Meshing

Select Carnage Meshing and click Create Mesh. The surface updates from the grain data during playback. The panel reports mesh counts and timing, or a cached status when playing Alembic. Remove Mesh removes the generated surface and returns to grain display.

Voxel ScaleDefault: 0.8

Requested voxel size as a multiple of Grain Radius. Smaller values capture finer detail but increase memory use and calculation time. Resolution limits may increase the final voxel size.

Influence ScaleDefault: 1.2

Surface influence radius as a multiple of Grain Radius. Higher values expand the surface and connect more nearby grains.

Tiled MeshingDefault: Off

Build the surface in smaller blocks to reduce peak field memory use. Temporal Stability and Normal Temporal Smoothing are unavailable in this mode.

Tile SizeDefault: 160

Number of voxels along each tile edge. Larger tiles reduce repeated border work but require more GPU memory. Lower this if tiled meshing runs out of memory.

Mesh MethodDefault: Marching Cubes

Method used to convert the sampled surface field into polygons.

  • Marching Cubes: Build triangles where the surface crosses the voxel grid. Triangle patterns can change as the surface moves.
  • Surface Nets: Build the surface with one vertex per intersected grid cell, reducing changes in triangulation as the surface moves. Lines between surface cells may remain visible.

Surface & stability

Smoothness (ZB Support)Default: 4.0

Radius used to average nearby grains when building the surface, as a multiple of Grain Radius. Increase this to help reduce surface flicker. Higher values soften small features.

Renormalize ItersDefault: 3

Passes used to restore the distance field after surface smoothing. Higher values improve the field's distance estimates but increase calculation time.

Surface SmoothingDefault: 2

Number of smoothing passes applied to the surface field before meshing. Higher values soften bumps and round off fine detail.

Normal SmoothingDefault: 0

Smoothing passes used to calculate shading normals without changing the mesh geometry. Higher values soften changes in shading and reflections.

Normal Temporal SmoothingDefault: 0.0

Blend shading normals with the previous frame to reduce shimmer without changing geometry. Higher values retain more history and can delay shading changes. Seeking or changing settings resets that history. Requires matching grids and is unavailable in Tiled Meshing.

Iso OffsetDefault: 0.2

Inward offset of the extracted surface, measured in voxels. Higher values slightly shrink the mesh.

Separate Dilate / ErodeDefault: Off

Control surface expansion and contraction separately instead of using a shared Surface Stabilization value.

Surface StabilizationDefault: 0

Number of matched expansion and contraction passes used to fill small gaps in the surface. Higher values fill wider gaps and reduce crevice detail.

DilateDefault: 1

Number of voxel expansion passes before erosion. Higher values bridge wider gaps and thicken the surface.

ErodeDefault: 1

Number of voxel contraction passes after dilation. Higher values thin the surface and can remove small features.

Temporal StabilityDefault: 0.0

Blend the surface field with its previous result to reduce changes between frames. Higher values retain more history and can make the surface lag behind motion. Seeking or changing settings resets that history. Requires matching grids and is unavailable in Tiled Meshing.

Surface Stabilization is shown in the simple gap-filling mode. Separate Dilate / Erode exposes independent pass counts; Erode greater than Dilate can remove thin features. Tiled Meshing disables both Temporal Stability and Normal Temporal Smoothing. Both require matching grids, and their history resets when seeking or changing settings.

Grid & domain

Add Meshing Domain creates a domain object. Its world-aligned bounds limit the meshed region; they do not confine the physics simulation.

Meshing Domain

Object whose world-aligned bounding box limits the region being meshed. Grains outside the bounds continue simulating but are excluded from the surface.

Stable GridDefault: On

Reuse the meshing grid between frames to reduce changes caused by refitting it. The grid is rebuilt when the grains outgrow its bounds. Ignored when a Domain is assigned.

Max ResolutionDefault: 512

Maximum grid resolution along an axis. Raising it allows finer detail across larger bounds but increases memory requirements.

Grid PaddingDefault: 0.3

Extra space around the grains when building a Stable Grid, as a fraction of their bounds. Higher values allow more movement before the grid must be rebuilt, but can reduce detail at the resolution limit.

Stable Grid is ignored when a Domain is assigned. Increasing resolution or meshing very thin constraint tubes can sharply increase GPU memory use. Tiled Meshing lowers peak field memory; smaller tiles trade more repeated work for a smaller working set.

Carnage visibility & attributes

Include ParticlesDefault: On

Include the surface generated from grains in the mesh output.

Include ConstraintsDefault: Off

Include glue bonds as tubes in the mesh output. Requires glue data from the simulation or point cache.

Tube RadiusDefault: 0.005

Radius of the tubes generated around glue bonds. Smaller radii can require a finer grid and substantially increase meshing time and memory use.

Exact TubesDefault: On

Build each bond as a continuous capsule instead of a chain of sampled spheres, producing smoother tubes along its length.

Constraint DensityDefault: 0.005

Spacing between samples along glue bonds. Smaller values produce denser samples and increase calculation time. Ignored when Exact Tubes is enabled.

Transfer Glue MaskDefault: Off

Include the saved glue mask colors in the output as the glue_mask attribute for shading.

Transfer Attraction MaskDefault: Off

Include the saved attraction mask colors in the output as the attraction_mask attribute for shading.

Material

Material assigned to the output geometry.

Constraint Density is used only when Exact Tubes is off. Transfer Glue Mask and Transfer Attraction Mask appear when their corresponding systems are enabled. Keep the required attributes with the point cache; enabling an output transfer cannot recover data that was not saved.

Simulate with Glue enabled and keep the saved bond data with the point cache. Show Constraints creates visible constraint geometry; it is not required for saving the bond data. Including many bonds can be substantially heavier than meshing grains alone.

Motion blur

Motion BlurDefault: Recorded Motion

Source of motion data for the Carnage mesh.

  • Particle Velocity: Transfer the grains’ physical velocities to the surface.
  • Recorded Motion: Use the recorded substep motion for the render exposure. Requires Record Render Motion to have been enabled before simulation.

Carnage automatically chooses Recorded Motion for a recorded simulation and Particle Velocity when no recording was made. An explicitly chosen mode is kept. See Record Render Motion for setup.

Recorded Motion requires a complete recording for the bake range with matching frame rate and centered shutter. A preview needs the following simulated frame. If the recording is incomplete or does not match, the mesh bake stops with an error; complete the recording or choose Particle Velocity.

UV mapping

Give the fill mesh an active UV map before simulation. Carnage captures its UV data and surface reference with the point cache. Enable Transfer UVs when preparing the output.

Transfer UVsDefault: Off

Transfer the fill mesh’s UV coordinates to the output for texturing. Carnage Meshing offers Reference Surface or Dual Rest mapping; Geometry Nodes uses Dual Rest.

UV MappingDefault: Reference Surface

How Carnage Meshing maps textures onto the animated surface. Appears when Transfer UVs is enabled.

  • Reference Surface: Map through the saved initial source surface, preserving material coordinates and UV seams. Requires a surface reference captured with the point cache.
  • Dual Rest: Blend two periodically refreshed rest-coordinate sets. Use Reset Interval to control their refresh cycle.
Reset IntervalDefault: 30

Number of frames in each Dual Rest reset cycle. The two rest-coordinate sets reset halfway apart and blend between one another to soften transitions. Used by Dual Rest mapping and Geometry Nodes UV transfer.

UV SmoothDefault: 3

Smoothing passes for transferred coordinates. Reference Surface smooths material positions before projecting onto the saved surface, preserving UV seams. Higher values soften detail.

Reset Interval appears for Dual Rest; Reference Surface has no reset cycle. If the point cache has no saved surface reference, use Dual Rest or create a fresh cache from a UV-mapped source. The output transfer switch cannot recreate missing source data.

For Geometry Nodes output, see Attribute transfer and the Create UV Shader Helper action. Post-processing can affect which UV data survives; see Processed cache attributes.

Mesh Cache — Alembic

Alembic FileDefault: //carnage_mesh_cache/grain_meshed.abc

Path for the baked mesh Alembic file. Meshing settings are saved alongside it. Use // for a path relative to the saved blend file.

StartDefault: 1

First frame to bake to the mesh Alembic cache.

EndDefault: 250

Last frame to bake to the mesh Alembic cache.

Bake Mesh writes the selected mesh frame range to Alembic. Load Mesh Bake loads the mesh bake. Clear Mesh Bake disables mesh-cache playback and returns to live meshing; it leaves the cache files on disk. Keep the saved meshing-settings sidecar with the export.

Geometry Nodes

Choose Geometry Nodes and click Create Geometry Nodes (or Enable Geometry Nodes for an existing disabled setup). Simulation panels are locked while this output is active. Use Back to Simulation to disable the output modifier and restore the grain display.

Output ModeDefault: Points

Whether the output displays individual grains or a continuous meshed surface.

  • Points: Display individual grains as native points, or as spheres with Instance on Points.
  • Meshed: Combine grains into a continuous surface using Geometry Nodes. For GPU meshing and additional surface-stability controls, use Carnage Meshing.
Instance on PointsDefault: Off

Display grains as instanced icospheres instead of a native point cloud.

SubdivisionsDefault: 0

Subdivision level of the instanced icospheres. Higher values produce rounder silhouettes and more geometry.

Randomize SizeDefault: Off

Assign random display sizes to the instanced spheres around Grain Radius, replacing their simulated size variation.

VariationDefault: 0.5

Assign random display sizes around Grain Radius, replacing the instanced spheres' accurate simulated sizes.

SeedDefault: 0

Random pattern used for sphere sizes. Change this to generate a different size distribution.

Native points render in Cycles. Enable Instance on Points for EEVEE. The subdivision and random-size controls appear only for instances; random display sizes replace the individual simulated size variation in that branch.

Geometry Nodes surface

Voxel ScaleDefault: 0.5

Voxel size as a multiple of Grain Radius. Smaller values capture finer surface detail but increase memory use and calculation time.

Influence ScaleDefault: 1.2

Radius used to build the particle surface, as a multiple of Grain Radius. Higher values expand the surface and join nearby grains.

AdaptivityDefault: 0.0

Amount of adaptive polygon reduction on the extracted surface. Higher values reduce geometry but can increase topology changes between frames.

DilateDefault: 0.0

Distance to expand the surface before smoothing, in scene units. Helps close gaps between grains.

Smooth IterationsDefault: 1

Number of smoothing passes applied to the surface field. Higher values soften the surface and reduce fine detail.

ErodeDefault: 0.0

Distance to shrink the surface after smoothing, in scene units. Can offset expansion introduced by Dilate.

Post SubdivisionsDefault: 0

Subdivision level applied after surface extraction. Higher values smooth the mesh and increase its geometry.

Include ParticlesDefault: On

Include the grains in the Geometry Nodes output.

Include ConstraintsDefault: Off

Include glue bonds as tubes or as part of the meshed surface. Requires saved constraint data. Meshing many bonds can take substantial calculation time.

Tube RadiusDefault: 0.005

Radius of the tubes generated around glue bonds.

Constraint DensityDefault: 0.005

Spacing between samples along glue bonds when building the meshed surface. Smaller values give denser samples and increase calculation time.

These surface controls are for Meshed output. Dilate and Erode here are distances in scene units; the Carnage mesher uses voxel-pass counts.

For constraint output, enable Constraints → Show Constraints to create the constraint object before choosing Include Constraints. The point cache must contain glue data. Thin tubes and large bond counts can require substantial calculation time.

Warn before including constraints in the Geometry Nodes meshDefault: On

Show a confirmation before enabling constraint meshing. This preference is in the addon’s Preferences.

Geometry Nodes attribute transfer

Transfer Infection MaskDefault: Off

Include the animated infection mask in Geometry Nodes output and its Alembic export. Independent of Output Color. A cache containing infection flags can supply the mask without re-simulating.

Transfer VelocityDefault: Off

Transfer grain velocities to the meshed surface as the velocity vector attribute.

UV SmoothDefault: 2

Smoothing passes applied to transferred UV coordinates. Higher values soften transitions between grain samples but can blur texture detail.

To shade infection, add an Attribute node in the Shader Editor, enter infection, and use its Fac output. A value of 0 is clean; 1 is infected or released by Activate Detached Grains. Set the node type to Instancer for unrealized instances and Geometry for native points, realized instances or meshed output.

Transfer UVs uses the Dual Rest coordinates. Click Create UV Shader Helper, then use Add → Group in the Shader Editor to add CS_PointInstanceUV for unrealized instances or CS_PointUV for other Geometry Nodes output. Connect the helper’s UV output to an image texture’s Vector input, or its Vector output to a procedural texture. Use UV Smooth to soften transitions between grain samples.

Transfer Glue Mask and Transfer Attraction Mask appear when their systems are enabled. Transfer Velocity is available for Meshed output. Choose the output material with Material.

Export to GN

Alembic FileDefault: //carnage_alembic/grains.abc

Path for the Alembic point export. Existing exports are preserved by adding a version number. Use // for a path relative to the saved blend file.

StartDefault: 1

First disk-cache frame to export to Alembic.

EndDefault: 250

Last disk-cache frame to export to Alembic.

  1. Prepare the Geometry Nodes output, material and attribute transfers you want to keep.
  2. Choose an Alembic folder separate from the source point cache, then set Start and End.
  3. Click Bake Alembic and confirm. Blender is busy during the bake; progress appears in a separate window. This bake cannot be cancelled once started.
  4. Save the finished scene. Its Alembic playback and editable Geometry Nodes setup can run without Carnage.

Existing point exports are preserved by adding a version number. Export to GN retains the procedural output; Bake Mesh saves the surface geometry instead.

Keep the complete export folder together when moving the result: the main .abc, .carnage.json metadata, .carnage_output.blend library, and any attribute or constraint Alembic files. The finished scene needs its external cache files for playback.

Import an Alembic export

  1. Choose File → Import → Carnage Alembic (.abc).
  2. Select the main Alembic file from the complete export folder.
  3. Choose whether to restore the saved frame range and render timing, then import.
Set Frame RangeDefault: On

Set the scene’s start and end frames to the exported range.

Use Saved FPS and ShutterDefault: On

Restore the frame rate and shutter settings saved with the export.

Carnage imports a surface bake or restores the saved Geometry Nodes setup, materials and attributes for a point export. Keep the companion files beside the main Alembic. Importing only the raw Alembic through Blender’s general importer does not reconstruct the saved Carnage output setup.

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