graphic design tool
git clone https://git.lucas.co/cce-designer.git
nodes/scatter.json (3.1K)
1 {
2 "name": "Scatter",
3 "type": "scatter",
4 "inputs": 1,
5 "outputs": 1,
6 "params": [
7 { "name": "input", "label": "Input", "default": "", "type": "node", "description": "Node whose geometry the points are scattered inside (Volume) or on the surface of (Surface)." },
8 { "name": "mode", "label": "Mode", "type": "choice:Volume,Surface", "default": "Volume", "description": "Volume places points inside the closed input shape; Surface places them on its surface, spread by area, with optional relaxing." },
9 { "name": "points", "label": "Points", "type": "spinbox", "default": "100", "min": 10.0, "max": 10000.0, "step": 10.0, "description": "Number of points to scatter. In Volume mode fewer may be produced if the shape is thin or not closed." },
10 { "name": "seed", "label": "Seed", "type": "slider", "default": "1.1", "min": 0.0, "max": 10.0, "step": 0.1, "show_when": "mode == Surface", "description": "Random seed for Surface mode. Change it for a different point layout; the same seed always gives the same points." },
11 { "name": "relax_points", "label": "Relax Points", "type": "toggle", "default": "false", "show_when": "mode == Surface", "description": "When on, pushes the scattered points apart across the surface so they end up evenly spaced.", "group": "relax" },
12 { "name": "relax_iterations", "label": "Relax Iterations", "type": "spinbox", "default": "50", "min": 0, "max": 100, "step": 1, "show_when": "mode == Surface && relax_points == true", "description": "How many push-apart passes the points get. More passes give a more even spacing; 0 does none.", "group": "relax" },
13 { "name": "scale_radii_by", "label": "Scale Radii By", "type": "slider", "default": "1.248", "min": 0.0, "max": 2.0, "step": 0.001, "show_when": "mode == Surface && relax_points == true", "description": "Multiplier on each point's push radius, which is derived from the surface area per point. Larger values spread points more forcefully.", "group": "relax" },
14 { "name": "use_max_relax_radius", "label": "Use Max Relax Radius", "type": "toggle", "default": "true", "show_when": "mode == Surface && relax_points == true", "description": "When on, the push radius is capped at Max Relax Radius.", "group": "relax" },
15 { "name": "max_relax_radius", "label": "Max Relax Radius", "type": "slider", "default": "10", "min": 0.0, "max": 100.0, "step": 0.1, "show_when": "mode == Surface && relax_points == true && use_max_relax_radius == true", "description": "Upper limit on each point's push radius in world units, used when Use Max Relax Radius is on.", "group": "relax" },
16 { "name": "radius", "label": "Radius", "type": "slider", "default": "0.02", "min": 0.005, "max": 0.1, "step": 0.005, "show_when": "markers == true", "description": "Size of the marker sphere drawn at each point, in world units.", "group": "display" },
17 { "name": "markers", "label": "Markers", "type": "choice:true,false", "default": "true", "description": "true draws a small sphere at each point so they can be seen; false outputs bare points only, which is what Copy and other nodes should read.", "group": "display" }
18 ]
19 }