Nodes · 3D
ParticleSystem3D
3Dv1app
Overview
A deterministic particle system authored as a standard USD Points prim, so it carries velocities and per-particle ids for motion blur and id passes.
How to
- Choose the emitter (point, card, sphere, box).
- Shape the motion with gravity, drag and curl turbulence.
- Ramp size and colour over life.
Inputs
| Input | What it takes |
|---|---|
| in | the image this node works on |
| emit | — |
Outputs
| Output | Type |
|---|---|
| out | Scene |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| tx | Float | 0.0 | Translate X — position along the world X axis, metres. |
| ty | Float | 0.0 | Translate Y — position along the world Y axis (up), metres. |
| tz | Float | 0.0 | Translate Z — position along the world Z axis, metres. The camera looks down −Z. |
| rx | Float | 0.0 | Rotate around X, degrees. |
| ry | Float | 0.0 | Rotate around Y (turntable), degrees. |
| rz | Float | 0.0 | Rotate around Z (roll), degrees. |
| sx | Float | 1.0 | Scale along X. 1 = unchanged. |
| sy | Float | 1.0 | Scale along Y. |
| sz | Float | 1.0 | Scale along Z. |
| seed | Int | 1 | Change it for a different-but-equally-valid version of the same effect. The same seed always gives the same sim. |
| start_frame | Int | 1 | The frame the simulation begins — before it, nothing exists. Scrubbing anywhere replays from here, so the answer is the same whether you played or jumped. |
| fps | Float | 24.0 | The integration step. Set it to the project rate — a sim stepped at a different rate than the timeline drifts against it; the panel warns when they disagree. |
| birth_rate | Float | 200.0 | Particles born per second. The count settles at roughly birth_rate × life once the system is running. |
| max_particles | Int | 20000 | A hard ceiling — emission stops here rather than growing without bound, so the cost stays predictable. |
| emitter | Choice | point | Where particles are born: a point, a flat card, the surface of a sphere, or the volume of a box — sized by emitter_size. pointcardspherebox |
| emitter_size | Float2 | [1.0, 1.0] | The emitter's extent in world units (width and height; the sphere and box use the first as radius / half-size). |
| speed | Float | 3.0 | Initial speed along direction, world units per second. |
| spread | Float | 0.25 | How wide the emission cone is: 0 is a beam along the direction, 1 is every direction equally. |
| direction_x | Float | 0.0 | The X of the emission direction (normalised with Y and Z). |
| direction_y | Float | 1.0 | The Y of the emission direction — up by default. |
| direction_z | Float | 0.0 | The Z of the emission direction. |
| life | Float | 3.0 | Seconds a particle lives. life_variation randomises it either side, so they don't all die on the same frame. |
| life_variation | Float | 0.3 | Random spread on each particle's lifetime, as a fraction of life: 0.3 means ±30 %. |
| size_birth | Float | 0.05 | A particle's size when born, world units. |
| size_death | Float | 0.01 | A particle's size at the end of its life — it interpolates between the two. |
| color_birth | Color | [1.0, 0.6, 0.25, 1.0] | A particle's colour when born. |
| color_death | Color | [0.35, 0.1, 0.05, 1.0] | A particle's colour at the end of its life, faded to over its lifetime. |
| gravity_x | Float | 0.0 | The X of the constant acceleration on every particle, world units per second². |
| gravity_y | Float | -9.81 | The Y of gravity — −9.81 is Earth, down. |
| gravity_z | Float | 0.0 | The Z of the constant acceleration. |
| drag | Float | 0.1 | How quickly particles lose speed to the air — 0 coasts for ever, 1 stops within a second. |
| turbulence | Float | 0.0 | Curl-noise wind, in m/s². It swirls without blowing particles out of a region, which is what makes it read as air rather than a fan. |
| turbulence_scale | Float | 0.25 | The feature size of the turbulence field in world units — small is jitter, large is slow eddies. |
| bounce | Bool | false | Particles bounce off a horizontal floor at floor_y instead of falling through. Restitution is how much speed survives the hit; friction slows them along the ground. |
| floor_y | Float | 0.0 | The height of the floor particles bounce off (when bounce is on), world units. |
| restitution | Float | 0.4 | How much speed survives a bounce: 0 sticks, 1 bounces back to full height. |
| friction | Float | 0.25 | How much sideways speed a bounce takes away: 0 slides freely, 1 stops dead on landing. |
| attract | Float | 0.0 | A point that pulls particles in (positive) or pushes them away (negative), at attract_x/y/z. Falls off with distance, softened at the centre so passing through it is survivable. |
| attract_x | Float | 0.0 | The X of the attractor's position, world units. |
| attract_y | Float | 0.0 | The Y of the attractor's position. |
| attract_z | Float | 0.0 | The Z of the attractor's position — attract sets the pull toward it (negative repels). |
| vortex | Float | 0.0 | Swirl around the vertical axis through the attract point — a tornado rather than a fan. Combine with a gentle attract for a drain. |
| emit_width | Float | 4.0 | How wide the emission image maps across the scene, in metres. The emit input's brightness decides WHERE particles are born inside it. |
| emit_height | Float | 4.0 | Image emission: the height in world units the wired emit image is stretched over (its brightness is the birth-probability map). |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap). |
Known edges
The sim is bit-identical every time: the same seed and frame give the same answer whether you played there or scrubbed there.
See also
- The 3D system — How to put geometry, cameras and volumes in the comp — without becoming a 3D application.