ANR Tools

ANR Blood Mesh 3D

Turns Blood Sim 3D particles into a closed liquid mesh and renders it as wet blood with soft sky light and shadows, or exports it as an OBJ sequence.

Overview

Blood Mesh 3D takes the particles of ANR Blood Sim 3D on its Particles input and builds one closed, smooth mesh from them each frame: loose drops stay round, streams and sheets merge into one surface. It never runs the simulation itself, so it works on a live Sim and on a Sim reading its cache.

The mesh is rendered as wet blood: thickness darkens it, light scatters inside thin streams and wet highlights catch the light. By default a soft skylight lights it from every side, with soft shadows; connect a lat-long HDRI to Environment to light it with your set. The blood is seen through the Blood Sim's camera (its tracked Camera, or its built-in camera), so the Mesh has no camera input of its own.

The Mesh tab shapes the surface: Mesh detail, droplet size, how readily drops merge, and Dilate / Smooth / Erode filters that work like those of Houdini's Particle Fluid Surface. Look edits reuse the mesh and only render again; Mesh edits build it again. The Export tab writes the mesh as an OBJ sequence and makes a ReadGeo for it.

The Mesh follows the Blood Sim's Bullet Time: when the Sim freezes, the mesh freezes with it and keeps its motion blur while the camera moves on. With Shadows on floor and surfaces ticked on the Sim, the Mesh also darkens the floor and the collision surface where the blood blocks the light.

Inputs

ParticlesEnvironmentBlood Mesh 3DOutput
  1. Particlesrequired

    ANR Blood Sim 3D, live or reading its cache, connected directly (Dots are fine). The node meshes its particles and uses its camera, collision surface and floor.

  2. Environmentoptional

    Optional lat-long HDRI. In the Skylight modes it is the sky that lights the blood and shows in its reflections; in Key only it is used for the reflections only.

Output. Premultiplied RGBA of the wet blood at the project format, seen through the Blood Sim's camera. Merge it over the plate; with the Sim's shadows on, the alpha also carries the shadows on the floor and surfaces.

Quick start

  1. Select your ANR Blood Sim 3D and add ANR Blood Mesh 3D: it connects to Particles.
  2. View the Mesh node. Set Quality to Preview while you tune (up to 640 pixels, coarser voxels) and back to Render for the final.
  3. Shape the liquid on the Mesh tab: Droplet size for loose drops, Surface blending for how readily drops merge, Smooth to melt particle lumps.
  4. Set the look on the Look tab: Blood color, Blood absorption and Roughness, and the Shutter for motion blur.
  5. Connect an HDRI of the set to Environment for matching light and reflections, or adjust the studio sky and Light X/Y/Z.
  6. Merge the result over the plate.
  7. To use the mesh elsewhere, set OBJ folder, First frame and Last frame on the Export tab, click Export OBJ sequence, then Create ReadGeo.

The panel

The node's panel as Nuke shows it, with the values of a new node. Click any control to see what it does; tabs and sections work as in Nuke.

ANR_Blood_Mesh_3D1

Quality, mesh detail and droplets, smoothing, Dilate / Smooth / Erode filters, surface noise and the mesh info line.

QualityRender
Mesh detail0.4
Droplet size1.15
Size variation0.35
Surface blending0.85
Flow stretch1
Velocity stretch0
Volume smoothing0
Mesh smoothing8
Dilate0
Smooth2
Keep drops1
Erode0
Noise amplitude0
Noise size4
Noise octaves3
Noise roughness0.5
Noise evolution1
Noise seed0
Refresh mesh info
MeshNo frame meshed yet. View a frame, then refresh.

All controls

Mesh21 controls

Quality, mesh detail and droplets, smoothing, Dilate / Smooth / Erode filters, surface noise and the mesh info line.

Quality

QualityMenuquality

Preview: at most 640 px, 1.6x coarser voxels and at most 2 samples. Render: full resolution and Mesh detail.

Default: RenderOptions: Preview Render

Surface

Mesh detailSlidermeshDetail

