git.lucas.co / cce-designer
graphic design tool
git clone https://git.lucas.co/cce-designer.git

nodes/detangle.json (2.9K)

 1 {
 2  "name": "Detangle",
 3  "type": "detangle",
 4  "inputs": 1,
 5  "outputs": 1,
 6  "params": [
 7   { "name": "input", "label": "Input", "type": "node", "default": "", "description": "The geometry to untangle. Its points are pushed apart where the surface comes closer to itself than the Thickness." },
 8   { "name": "method", "label": "Method", "type": "choice:Points,Surface", "default": "Points", "description": "Points pushes pairs of nearby points apart. Surface tests points against nearby triangles, and inside a simnet also puts back points that passed through the surface." },
 9   { "name": "thickness", "label": "Thickness", "type": "slider", "default": "1.00", "min": 0.0, "max": 8.0, "step": 0.05, "description": "How close the surface may come to itself, in mean edge lengths, so the setting holds after a remesh. Larger keeps sheets further apart; 0 turns the node off." },
10   { "name": "rings", "label": "Rings", "type": "spinbox", "default": "2", "min": 0.0, "max": 6.0, "step": 1.0, "description": "How many edge rings around each point are excluded from contact, since near neighbours are close by construction. More rings ignore more of the local surface." },
11   { "name": "iterations", "label": "Iterations", "type": "spinbox", "default": "4", "min": 1.0, "max": 32.0, "step": 1.0, "description": "Most separation passes per evaluation. More resolves deeper contacts; the solve stops early once a pass finds nothing to separate." },
12   { "name": "edge_contact", "label": "Edge Contact", "type": "toggle", "default": "true", "show_when": "method == Surface", "description": "Also tests edges against nearby edges, catching two edges that cross with no point near a triangle. Much more thorough on dense contact, and slower.", "group": "surface" },
13   { "name": "fold_contact", "label": "Fold Contact", "type": "toggle", "default": "true", "show_when": "method == Surface", "description": "Inside a simnet, also catches the surface folding through its own excluded neighbourhood since the step began, and puts it back. Has no effect outside a simnet.", "group": "surface" },
14   { "name": "step_limit", "label": "Step Limit", "type": "slider", "default": "0.00", "min": 0.0, "max": 2.0, "step": 0.05, "show_when": "method == Surface", "description": "Inside a simnet, caps how far each point may move in one step, in thicknesses, before contacts are resolved. 0 means no limit; meant for use with substeps.", "group": "surface" },
15   { "name": "group", "label": "Group", "type": "group", "default": "", "description": "Only points in this group are moved; the rest still push but stay put. Empty moves every point.", "group": "where" },
16   { "name": "tangled_group", "label": "Tangled Group", "type": "group", "default": "", "description": "If set, a point group of this name is written with the points of edges and triangles still crossing each other after the solve. Empty skips this extra search.", "group": "output" }
17  ]
18 }