test-1.gh (25.9 KB)
Hi everyone,
I’m working on a surface deformation definition in Grasshopper using multiple attractor points and a Graph Mapper, and I’m having trouble understanding how to properly combine the influence of multiple attractors.
Goal:
I want to deform a surface (move points in Z direction) so that:
-
Some attractor points push the surface up (peaks)
-
Some attractor points pull the surface down (valleys)
-
The result is a smooth, continuous surface without hard boundaries
Current approach:
-
I generate a grid of points on a surface
-
Compute distances from each point to multiple attractor points
-
Remap the distances to 0–1 and invert them (closer = stronger influence)
-
Use a Graph Mapper to control the falloff
-
Multiply by an amplitude and move points in Z
Problem:
When I try to use multiple attractors:
-
If I only use the closest attractor, I get visible boundaries (like Voronoi regions)
-
If I try to cull distant attractors, I get empty branches and data structure issues
-
I’m not sure how to properly combine multiple attractor influences into a single deformation value per point
Main question:
What is the correct or recommended way to combine multiple attractor influences?
For example:
-
Should I sum all attractor effects (mass addition)?
-
Should I normalize or weight them?
-
Is there a standard approach to avoid overly smooth or overly flat results?
Also, is there a better strategy than culling (e.g., using distance thresholds but keeping the data structure intact)?
Any advice on best practices for multi-attractor surface deformation would be really appreciated.
Thanks in advance!