Voxel size as a fraction of the particle spacing. Smaller is finer and slower. Preview uses 1.6x coarser voxels; OBJ export always uses this value.

Default: 0.4

Droplet sizeSliderdropletSize

Radius of an isolated droplet, like Blood Render 3D's Droplet size (same default). Mesh only; does not change physics.

Default: 1.15

Size variationSlidersizeVariation

Stable seeded variation of droplet sizes. Does not change physics.

Default: 0.35

Surface blendingSlidersurfaceBlend

How readily nearby drops merge into one continuous sheet. 0 keeps drops apart; 1 fuses neighbours.

Default: 0.85

Flow stretchSlideranisotropy

0 meshes round kernels. 1 shapes each kernel along its neighbours (flow-aligned), which gives smooth streams and flat sheets instead of rows of beads.

Default: 1

Velocity stretchSlidervelocityStretch

Extra length along each particle's velocity over one frame, capped for very fast particles. 0 keeps the simulated shape.

Default: 0

Smoothing

Volume smoothingSliderfieldSmoothing

Blur passes over the density volume before meshing. Removes particle bumps, but every pass shrinks small droplets and can erase spray droplets; 0 keeps every droplet.

Default: 0

Mesh smoothingSlidermeshSmoothing

Taubin smoothing iterations on the finished mesh. Smooths facets without shrinking the liquid.

Default: 8

Filtering (Houdini Particle Fluid Surface: Dilate, Smooth, Erode; in particle spacings)

DilateSliderdilate

Grows the liquid surface outward, in particle spacings, before Smooth (Houdini Particle Fluid Surface: Dilate). Followed by an equal Erode it closes small gaps and pinches between drops without fattening the liquid. 0 = off.

Default: 0

SmoothSlidersmoothIterations

Mean curvature flow iterations on the surface's distance field, after Dilate (Houdini: Smooth, Mean Curvature Flow). Melts particle lumps into one smooth liquid surface. 0 = off.

Default: 2

Keep dropsSliderkeepDrops

1 keeps small drops and thin streams at their size while Smooth flattens particle lumps. 0 is Houdini's plain mean curvature flow, which shrinks drops and thins streams.

Default: 1

ErodeSlidererode

Shrinks the liquid surface inward after Smooth, in particle spacings (Houdini: Erode). Equal to Dilate it closes gaps without growing the liquid; on its own it thins sheets and removes drops smaller than it. 0 = off.

Default: 0

Surface noise

Noise amplitudeSlidernoiseAmplitude

Peak distance, in particle spacings, the noise moves the liquid surface (like Houdini noise added to the surface SDF). 0 = off. The pattern sits in world space and does not travel with the blood.

Default: 0

Noise sizeSlidernoiseSize

Size of one noise feature, in particle spacings.

Default: 4

Noise octavesSlidernoiseOctaves

Layers of finer noise detail, each half the size of the one before.

Default: 3

Noise roughnessSlidernoiseRoughness

Strength of each finer octave relative to the one before it.

Default: 0.5

Noise evolutionSlidernoiseEvolution

How fast the noise pattern changes, in features per second. 0 = a still pattern.

Default: 1

Noise seedSlidernoiseSeed

Picks a different noise pattern.

Default: 0

Mesh info

Refresh mesh infoButtonrefreshInfo

Show the particle, vertex and triangle counts and mesh time of the last rendered frame.

MeshStatusmeshInfo

The mesh line filled by Refresh mesh info: counts, timings, whether the mesh was reused, the lighting and the motion blur samples used.

Look31 controls

Blood colour and absorption, scattering, wet highlights, sampling, motion blur and lighting: skylight, key and studio sky.

Blood

Blood colorColourbloodColor

Base colour of the blood. Blood absorption sets how fast it darkens with thickness.

Default: 0.2800000012 0.004999999888 0.008999999613

Blood absorptionSliderabsorption

How fast blood turns opaque and dark with thickness. With Scale with particle size on it is per particle size: at 8 a stream one particle thick is nearly opaque at any scene scale. Off: per world unit.

Default: 8

Subsurface scatteringSliderscattering

Internal light scattering strength. Uses liquid thickness and light-space self-shadowing; render only.

