The TLDR version; Feature request: A weld command for subD and meshes based on a float distance.
SubDs are a great addition! Very glad they’re coming to Rhino! If the following is already a feature, please correct me! I’d love to use it. Proposed feature:
A subD and mesh command to weld selected subD or mesh vertices based on a user-specified float distance.
If distance is 0, only coincident vertices are welded (just like the current weld command, except weld doesn’t work on subD yet). Any selected vertices beyond this distance are silently ignored. The location of the new welded vertex is the average for all vertices in each respective search distance set. This is how Maya’s merge (MEL: polyMergeVertex) command works, or the Fuse node from Houdini.
It’s extremely useful for everyday edge/box polygon and subD modeling when set to 0. You can just snap two or more vertices together, box select them (and a bunch of others) one click and you’re done! If you select only 2 vertices, the distance is assumed to be infinite and the weld always happens. Any vertices beyond the distance are silently ignored. Any garbage in your selection that isn’t a vertex - ignored. A cool option would be only considering vertices along a naked edge, but this should be optional.
Why it’s useful:
It’s very useful for dealing with dense 3D scan data, or after breaking a model up into logical parts for things like UV mapping, deforming, and merging things back together or when doing cleanup work, i.e. dealing with downloaded not-so-water-tight meshes, mirroring a mesh with vertices that don’t all fall on the symmetry axis, etc.
The existing ‘WeldVertices’ command doesn’t give you a distance tolerance, and even for coincident vertices, it doesn’t work on subD. The Join command welds only coincident vertices for subD, but only when joining two separate subD objects. i.e. you can’t join two edges/vertices from the same subD (pictured) even if the result still be a valid subD. The stitch command does this, but requires that you select edge sets and will fail if anything in the selection cannot be stitched or the selection sets are of unequal length, etc.
Currently, you have to use stitch, select one edge set, select another edge set, stitch it, then you have to run _RemoveCrease and select the resulting edge set again. For non-trivial models with non-trivial topology this is intractable.
Weather you have 2 or 20,000 edges to join in a 3D scan of some no-edge-loops-in-sight geometry - the distance based solution works nicely. If a face collapses because the merge distance is too great, it’s my problem, I’ll deal with it.
R-Tree me! Anybody? Pretty please?!