Grasshopper block display is slow, exploded block display is fast - why?

Hi. I am having an issue with display performance and I don’t understand it. Could someone help me and explain it, please?

  1. Having 2 block definitions, distributed in Grasshopper to 57725 instances. Preview of “Model block instance” display performance is terrible. I can’t event rotate the view. Turning the component’s preview off solves the issue.
    “TestMaxSpeed” = 106.34 seconds. (0.94 FPS)

  2. I plug in the “Explode object” component. Resulting in 57725 “Model mesh”. The preview performace get slightly better.
    “Testmaxspeed” = 18.78 seconds. (5.32 FPS)

  3. Then I use exploded blocks and connect “Mesh param” component. Almost the same performance.
    “Testmaxspeed” = 18.62 seconds. (5.37 FPS)

  4. Finally I join meshes.
    “Testmaxspeed” = 1.64 seconds. (60.98 FPS)

I noticed that it takes some time to get from “Model block instance” to “Mesh” (joined). Is this the reason why it takes so long to preview Model block instances? The geometry displayed each time is exactly the same, that’s why I can’t understand this.


System info

Rhino 8 SR10 2024-7-30 (Rhino 8, 8.10.24212.13001, Git hash:master @ bf71fa5917a747cb0d08481b3fcbd3bce0923e77)
License type: Commercial, build 2024-07-30
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 63GB)
.NET 7.0.0

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA GeForce RTX 3090 (NVidia) Memory: 24GB, Driver date: 7-10-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 560.70
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port 0
- Secondary monitor attached to adapter port 1

Secondary graphics devices.
AMD Radeon™ Graphics (AMD) Memory: 1GB, Driver date: 1-2-2024 (M-D-Y).
> Accelerated graphics device with 5 adapter port(s)
- There are no monitors attached to this device!

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: 7-10-2024
Driver Version: 32.0.15.6070
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 24 GB

Rhino plugins that do not ship with Rhino
C:\Users\PC\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\NVIDIADenoiser\0.4.3\NVIDIADenoiser.Windows.rhp “NVIDIADenoiser.Windows” 0.4.3.0
C:\Users\PC\AppData\Roaming\McNeel\Rhinoceros\packages\8.0\SubstanceImporter\2.0.7\Substance.Win.rhp “SubstanceImporter” 2.0.7.0
C:\ProgramData\McNeel\Rhinoceros\7.0\Plug-ins\Datasmith Rhino Exporter (d1fdc795-b334-4933-b680-088119cdc6bb)\DatasmithRhino7.rhp “Datasmith Exporter” 5.3.1.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 8\Plug-ins\Commands.rhp “Commands” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 8\Plug-ins\export_ACAD.rhp “AutoCAD file export : export_ACAD”
C:\Program Files\Rhino 8\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 8\Plug-ins\MeshCommands.rhp “MeshCommands” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\RhinoCycles.rhp “RhinoCycles” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 8.10.24212.13001
C:\Program Files\Rhino 8\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 8\Plug-ins\Displacement.rhp “Displacement”
C:\Program Files\Rhino 8\Plug-ins\SectionTools.rhp “SectionTools”

1 Like

No ideas?

Joining all into one mesh will always be the fastest. It is a trick game engines use to be very fast.

Displaying in blocks takes time as each block must be transformed individually. Caching becomes quite difficult within Grasshopper because of its live updating.

Can you send us the model? Looks like a bunch of smaller meshes in many instances. We can take a look to see if there is any way to make it more efficient

1 Like

Hi @PetrVacek,

We introduced some improvements in this area in 8.17.

Now it should be at least as fast as exploded geometry.

Please give it a try.

2 Likes

Thank you Kike for the performance improvement :black_heart: Tested on 5 000 instances and everything works smoothly. I will test is on the original file and let you know :rhinoceros:

Did you have a chance to invesigate also the coordinate arrows display bug?

When zoomed out - everything ok:

When zoomed closer in - arrows get misaligned:

1 Like