Back propagation in Grasshopper?

Don’t know if I’m even using the term right.
What I mean is what Antimony, a somewhat old and abandoned research software that Matt Keeter https://twitter.com/impraxical developed a while ago, can do.
It is based on Directed Acyclic Graphs, just like GH, but you can select objects on the viewport and the movement that you make on them is “back propagated” to the sliders and values in the graph canvas.
If not, I’m really curious about the barriers/grounds (if not too technical) to achieve it.

Speaking in terms of Grasshopper it’s technically somewhat possible to have upstream components (i.e. Sliders) updated by downstream components although some “black-magic” scripting is needed to expire the upstream components and recompute the solution accordingly. It should be said that the Grasshopper solver is not really intended to be used in this way and in every post I read about topics like this, David would always advise against it (please correct me if I’m wrong).

When you want to change objects in the viewport (which would actually be in Rhino if I understand correctly) and have Grasshopper recognize this change and update sliders accordingly, the main barrier from my point of view would be that the Rhino document is actually a completely different thing from the Grasshopper document.
So objects would need to be baked from GH into the Rhino doc, then read back into GH and still have all the information about their creation in GH associated with them. Here is where I don’t really think that this is possible.

One way I could imagine would be to have something similar to the “Grab” component in Kangaroo which lets you grab GH points in the viewport and move them around, so the Rhino doc is not involved. But still I can’t think of a way to have the script know which slider should be changed if a change is made in the viewport.

Surely someone else knows more :wink: I hope I could help a bit anyway.

2 Likes

:smiley: @efestwin,

You know, I asked the same question a while ago, but noone helped me, so I left it on the back burner.

Now when I read your message you gave me an idea.

Here is it.

It is not exactly re-setting sliders, but that is possible through scripting.

outpu_as_input_v2.gh (8.0 KB) output_as_input_v2.3dm (20.0 KB)

1 Like

Interesting example! I didn’t think about the possibility of routing the data through an external file :slight_smile:

1 Like

You can also do that with Sticky

1 Like