Gravity Well β‘π ‘π π £π
An attract-or-repel force field for ComfyUI's particle system
- previous_well
- GRAVITY_WELL
Buried inside this pack's much bigger "everything reactivity" pitch is a genuine, real-time particle physics system - emitters that spawn particles, and force fields that push them around, running on pymunk, a proper Python physics engine, not a rough approximation. Gravity Well is one of those force fields: a point in space that pulls particles toward it or pushes them away, the most direct of the pack's force-field nodes. Like its rotational cousin Vortex, it doesn't produce an image on its own - it outputs a GRAVITY_WELL object that you feed into the pack's particle emitter/simulation nodes to actually affect motion.
How it works
x/y (0β1, normalized to your canvas) place the well. strength sets how hard it pulls or pushes, and radius sets how far that influence reaches before falling off - a well with a small radius relative to your particle spread will barely touch particles that don't pass close to it, no matter how high you push strength. type is the fork in the road: attract pulls particles in, like a literal gravity well; repel pushes them away, more like a force field deflecting a spray of particles around an obstacle. color and draw are a separate concern from the physics entirely - they control a debug overlay showing the well's position and radius, useful while you're placing it, safe to leave at draw = 0 (the default, meaning no visualization drawn) once you've dialed in the setup. previous_well chains multiple gravity wells together into one combined field, the same composable pattern used across this pack's force-field nodes.
Inputs and outputs that matter
x/y- the well's position, normalized 0 to 1.strength(default 500, 0β5000) andradius(default 100, 10β500) - pull strength and how far it reaches.type- attract or repel.previous_well(optional,GRAVITY_WELL) - chain earlier wells to combine force fields.- Output - a single
GRAVITY_WELL, which feeds into this pack's particle emitter/simulation nodes.
Installing it
Via ComfyUI Manager: search "RyanOnTheInside," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside.git
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt
then restart. The particle system runs on pymunk, pinned in the pack's requirements - no separate model download, but a version mismatch here is a real, known source of install-time failure specifically for the particle-system side of this pack.
Common issues & troubleshooting
Nothing visible happens. Gravity Well only defines a force - on its own it produces no image at all. It needs to be wired into an actual particle emitter node from this same pack's ParticleSystems category before you'll see any motion.
Pull looks weak even at high strength. Check radius first - if it's much smaller than your particle spread, only the handful of particles passing close to the well will ever feel the effect, which reads as "not working" even at the strength ceiling. Widen the radius before assuming strength is the problem.
Attract and repel look identical. Double check type is actually set the way you expect - it's a single dropdown and easy to leave on the default when you meant to switch it, especially if you copy-pasted the node from another part of your graph.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| x | FLOAT | 0.500β1 | X-coordinate of the gravity well (0.0 to 1.0) |
| y | FLOAT | 0.500β1 | Y-coordinate of the gravity well (0.0 to 1.0) |
| strength | FLOAT | 5000β5000 | Strength of the gravity well |
| radius | FLOAT | 10010β500 | Radius of effect for the gravity well |
| type | COMBO | Type of gravity well ('attract' or 'repel') | |
| color | STRING | (255,127,0) | Color of the gravity well visualization (RGB tuple) |
| draw | FLOAT | 0.000β1 | Thickness of the gravity well visualization (0.0 to 1.0) |
| previous_wellopt | GRAVITY_WELL | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| GRAVITY_WELL | GRAVITY_WELL | β |