Let's talk about Grasshopper 2.0

Let’s you and me talk about this Grasshopper 2 alpha release, because there’s a lot of expectations and misunderstandings and hype about it we should try to rectify.

You: I saw the official release message, I’m super excited!
Me: Glad to hear it, me too. Although I fear your excitement may spill over into frustration if it’s based on faulty expectations.

You: That sounds like a terrible sales pitch.
Me: Well, I’m not trying to sell you anything yet, I’m trying to recruit you.

You: That sounds like you should be paying me.
Me: Possibly, but I’m hoping you might be one of those chumps who do it for free anyway.

You: Do what exactly? I’m already using Grasshopper in my work, isn’t this just the next version?
Me: Yes and no. Grasshopper 2.0 is the formal successor to Grasshopper 1.0, but it is also a complete and total rewrite. As such, there’s precious little continuity between 1.0 and 2.0

You: … meaning?
Me: Existing files, existing settings, existing plug-ins, … none of it will carry over.

You: Wait, are you telling me I can’t open my GH1 files in GH2?
Me: Correct.

You: …
Me: …

You: Why?
Me: There are several reasons. First of all the component set in GH2 is just incomplete. We need hundreds more before I think GH2 will be ready for production use. So if a GH1 file uses a component which hasn’t been made yet, that can’t translate. Secondly, components which are already available are often different, sometimes subtly so, sometimes wildly so. Automatic translation in these cases requires a lot of up-front work, and that work hasn’t been done. Thirdly, GH2 uses different data types and different data storage mechanisms, this will sometimes lead to files just not working because those files were designed with the GH1 behaviour in mind. And lastly, GH1 plug-ins won’t work in GH2 either, so any non-standard component doesn’t have any corollary.

You: Plug-ins don’t work either?!
Me: Sorry, no.

You (quoting Lando Calrissian): “This deal’s getting worse all the time!”
Me: See, I told you you’d get frustrated.

You: It sounds like a big risk to start from scratch with an existing product.
Me: I agree, but sadly there wasn’t really a choice. Over the coming weeks and months we’ll try and provide some tools for translating or directly running *.gh and *.ghx files in Grasshopper 2. It’ll never be a perfect match, but we can probably solve the majority of incompatibility issues. The plug-in problem will never be solved, except insofar as we may be able to leverage Grasshopper 1.0 to run plug-ins and then pump the data back into Grasshopper 2.0 for further processing.

You: Why wasn’t there a choice?
Me: Because we knew from the start that Grasshopper 2.0 needed to be multi-threaded, and you cannot “just” parallelise single-threaded code. Most functions and data types in the very core had to be redesigned to be thread-safe, and those changes percolate everywhere. Add to that a number of other core features we wanted to add and you just end up with a brand new product which has to go through a tedious and extensive alpha phase all over again.

You: Great, so everything runs 16 times faster on my 16-core machine now?
Me: No. Some things will complete faster than before. Specifically, calculations which are independent of each other will now sometimes run concurrently instead of consecutively. There’s always overhead involved too, so we certainly won’t hit theoretical limits in terms of speed-ups. Do remember this is an entirely new code-base. Grasshopper 1.0 has over a decade worth of optimisations in it, so will definitely perform better in certain cases. At least for the time being.

You: So what’s in this for me then? Sounds like I’m better off just sticking with Grasshopper 1.0
Me: That’s absolutely true for any kind of production work. Luckily, both versions can be installed and even used simultaneously. So you can keep running GH1 for all the important stuff until you’re confident that switching over isn’t going to be too much of a risk.

You: You didn’t answer my question.
Me: I was hoping you wouldn’t notice… I suppose you get to participate in the alpha phase development of Grasshopper 2. Your opinions and grievances and arguments may well affect how certain parts of the software evolve, and you get to become proficient ahead of the competition. I admit, these are all pretty intangible benefits, and if you’re unsure about spending a lot of time and effort on this then you probably shouldn’t. No hard feelings.

You: Fine, I’ll think it over. There must be some good news too right?
Me: I think so. Despite all its unfinishedness, GH2 has some interesting new features. It’s a more mature computational platform for one. It provides a lot of mathematical tools one would expect to find in a program aimed at computational design. Functions are now data types in their own right and are thus no longer constrained to live within the Graph Mapper. Support for unlimited integer and angle types has been added, which benefits trigonometry and statistics features.

You: Okay. Bit geeky, but okay. What else?
Me: All values inside a Grasshopper document can now be tagged with meta data. Meta data is primarily a mechanism for you to organise your data. For example you can attach material properties to shapes, or subcontractor details, or installation dates, or… whatever you want really. This sort of parallel bookkeeping was a nightmare in GH1 as all that data had to be kept in separate streams and synchronised all the time.
But you can also use meta data with predefined names to affect how Grasshopper treats values. You can for example change the preview colour of shapes, or the bake layer, or the bake section hatching.

