Bug in Mesh Split

Hello
I want to cut a Mesh using MeshSplit, but I need to have clean grouping of mesh parts. For some mesh it works but for others it fails, there are too much parts and sometime bad cuts.
See here an example in the grasshopper file. I have the same problem in Rhinoceros.


bug mesh split.gh (488.7 KB)

The cutters are a polyline that is extruded. Gyroid and Polyline generated here by @DanielPiker

I think I was able to make my own tool :sweat_smile: Not bad 7.7 s vs 5 s with Legacy Component.

As asked by @wim here is a file with A mesh, some meshes as cutter and differences with my tool and Rhinoceros.

As many cutters are on the borders there are lots of little meshes. But cutter in R8 seems to still have some difficulties. 3 cuts vs 80 !!!


bug mesh split V2.gh (1.7 MB)

Rhino 8 SR0 2022-11-15 (Rhino WIP, 8.0.22319.12305, Git hash:master @ a78287b93af89333d2c1832fd6a67d321a15ee29)
License type: Commerciale, build 2022-11-15
License details: Cloud Zoo
Expires on: 2022-12-30

Windows 10 (10.0.19045 SR0.0) or greater (Physical RAM: 32Gb)

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA Quadro P2000 (NVidia) Memory: 5GB, Driver date: 12-6-2021 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 472.84
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port #0

OpenGL Settings
Safe mode: Off
Use accelerated hardware modes: On
Redraw scene when viewports are exposed: On
Graphics level being used: OpenGL 4.6 (primary GPU’s maximum)

Anti-alias mode: 4x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 12-6-2021
Driver Version: 30.0.14.7284
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 5 GB

Rhino plugins that do not ship with Rhino
C:\Program Files\Chaos Group\V-Ray\V-Ray for Rhinoceros 6\VRayForRhino.rhp “V-Ray for Rhino”
C:\Program Files\SimLab\Plugins\SimLab 3D PDF From Rhino 6\plugins\SimLabPDFExporter.rhp “SimLab PDF Exporter”
C:\Program Files\Geometry Gym\Rhino8\BullAnt.rhp “bullant” 1.5.6.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8 WIP\Plug-ins\Commands.rhp “Commands” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8 WIP\Plug-ins\AnimationTools.rhp “AnimationTools”
C:\Program Files\Rhino 8 WIP\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 8 WIP\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8 WIP\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\Constraints.rhp “Constraints”
C:\Program Files\Rhino 8 WIP\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\RhinoCode\RhinoRoslyn.rhp “RhinoRoslyn” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\RhinoCode\RhinoCodePlugin.rhp “RhinoCodePlugin” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\RhinoCode\RhinoCPython.rhp “RhinoCPython” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.0.22319.12305
C:\Program Files\Rhino 8 WIP\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8 WIP\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8 WIP\Plug-ins\ConstraintsUI.rhp “Constraints UI” 8.0.22319.12305

@laurent_delrieu sorry I missed this topic. Something is wrong here. I’ll gladly have a look.
I’ve added a bugtracker issue here: RH-71888

Hello Giuio,
I just installed Rhino 8 and tested the “new” mesh split. I see that it is very good now when the cutters I provided are joined and welded as it is explained in the BugTracker issue.
I still see an error in one place.

Without welding there are some effects of the tolerance but the results seems always not as intended. There must be 80 Main parts and with a tolerance of
tolerance = 0.1 there are 74 Main parts and 496 meshes
tolerance = 0.01 there are 74 Main parts and 438 meshes


Thank you for your kind words :smiley:

Can you send me the exact example that you are using, and that shows that error? I will then file a new bugtracker issue for it.

Unfortunately, “tolerance” of mesh booleans is not the same as “welding tolerance” or, actually, “vertex alignment tolerance” (which is what I think is happening here? Please let me know if it’s not the case).

When we align vertices, we simply put points that are nearby close to one another. Even that operation has many nuances, for example: when rows of points fall, within groups, outside tolerance, but not when taken in chained pairs. However, that operation is generally simpler. For mesh booleans, “tolerance” can be thought as “the amount of space for which a hit/miss misinterpretation is irrelevant”. So the two concepts do not overlap.

1 Like

Here is the file with 2 meshes.
The errors happens if tolerance is 0.01 not 0.001. The error is near Point at (60.898,30.753,0.000).
20231113_mesh split error.3dm (559.7 KB)

In my tool in Nautilus I use curve boolean per face so the tolerance has an effect surely different as in your algorithm.

1 Like