Skip to content

Release v3.1

Latest

Choose a tag to compare

@Stukova Stukova released this 30 Jun 04:08

πŸŽ‰ What's New

Collision Force

Screen.Recording.2026-06-13.at.8.03.15.AM.mov

A new GPU-accelerated collision force keeps points from overlapping β€” the missing counterpart to d3-force's forceCollide. Many-body repulsion acts on point centers and ignores radius, so it can't keep sized points apart; collision fills that gap.

It uses a spatial-hash grid rebuilt each tick (not naive O(nΒ²) checks), so it scales to large graphs. GPU resources are allocated lazily on first use, so graphs that never enable it pay no cost.

const config = {
  simulationCollision: 0.95,        // strength; 0 (default) disables it
  simulationCollisionPadding: 2,    // extra gap between point edges
  simulationCollisionRadius: undefined, // 0/undefined β†’ derive from size (size * 0.5)
}

All three can be changed in real time while the simulation runs.

Tip: keep simulationLinkDistance larger than the combined radii of linked points, or springs pull them into an unresolvable pile.

See the new Collision and Collision Stress Test (50K points) stories for working examples.