Deintersecting overlapping spheres by iteratively extending voronoi diagrams based on point scales.
Point wrangle inside a SOP solver node:
int nbs[] = neighbours(0, i@ptnum);
foreach(int nb; nbs){
vector pos_nb = point(0, 'P', nb);
float scale_nb = point(0, 'pscale', nb);
float dist_nb = distance(v@P, pos_nb);
vector dir_nb = normalize(v@P - pos_nb);
if(dist_nb < (scale_nb + f@pscale)){
v@P += dir_nb * 0.01;
}
}