The future of Grasshopper User Interfaces?

Hi Guys,

Trying evaluate the current and future state of Grasshopper User Interfaces:

  • Grasshopper Native - all the sliders, panels, buttons, toggles etc
  • GH Remote Panel - limited controls available, some known bugs, no current development
  • HumanUI - the original and the gold standard of external UI’s. Windows only. No longer in development/support. Not working in Rhino 8
  • ETO - Cross platform. Rhino ‘native’. Must be coded in C# or Python. Steep learning curve.
  • Synapse - ETO based, so all the advantages of ETO but with HumanUI style of GUI building. Not so easy to build with or understand as HumanUI
  • UI+ - A new take on the HumanUI/WPF style GH UI. Is Windows 8 compatible. Last updated March 2024.
  • WebUI - a HumanUI style GUI builder that uses WebView2/HTML/CSS/JS tool chain. Looked promising but has had no development in last 4 years.

For my own growing list of Rhino Plugins I have developed my own platform - some history here:

You can see the latest version of this platform being used in this recent video:

Is there anything I missed?
Is there anything being worked on?
Is there any ‘killer feature’ that is missing from the above list?

Cheers

DK

3 Likes

I don’t know if it counts, but since you mentioned Eto. I used WPF for building GH UI’s. Technically, Windows SDK, Windows Forms, Maui, Avalonia (that’s my favorite) and all other C# GUI’s can be applied. with CPython you could also use Python libraries like TkInter, QT, wx etc.. For C# you often find bindings to C++ GUI libraries, even the exotic ones like ImGui (definitely an interesting one) can be used. All you need to do for most of them, you’ll need to ship the UI libraries with your plugin or ask the user to install it. But apart from this, it should work.

4 Likes

What parts of human ui don’t work in Rhino 8, in your experience? It’s worked fine for me.

HumanUI/Rhino8 issue was from this thread a year ago:

I stand corrected if the situation has changed since then.

Cheers

DK

Hi @TomTom

You are correct, I didn’t go into the Python and C#/.net GUI libraries, however they are an option, with similar notes to ETO.

I did recently play with some TKinter GUI code in Grasshopper PY3 components. It was working, I needed to find a way to have the control window always over the Rhino window. Overall didn’t see any advantage over ETO except for perhaps more how to’s available on YouTube etc.

Cheers

DK

This is a huge advantage! There was a point in time where WPF programming was part of my daily job. If you do this long enough, then you notice that its impossible for casual users to solve common issues on their own. WPF is powerful, but very difficult to master. Especially by using the MVVM pattern. Now Eto is a wrapper around it. If you are an expert in WPF, you can quickly get into Eto. But without this knowledge its even worse. There is little documentation out there.

In comparison, especially Python offers much simpler, but also less powerful UI’s. You get AI support and the internet is full of example code, blogs and asked questions. Some problems, like making it a child window of Rhino is doable by knowing some tricks about the Windows SDK. But overall you should pick the easiest tool to master from your perspective and experience. There are always advantages and disadvantages. Picking the right tooling is a difficult problem to solve.

I am talking specifically about GUI’s for Grasshopper built applications, and in this case moving from HumanUI style block wiring to needing to code your UI in a Python/C# component with ETO/WPF/TKinter is a step change that is all thrown into the same bucket.

ETO for SURE is severally lacking in online teaching resources, its part of its steep learning curve. I would be great if McNeel would maybe get a developer with some experience in ETO to do a series of videos on how to program for it.

Cheers

DK

1 Like

I think the developer of ETO was hired by McNeel. But again, its a cross-platform wrapper, and on Windows you are basically calling the WPF library under the hood. WPF is difficult. You can follow WPF tutorials but I’m afraid that some tutorials will not be enough. You need to count in at least 6 month of daily work to get a solid understand of it. This would be my estimation. So I do see an advantage in using simpler UI frameworks like tkInter. I also used it in a project (actually customtkinter) and it is a couple of magnitudes easier to work with. However, I’m not saying its something you should do for Rhino. I’m just saying its possible…

