FUSION · NODE REFERENCE
pCustom
Programmable particle properties and image-sampled expressions
A programmable particle processor that directly recalculates position, velocity, rotation, spin, size, color and other properties, with two dedicated image inputs available to expressions.
pCustom
Overview
What pCustom does
pCustom belongs inside a particle chain between pEmitter/pImageEmitter and pRender. It is not a normal image effect and does not create particles: it evaluates custom expressions and writes new values into properties of particles that already exist.
The important distinction from pCustomForce is the level of intervention. pCustomForce adds calculated force/torque to the simulation, while pCustom can directly rewrite particle state such as position, velocity, rotation, spin, size and color. That makes pCustom more general, but it also makes unstable or non-physical behavior easier to create accidentally.
pCustom has three permanent inputs: orange Particles, green Image 1 and magenta Image 2. Image 1/2 exist specifically for custom image calculations and pixel-read functions. They are real 2D image inputs, not masks and not particle streams.
A fourth input is conditional. Region = Bitmap or Mesh exposes a dynamic Region socket: Bitmap accepts a 2D image/selectable channel and Mesh accepts a 3D mesh. The Resolve 21 reference describes this dynamic socket as teal or white depending on how/when it appears.
The Numbers page exposes eight animatable Number In 1–8 controls. Current values are available to expressions as n1…n8. The Custom expression system also documents time-sampled n#_at(t) access, making Number In controls suitable for art-directable parameters rather than hard-coded constants.
Positions are physically four 3D controls, Position 1–4, with X/Y/Z components. The current Resolve 21 manual has a heading that says Position 1–8, but its own Inspector image and variable table show Position 1–4 and p1x/p1y/p1z … p4x/p4y/p4z. This article follows the observable four-position control set.
Setup 1–8 are intended for calculations that do not depend on a particular particle and can be evaluated once per frame before the rest of the custom math. This is the right place for global coefficients, time-derived values and reusable setup work.
Intermediate 1–8 run after Setup and provide another layer of reusable math before the Particle expressions. Splitting a long expression into staged values is easier to debug than repeating one dense formula in multiple particle channels.
The Resolve 21 reference is internally inconsistent about the result-variable ranges: the Inspector exposes eight Setup and eight Intermediate fields, the prose explicitly describes i1…i8 for Intermediate, while its summary table still shortens some Setup/Intermediate ranges to the first four. Treat the first four as unambiguously documented and live-check higher indices in the target Resolve build before relying on them in a production rig.
The Particle page is the core of pCustom. It exposes particle position px/py/pz, velocity vx/vy/vz, rotation rx/ry/rz and spin sx/sy/sz to the expression system. An expression computes the next property value; for example `vx + n1` reuses current vx and can accumulate its effect across frames.
Additional exposed properties include current size, particle id and r/g/b/a color, along with time, age and lifespan. These values let motion or appearance depend on particle age, identity, current size or composition time.
Image 1/2 also provide aspect-corrected particle coordinates pxi1/pyi1 and pxi2/pyi2 plus image dimensions w1/h1 and w2/h2. The same Custom operators, functions and conditionals are available to pCustom, including documented pixel-read functions such as getr1w(x,y) and getz2b(x,y).
Region information is available to expressions as well as to Conditions. rgnhit reports a hit, rgndist exposes distance from the Region, condscale exposes Region strength at the particle, rgnix/rgniy/rgniz report intersection position, and rgnnx/rgnny/rgnnz report the surface normal.
mass is listed among the exposed particle properties, but the reference explicitly says it is not currently used by anything. Do not build production physics around mass without testing the exact Resolve version.
Conditions run as a filter for the custom operation. Probability is evaluated for each particle on every frame, Start/End Age restricts a normalized fraction of lifespan, and Set Mode plus Set 1–32 filter Sets that were assigned upstream.
Region Mode and Region add a spatial condition. Built-in Bezier, Cube, Line, Rectangle and Sphere regions live inside the node. Bitmap and Mesh create the dynamic Region input. Do not confuse that Region input with permanent Image 1/Image 2: the image inputs feed expression data, while Region determines where the node itself is allowed to act.
You do not need to use every subsystem at once. A simple pCustom rig can be Particles plus one Particle expression. Add Numbers, Positions, Images, Setup/Intermediate, Conditions and Region only when they make the result clearer or more controllable.
Develop pCustom against a small predictable particle stream. Change one channel, keep Probability at 1, and remove spatial restrictions while validating the first expression. Then add inputs and filters one at a time and inspect playback because particle state evolves over time.
Judge the final result after pRender. pCustom itself does not produce an RGBA frame. Image 1 and Image 2 may carry ordinary images into the node, but they are auxiliary data sources for custom calculations rather than the pCustom output.
When to use it
Recalculate a precise procedural trajectory instead of stacking preset force nodes
Drive velocity, rotation or spin from custom expressions
Link motion or appearance to age, lifespan, id, time or current particle state
Expose formula constants through Number In 1–8 and animate them like normal controls
Use Position 1–4 as 3D reference points for procedural motion
Sample Image 1/Image 2 through pixel-read functions and drive particle properties from image content
React to Region contact through rgnhit, rgndist and intersection/normal variables
Restrict custom logic by Probability, age, Sets or a spatial Region
pCustom in context
Screenshots referenced by this article. Open an image to inspect it at full size.
Example for pCustom.
Original imageExample for pCustom.
Original imageExample for pCustom.
Original imageExample for pCustom.
Original imageExample for pCustom.
Original imageExample for pCustom.
Original imageExample for pCustom.
Original image