Geometry Pipeline Components retriggered from Rhino Geometry Selection

Hello fellow grasshoppers,

I am currently working on a UI that depends on user attributes and interactive selection displays, and while developing I came across strange behavior emerging from the “dynamic geometry pipeline” component from Human. The issue was that whenever I selected something in Rhino, the interactive pipeline component was retriggering its inputs (which in turn leads to my whole grasshopper definition recomputing).

While taking a closer inspection, I found that this had to do with a component I was using, made by @AndersDeleuran, that identifies whenever any geometry was selected in the rhino viewport and these dynamic pipeline components made by @andheum.

Here is a short video of the phenomenon I’m describing:

As you can see as soon as I delete the component, the updating stops. But whenever they are both present on the grasshopper document, the trouble starts.

Any insight on the topic is welcomed. I already started looking into it and will post any updated.

Here are the sample files for anyone interested in helping with this:
AutoUpdatingBug.3dm (26.7 KB)
AutoUpdatingDebug.gh (5.1 KB)

Hmm, that’s weird. As I wrote on Instagram, I think it might have be related to my ScheduleSolution implementation becoming “entangled” somehow (e.g. as seen here). But I can’t seem to reproduce the bug on my system (using Human 1.1.0):

SystemInfo

Rhino 7 SR37 2024-4-16 (Rhino 7, 7.37.24107.15001, Git hash:master @ d2e42f70b9d3aa58f6053e2998a0db2abcd7555b)
License type: Commercial, build 2024-04-16
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 32Gb)

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

Hybrid graphics configuration.
Primary display: Intel(R) Iris(R) Xe Graphics (Intel) Memory: 1GB, Driver date: 11-7-2023 (M-D-Y).
> Integrated graphics device with 4 adapter port(s)
- Windows Main Display is laptop’s integrated screen or built-in port
Primary OpenGL: NVIDIA RTX 2000 Ada Generation Laptop GPU (NVidia) Memory: 8GB, Driver date: 6-26-2023 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 536.45
> Integrated accelerated graphics device (shares primary device ports)
- Video pass-through to primary display 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: 8x
Mip Map Filtering: Linear
Anisotropic Filtering Mode: High

Vendor Name: NVIDIA Corporation
Render version: 4.6
Shading Language: 4.60 NVIDIA
Driver Date: 6-26-2023
Driver Version: 31.0.15.3645
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 8188 MB

Rhino plugins that do not ship with Rhino
C:\Users\andersh\AppData\Roaming\McNeel\Rhinoceros\packages\7.0\BIG_RhinoRibbon\1.0.8886.16690\BIG_RhinoRibbon.rhp “BIG_RhinoRibbon” 1.0.8886.16690

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 7\Plug-ins\Commands.rhp “Commands” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 7\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp “RhinoCycles” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp “Displacement”

Edit: Just updated to Human 1.3.1 and that still does not reproduce the bug. I wonder if you have something else installed that might mess with things :thinking:

1 Like

Weird, let me see if maybe it has to do with Rhinoceros version.

Rhino 7 SR36 2023-12-12 (Rhino 7, 7.36.23346.16351, Git hash:master @ 11a364321297eb8cdb34405a3308d8911f58706d)
License type: Commercial, build 2023-12-12
License details: Cloud Zoo

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

Computer platform: DESKTOP

Standard graphics configuration.
Primary display and OpenGL: NVIDIA GeForce GTX 1660 (NVidia) Memory: 6GB, Driver date: 2-27-2024 (M-D-Y). OpenGL Ver: 4.6.0 NVIDIA 551.68
> Accelerated graphics device with 4 adapter port(s)
- Windows Main Display attached to adapter port #0

Secondary graphics devices.
Intel(R) UHD Graphics 630 (Intel) Memory: 1GB, Driver date: 4-3-2022 (M-D-Y).
> Integrated graphics device with 3 adapter port(s)
- Secondary monitor 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: 2-27-2024
Driver Version: 31.0.15.5168
Maximum Texture size: 32768 x 32768
Z-Buffer depth: 24 bits
Maximum Viewport size: 32768 x 32768
Total Video Memory: 6 GB

Rhino plugins that do not ship with Rhino
C:\Users\DanielGalvánEcheverr\DUO\200_RD - D\02_AutoLot3d\01 AutoCivil\Lista de Plugins\PLUGINS\elefront422 (2)\elefront421\ElefrontProperties.rhp “ElefrontProperties” 1.0.0.0
C:\Users\DanielGalvánEcheverr\Downloads\rhinoplugin\RhinoToGrasshopper.rhp “RhinoToGrasshopper” 1.0.0.0

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 7\Plug-ins\Commands.rhp “Commands” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 7\Plug-ins\RPC.rhp “RPC”
C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\RhinoRender.rhp “Legacy Rhino Render”
C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 7\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp “RhinoCycles” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 7.36.23346.16351
C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp “Displacement”