You (interrupting): I’m getting information overload now. Some of this sounds terrible, some of this sound interesting. I’m not sure what to do next.
Me: I’d say if you have Rhino 8 Wip, run the _PackageManager command, install grasshopper2, run the _G2 command and give it a quick test drive whenever you have an hour or so to yourself. If you don’t like it, or feel like it’s too early for you to get involved, uninstall it and maybe try again in a few months.

Oh, and before you go, be sure to have a look at the Grasshopper 2.0 Documentation (available via the Help menu). It’s far from finished, but it has some content and you can drag the example files from the component specifications directly onto the canvas. May help get you started.

131 Likes

Sorry, but I’m still hyped !
Can’t wait to see what you’ve been baking !

5 Likes

I really like the interface & icons & colors. Hope this new code-base opens the door to future optimizations that will eventually outperform GH1 across the board.

2 Likes

This alone already sounds WORTH IT! Thanks for the HUMONGOUS EFFORT AND THE AWESOME PRODUCT @DavidRutten

8 Likes

Meaning of colours in the icons:

27 Likes

brb adding “chump” to my twitter bio

17 Likes

This is low key a “The Office” sketch.

6 Likes

Hello David,
I am very happy to see GH2 going out. Huge and awesome work.

So let’s begin to try the product. I tried to reproduce the last script I did. I didn’t go yet to the end.

Some comments

  • Very good to have an help. There are also new words and their definitions like, Twigonometry.
  • Nice transition to the dark mode.
  • An automatic List of option could be interesting, like for the component expand and its method of expand. I put a slider but a list could be awesome.
  • I miss + CTRL+ALT+Left Button to find where is the component on the tab.
  • If I hit “*” I get “+” on the first place, and if I hit “+” and “+” is on 6th position
  • I miss automatic conversion form Number to Angle but I understand that the radians as default must be annoying for lot of people.
  • I can’t resize the panel!

Some bugs

  1. For the curve through points, I understood periodics means closed and it didn’t worked for me.
    Option 4 is for periodic.

  2. For the Number Sequence, if I set initial to 0 I get 0, 2, 3, 4 … and not 0,1, 2, 3, 4…
    image

  3. I have an error after shifting a list, it is no more an integer at the end !

  4. If help is resized the images are stretched

parametric colmun GH2.ghz (282.8 KB)

3 Likes

Super hyped just for the metadata thing. I suppose we will be able to sort/filter objects based on the metadata value, is it correct? Sometimes I had to create my own metadata parallel datatree and this new feature seems to just do it out of the box.

Is there any chance for loop functions will also be implemented?

Looking forward to try it out!!

This should be fixed now.

2 Likes

I’m not able to find grasshopper2 in my package manager for rhino 8 wip :eyes:

Rhino 8 wip (8.0.22088.20305, 2022-03-29)

This confused me for a while at first too. There’s a thin region a little way inside the border of panels that you can drag to resize (but no change to a ⬍ ⬌ cursor)

1 Like

Hello David,

congratulations, after all the years of hard work. I’m really looking forward to Grasshopper 2.0!

Just a quick question, I haven’t looked into this yet.

Will Grasshopper 2.0 save within a single Rhino file, or will it still be 2 separate files like Grasshopper 1.0?

Best regards

Click on Include pre-relases !!!

2 Likes

Grasshopper 2 saves its own GHZ files.
-wim

Thank you for the reply!

Thanks, I finally manage to make it work, but it require a diabolic precision.

2 Likes

Hi Laurent -

Thanks for your feedback!
I expect this thread to become very chaotic quickly - you might want to consider creating new topics for bug reports.

That said…

You can use the Preset Picker parameter for this.
image

I haven’t looked at your file yet, but that seems to be working in these cases:
image

Also here, you can use a Preset Picker. There is no option for creating a closed curve yet.
-wim

1 Like

Gigahertz? :rofl:

1 Like

As someone who has not needed much beyond the bare Rhino capabilities but nevertheless follows with considerable awe, amazement, respect and admiration the things that others have done with GH1, I am curious. Since GH ultimately tells Rhino what to do I’m wondering if this multi-threading is just part of GH2 doing it’s job of “creating the directions for Rhino” or is Rhino 8 adding appropriate multi-threading capability to it’s core functionality?

In other words, is GH2 multi-threading internally on top of Rhino 8 or is it utilizing new multi-threading functions within the guts of Rhino 8? Or at least is Rhino 8 receiving modified re-entrant multithreadable functions so they can be used in multiple parallel instances?