Multi attractor + surface deform

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!