In my experience sometimes it takes many selections for this to happen, it does not happen always. But just tried it on Rhino 7, 7.37.24107.15001, but it still happened. Let me check by deleting plugins one by one until this stops :stuck_out_tongue:


Looks like even with no plugins and in another computer, I can recreate this. It really is odd that you can’t, but at least that is a clue. Lol

Edit: I already tried in three different computers, including rhino 6 and was able to recreate this every time. Anyone else can confirm if this happens?

So, I just found out this does not have anything to do with the Human component called “Dynamic Pipeline”, it also retriggers the default component from grasshopper called “Geometry Pipeline”, as shown in the following video.

I notice that I’m on a slightly newer service release. I doubt that would be related, but might be worth updating. I’ll see if I can provoke the bug on my system today. If you close Rhino, reopen it, and open the two files, does the bug occur from the get go? Or does it show later, where something might trigger it?

Edit: Just tried running it on my personal laptop and can reproduce the bug now. This is the system:

SystemInfo

Rhino 7 SR37 2024-4-16 (Rhino 7, 7.37.24107.15001, Git hash:master @ d2e42f70b9d3aa58f6053e2998a0db2abcd7555b)
License type: Educational, build 2024-04-16
License details: Cloud Zoo

Windows 11 (10.0.22631 SR0.0) or greater (Physical RAM: 16Gb)

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

Standard graphics configuration.
Primary display and OpenGL: Intel(R) Iris(R) Xe Graphics (Intel) Memory: 128MB, Driver date: 4-2-2024 (M-D-Y). OpenGL Ver: 4.6.0 - Build 31.0.101.5388
> Integrated graphics device with 4 adapter port(s)
- Windows Main Display 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: Intel
Render version: 4.6
Shading Language: 4.60 - Build 31.0.101.5388
Driver Date: 4-2-2024
Driver Version: 31.0.101.5388
Maximum Texture size: 16384 x 16384
Z-Buffer depth: 24 bits
Maximum Viewport size: 16384 x 16384
Total Video Memory: 128 MB

Rhino plugins that do not ship with Rhino

Rhino plugins that ship with Rhino
C:\Program Files\Rhino 7\Plug-ins\Commands.rhp “Commands” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\rdk.rhp “Renderer Development Kit”
C:\Program Files\Rhino 7\Plug-ins\RhinoRenderCycles.rhp “Rhino Render” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\rdk_etoui.rhp “RDK_EtoUI” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\rdk_ui.rhp “Renderer Development Kit UI”
C:\Program Files\Rhino 7\Plug-ins\NamedSnapshots.rhp “Snapshots”
C:\Program Files\Rhino 7\Plug-ins\IronPython\RhinoDLR_Python.rhp “IronPython” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\RhinoCycles.rhp “RhinoCycles” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\Grasshopper\GrasshopperPlugin.rhp “Grasshopper” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\Toolbars\Toolbars.rhp “Toolbars” 7.37.24107.15001
C:\Program Files\Rhino 7\Plug-ins\3dxrhino.rhp “3Dconnexion 3D Mouse”
C:\Program Files\Rhino 7\Plug-ins\Displacement.rhp “Displacement”

1 Like

I tried looking for differences in my two setups. And in the system that does not present the bug, I have this option turned off. When I turned it off on the one with the bug, the bug seems to not present itself anymore. Maybe you can see if that makes any difference on your end?

Edit: Just tried enabling this option on my work laptop and can confirm that it appears to be the/a cause.

3 Likes

I can confirm this seems to be issue! Very weird, but interesting. I appreciate a lot your help @AndersDeleuran!

Still, should this be considered a bug? I think only someone from McNeel could answer that surely, but it feels like one.

Again, thank you so much!

1 Like

Forgot to reply here. It’s certainly unexpected behavior to me (i.e. that this option would trigger some event to be called). But it might be by design. Either way, it would indeed be good to hear from McNeel. Also, my code might still be dumb and contributing to the behavior in this particular case :man_shrugging:

1 Like

I ran into this issue as well, and thankfully your solution @AndersDeleuran as well.

I tried to build my own dynamic pipeline and it produced the exact same phenomenon, for me it is when subscribing to the RhinoDoc.ModifyObjectAttributes event that it starts to occur. Only when deselecting curves though, not upon selecton…

The only explanation I can think of is if the turning off control points on upon deselection (that happens automatically if above box is ticked in settings) is considered a modification of the object attributes? Why the same thing does not happen upon selection is beyond me in that case.

Turning of the listening of attributes in the dynamic pipeline removes the effect for me as well, but that’s not a solution for when I want to listen to user text changes.

I think @Frusciante is far from alone in using a system with a dynamic pipeline and user text for automation. It would be nice if this could work even if one wants the control points to turn on for easy modifications. For now it seems some kind of hax has to be implemented to make this work.

2 Likes