ShrinkWrap Grasshopper component multiple times slower than Rhino command

I suppose that one of the first things that ShrinkWrap does is meshing the input geometries. Using the same ShrikWrap settings, the Rhino command in my tests was multiple times faster with the same input (hundreds of extrusions and Breps) than the Grasshopper component.
However, when I manually meshed the inputs, the Grasshopper component was performing as fast as the Rhino command.

I think that the Grasshopper ShrinkWrap component might produce unnecessarily dense meshes when it has to convert NURBS to meshes compared to the Rhino command.

SystemInfo

Rhino 8 SR7 2024-3-28 (Rhino 8, 8.7.24088.06001, Git hash:master @ f39d2478d0e77eb325f46d0c6d8cfc8754fe44b2)
License type: Commercial, build 2024-03-28
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 64GB)
.NET 7.0.11

Computer platform: LAPTOP - Plugged in [100% battery remaining]

Non-hybrid graphics configuration.
Primary display and OpenGL: NVIDIA RTX A3000 12GB Laptop GPU (NVidia) Memory: 11GB, Driver date: 2-15-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 551.61
> Integrated accelerated graphics device with 4 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
Primary OpenGL: NVIDIA RTX A3000 12GB Laptop GPU (NVidia) Memory: 11GB, Driver date: 2-15-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 551.61
> Integrated accelerated graphics device with 4 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port

Secondary graphics devices.
Intel(R) UHD Graphics (Intel) Memory: 1GB, Driver date: 6-15-2023 (M-D-Y).
> Integrated graphics device with 4 adapter port(s)
- Secondary monitor is laptop’s integrated screen or built-in port

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: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 2-15-2024
Driver Version: 31.0.15.5161
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 11520 MB

Rhino plugins that do not ship with Rhino
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\8.0\Plug-ins\Bella (813de3fb-18eb-405f-bfcd-b0b4d3da91fb)\24.2.0.0\bella_rhino.rhp “Bella” 24.2.0.0
C:\Users\Czaja\Desktop\Rhino_7_Win_2023.0417\HDRLightStudioTexture.rhp “HDRLightStudioTexture”
C:\Program Files\Common Files\McNeel\Rhinoceros\8.0\Plug-ins\Crayon (39629248-4fa6-47b8-83c7-745a7efea259)\1.2.0.0\Crayon\Crayon.rhp “Crayon” 1.0.0.0
C:\Users\Czaja\AppData\Roaming\McNeel\Rhinoceros\BlockEditNew\BlockEditNew.rhp “BlockEdit” 1.0.0.0
C:\ProgramData\McNeel\Rhinoceros\7.0\Plug-ins\Datasmith Rhino Exporter (d1fdc795-b334-4933-b680-088119cdc6bb)\DatasmithRhino7.rhp “Datasmith Exporter” 5.4.0.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\ShrinkWrap.rhp “ShrinkWrap” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.7.24088.6001
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

shrinkwrap compare2.3dm (8.3 MB)
shrinkwrap compare2.gh (23.1 KB)

2 Likes

That’s a very interesting point, any updates from the DEV team ?

I have a YT open to get a method in RhinoCommon that will allow Grasshopper to take on a pile of mixed geometry and process it into meshes like the command uses. There was an edge case issue in the way Extrusions are getting handled that still needs to be addressed. This is likely what you’re running up against in this particular instance.

https://mcneel.myjetbrains.com/youtrack/issue/RH-77155

Cool, thanks for having it tracked

1 Like