Is there any way the bugs could be resolved? GH1 is going to be the main grasshopper for a long long time, and the RCP is my go to choice since my UI is purely buttons, toggles and sliders. Its also extremely easy to set up as well.

The only bug I have come across is while I am in the edit mode, the panel can misread my clicks and it gets a bit annoying. So far I have not encountered any issues while not being in edit mode.

The one bug in the GH Remote Panel that KILLS it use for me is if you use an RCP button to launch a RhinoScriptSyntax UI item, the Grasshopper canvas locks and requires a restart of Rhino.

The RCP could be extended with things like colour pickers, file save/open buttons etc if this bug had been solved. I believe its been a known issue for over 10 years now.

As far as I’m aware the Remote Control Panel is not being actively worked on and there are no plans to fix the known bugs. We’ll have to wait and see what GH2 brings to this space.

Cheers

DK

Considering the hoops people jump through for adding GUIs to their Grasshopper definitions, the native RCP really does feel like the perhaps hardest dropped ball in Grasshopper history. Fingers crossed for Grasshopper 2 indeed🤞

2 Likes

Here is my personal take on Grasshopper User Interfaces:

Cheers

DK

I use the OSC (Open Sound Control) protocol to control Grasshopper.
Instantaneous transmission, birdirectional, cross platform, hardware and software possibilities for parameter iteration.

Options for building control surfaces via software are:

and

I use OSC Pilot to organize hundreds of variables and toggles for controlling and switching Grasshopper elements. When a parametric model goes over a certain number of inputs, organization becomes the key factor to usability.
OSC Pilot has 32 pages of UI available for organization, key for separating variables of different sections of the model.
OCS Pilot costs $50.

For incorporating hardware control, I’ve used Processing to convert MIDI signals to OSC and send to Grasshopper for devices such as:


The Midi Fighter Twister, MFT

The AKAI APC40 MKII

I currently mix the MFT encoders, and OSC Pilot touchscreen for a visual legend, touch control and labeled toggles.

The APC and the Behringer BCR2000 are great hardware devices for a wide range of controls, but have the drawback of mentally indexing the physical controls and the variables, especially when switching pages.

3 Likes

@nxakt I’m familiar with your work here and it is next level! Proof to me that GH is a very general purpose development platform that is infinitely extendable.

Cheers

DK

1 Like

Your setup looks super interessting! Any chance we can get more information on how to setup the MFT to control silders in grasshopper? I think i’m not the only one who might be interessted:

I recently bought myseld a stream deck+, which also has dials, but i think there is no option to control sliders in grasshopper with this device.

-Kevin

Sure, I’ll set up a minimal workflow example. Will start its own thread.

1 Like

I don’t know. Isn’t that now leading to an absolute none-sense discussion? Any application which allows you to create add-ins has the ability to connect to any device and UI framework out there. Its more or less a matter of effort and skill to make it work. But if you see it this way, you could use a camera to trace your animals movements and control your Diff-Grown Voronoi none-sense with it. All you need is a webcam and a cat. I think you get both for free if you import them from a Romanian junkyard.

To add to your list, it is also possible to stream/import data from Google Sheets into Grasshopper and use the matrix as your interface. Far from fancy but it’s easy and reliable. Also very handy for project management, as the settings live in a separate document and the script is always the final version.

To say something about the future of UI’s in GH… i’m looking forward to being able to incorporate the 3D environment more easily. Basically that it becomes easier to build your own advanced commands. For instance i want to be able to click on a piece of geometry and get a little interface particular to that type object. Or you click on something and you get some kind of customizeable gumball.

The main way of interacting with Grasshopper, the slider, the entire element moves instead of adjusting value if the mouse press is one millimeter off. The thousand times I have experienced that have been among the worst UI experiences in computing.

A discussion of different approaches is warranted.

GrasshopperGold is a free jewelry plugin for GH that comes with an ETO designer in GH. I don’t have any experience with it, since - as you said - documentation is slim. But might be worth a mention.

https://www.food4rhino.com/en/app/grasshopper-gold