Default: 1

Scattering depthSliderscatterDepth

Distance light spreads beneath the liquid surface. With Scale with particle size on it is measured as in a scene of particle spacing 0.025 and scales with the Blood Sim spacing; off, in world units. Higher values reveal more transmission in thin streams; render only.

Default: 0.06

Scattering colorColourscatterColor

Colour of the light scattered inside the blood. It tints the inner glow of thin and backlit blood only, not the wet reflections; white is neutral.

Default: 0.15 0.004 0.003

Scale with particle sizeCheckboxscaleWithParticles

On: Blood absorption and Scattering depth act per particle size (the Blood Sim spacing), so blood of the same particle count looks the same at any scene scale; a 1 unit = 10 cm preset is as deep and opaque as a 1 unit = 1 m scene. The values are those of a scene with spacing 0.025. Off: per world unit, as before.

Default: on

Wet highlights

RoughnessSliderroughness

Width of wet specular highlights.

Default: 0.12

Wet highlightsSliderspecular

Strength of Fresnel reflection and key-light highlight.

Default: 1

Highlight anti-aliasingSliderspecularAA

Skylight modes: averages each wet highlight over the pixel instead of sampling it at one point, so the tiny highlights on small drops and spray stop sparkling, and motion-blurred ones stay smooth streaks. 1 = one pixel, up to 2 (softer); 0 = off, the look before 2026-10-04. Large, smooth blood is unchanged. Key only ignores it.

Default: 1

Sampling

Anti-aliasingSlideraaSamples

Sub-pixel samples per pixel. With motion blur a pixel gets the larger of this and Blur samples. Preview uses at most 2.

Default: 4

Motion blur

Motion blurCheckboxmotionBlur

Blurs the blood along its simulated 3D motion over Shutter. A frozen Bullet Time frame keeps its blur.

Default: on

ShutterSlidershutter

Exposure duration in frames. 0.5 is a 180-degree shutter. Uses simulated 3D velocities.

Default: 0.5

Blur samplesSliderblurSamples

Time samples over the shutter. Each one renders the blood at the middle of its slice of the shutter and smears it along its own motion across that slice, so streaks stay continuous at any count. More samples follow curving and turning motion and changing highlights more closely; each costs about one render. A pixel gets the larger of this and Anti-aliasing. Preview uses at most 2. At most 256.

Default: 8

Light

LightingMenulighting

Skylight: a soft sky lights the blood from every side, with soft shadows and the sky in the wet reflections (the Environment input when connected, otherwise a studio sky with a key and a rim softbox). Skylight + key: that plus the directional key light. Key only: the original single directional light.

Default: SkylightOptions: Skylight Skylight + key Key only

Sky intensitySliderskyIntensity

Scales the whole sky, the Environment input included.

Default: 1

Sky rotationSliderskyRotation

Turns the sky, the Environment input and both softboxes about the world up axis, in degrees.

Default: 0

Ambient fillSliderambient

Extra flat fill on top of the lighting. 0 = the lights only.

Default: 0.2

Key lightSliderkey

Directional key light intensity (Skylight + key and Key only).

Default: 1.3

Light XSliderlightX

World direction towards the key light; with the studio sky also where the key softbox sits.

Default: -0.4

Light YSliderlightY

World direction towards the key light; with the studio sky also where the key softbox sits.

Default: 0.8

Light ZSliderlightZ

World direction towards the key light; with the studio sky also where the key softbox sits.

Default: 1

Shadows on floor and surfacesCheckboxSome modesshadows

Darkens the floor and the collision surface (sphere, capsule, Alpha + depth surface or wall, OBJ) where the blood blocks the lights: soft contact shadows with Skylight, sharper ones with the key. Render only. The floor is Blood Sim's (Floor collision).

Default: off

Shadow strengthSliderSome modesshadowStrength

How dark the blood's shadows are. 1 is the physical shadow of the lights; above 1 deepens it, up to black.

Default: 1

Studio sky (when no Environment is connected)

Sky zenithColourskyZenith

Studio sky colour straight up. Used when no Environment is connected.

Default: 0.02999999933 0.03200000152 0.03500000015

Sky horizonColourskyHorizon

Studio sky colour at the horizon; the brighter band gives the wet rims. Used when no Environment is connected.

Default: 0.09000000358 0.08500000089 0.07999999821

GroundColourskyGround

Studio colour below the horizon (floor bounce). Used when no Environment is connected.

Default: 0.0120000001 0.009999999776 0.00800000038

SoftboxSlidersoftbox

Brightness of the studio sky's key softbox, placed in the Light direction: the main wet highlight. 0 = none.

Default: 45

Softbox sizeSlidersoftboxSize

Angular radius of both softboxes, in degrees. Smaller gives crisper highlights.

Default: 4

Rim softboxSliderrimSoftbox

Brightness of the studio sky's rim softbox behind the blood (opposite the key, Rim height up). 0 = none.

Default: 40

Rim heightSliderrimHeight

Height of the studio sky's rim softbox above the horizon, in degrees. It lights thin blood from behind; floor pools seen from a low camera mirror it when it is low (20 was the original height).

Default: 35

Sky quality

Sky lightsSliderskyLights

Shadowed lights the sky is split into. More gives smoother soft shadows and is slower. Preview always uses 8.

Default: 32

Export5 controls

OBJ sequence export and a ReadGeo for it.

OBJ folderFileexportFolder

Where the OBJ sequence is written. A relative path is taken from the script's folder.

Default: empty

First frameSliderexportFirst

First frame written by Export OBJ sequence. A new node starts with the script's frame range.

Default: 1

Last frameSliderexportLast

Last frame written by Export OBJ sequence.

Default: 100

Export OBJ sequenceButtonexportOBJ

Renders the frame range with a progress bar you can cancel and writes one OBJ per frame into OBJ folder. Needs a Blood Sim on Particles.

Create ReadGeoButtoncreateReadGeo

Makes a ReadGeo next to the node that reads the exported sequence frame by frame, over the exported range.

Tips

  • Refresh mesh info shows the particle, vertex and triangle counts, the mesh and render times, and whether the last frame reused its mesh.
  • Fast spray reads faint with motion blur, as in real footage at 24 fps: a shorter Shutter gives denser streaks. Raise Blur samples when curving streaks or highlights look stepped.
  • If the blood looks like rows of beads, keep Flow stretch at 1 and add a step of Smooth. Volume smoothing also removes bumps, but it erases small spray drops.
  • Use Dilate and Erode together, at the same value, to close small gaps between drops without fattening the liquid.
  • A film facing the camera, such as blood running down a neck, shows few highlights: lower Light Y or raise Softbox size.
  • Surface noise sits in world space and does not travel with the blood, so on a moving stream it crawls. Use it on slow or resting blood, with Noise evolution at 0 for a still pattern (also during a Bullet Time freeze).
  • Key only in Lighting gives a single directional light and renders fastest; Sky lights sets how smooth the skylight's soft shadows are.
  • With Scale with particle size on, absorption and scattering depth look the same at any scene scale; turn it off to set them in world units.

Good to know

  • Needs an NVIDIA GPU, Turing generation (RTX 20 series) or newer.
  • Connect the Blood Sim directly. A grade, crop or reformat between them, or a change of the script's format, stops the Mesh with an error.
  • To change the view, change the Blood Sim's camera. Camera moves never re-simulate, on a cache too.
  • The Mesh has no Bullet Time of its own: freeze the Blood Sim upstream and the mesh freezes with it.
  • OBJ export always uses the full Mesh detail, even in Preview, and writes one world-space OBJ per frame (positions and normals) named blood_mesh.####.obj. Each Blood Mesh node needs its own OBJ folder: the export refuses a folder another one uses.
  • A new node fills OBJ folder with a fresh folder next to the saved script, or in your home folder when the script is not saved yet. Check it before you export.
  • A Mesh nobody is viewing frees its GPU memory by itself after about 10 minutes, or after a minute when the GPU is nearly full; viewing it again meshes and renders the frame again.

Something unclear or missing? Write to [email protected].