Grasshopper

algorithmic modeling for Rhino

We don't like to make promises, as we're very bad at estimating. Basically Grasshopper releases follow one of two patterns. There are slow releases that roll minor version number (0.6, 0.7, 0.8 etc.). These sometimes take weeks or even months. One of these is usually followed by a flurry of revisions (0.8.0001, 0.8.0002, 08.0003) where reported bugs are fixed.

Current version 0.8.0066 and was released on January 22, 2012 (yes, a long time ago).

The next version will be 0.9.0001 and will hopefully be released in late May or Early June. I pasted the release notes below, as they were on May 18th:

Changes:

  • Data Trees are now constructed differently in some cases, this may break files that depend on specific data tree layouts.
  • File format forwards compatibility has been broken. You may not be able to open files saved with 0.9.0001 on earlier versions.
  • Parts of the Grasshopper SDK have been broken. You may not be able to load GHA files compiled for earlier versions.
  • Component Data Matching menu items are no longer available, please use the dedicated Shortest-List/Longest-List components.

New features:

  • Grasshopper will now load GHA files that are part of RHI installer packages.
  • Moved a lot of components into the dropdown panels, reducing the default tab layout.
  • Added Preview Mesh quality settings to the Canvas Toolbar and Solution menu.
  • Shift+Click on a tab component icon now starts a component aggregate.
  • Clicking on the canvas instantiates the oldest component in an aggregate.
  • Shift+Clicking on the canvas instantiates all components in an aggregate.
  • Press Escape to destroy a component aggregate.
  • Alt+LeftClick on the canvas now starts the Split tool which pushes apart the objects on either side of the mouse.
  • MultiSave exit dialog now closes automatically when all documents have been saved.
  • Added Data Dam object to delay data across a network (Params.Special dropdown).
  • Added Sift Pattern component for splitting data without messing with the item index (Sets.List panel).
  • Added Combine Data component for merging multiple streams with nulls (Sets.List panel).
  • Added Partition List component for breaking up lists into smaller lists (Sets.List dropdown).
  • Added Match String component for comparing strings against patterns (Sets.String dropdown).
  • Added String Distance component for computing Levenshtein distances between strings (Sets.Strings dropdown).
  • Added Format component for creating formatted strings (Sets.Strings dropdown).
  • Added Cloud Display component for displaying point data as fuzzy clouds (Vector.Point dropdown).
  • Added Sort Along Curve component for sorting points using curves as guides (Vector.Point dropdown).
  • Added Barycentric Point component for creating points using barycentric coordinates (Vector.Point dropdown).
  • Added Point Groups component for finding proximal clusters in point collections (Vector.Point dropdown).
  • Added Populate Geometry component for distributing points on different shapes (Vector.Grid dropdown).
  • All Population components now use a faster algorithm.
  • Added Project Point component (Vector.Point dropdown).
  • Added Blend Curve component for G0~G2 blends (Curve.Spline panel).
  • Added Connect Curves component for blending multiple curves into one (Curve.Spline dropdown).
  • Added Curve Length Domain component for measuring lengths of sub-domains (Curve.Analysis panel).
  • Added Curve Length Parameter component for measuring lengths to and from parameters (Curve.Analysis dropdown).
  • Added Containment Ex component for testing a point against multiple regions (Curve.Analysis dropdown).
  • Evaluate Curve component has been replaced with another one that outputs kink angles rather than lengths (Curve.Analysis panel).
  • Curve Derivatives component has been replaced with another one that has variable output parameters (Curve.Analysis dropdown).
  • Curve Derivatives component now displays the derivative vectors in the Rhino viewport.
  • Added Pull Curve component for pulling curves onto surfaces (Curve.Util dropdown).
  • Added Intersect Multiple Curves component (Intersect.Physical dropdown).
  • Added Matrix Data Type and Matrix Parameter (Params.Primitive dropdown).
  • Added Field Data Type and Field Parameter (Params.Geometry dropdown).
  • Added Point Charge component (Vector.Field panel).
  • Added Line Charge component (Vector.Field panel).
  • Added Vector Force component (Vector.Field dropdown).
  • Added Spin Force component (Vector.Field dropdown).
  • Added Merge Fields component (Vector.Field panel).
  • Added Break Field component (Vector.Field panel).
  • Added Evaluate Field component (Vector.Field panel).
  • Added Field Line component (Vector.Field panel).
  • Added Field Direction Display component (Vector.Field dropdown).
  • Added Field Perpendicular Display component (Vector.Field dropdown).
  • Added Field Scalar Display component (Vector.Field dropdown).
  • Added Field Tensor Display component (Vector.Field dropdown).
  • Added Adjust Plane component for modifying plane z-axes (Vector.Plane dropdown).
  • Added Evaluate component to replace all old expression components (Math.Script panel).
  • Added Expression component which evaluates an internal expression (Math.Script panel).
  • Added Short List component for equalizing list lengths (Sets.List dropdown).
  • Added Long List component for equalizing list lengths (Sets.List dropdown).
  • Added Inside Multiple component for testing point inclusion with multiple breps (Surface.Analysis dropdown).
  • Added Collision component for testing one-to-many collisions (Intersect.Physical dropdown).
  • Added Collision component for testing many-to-many collisions (Intersect.Physical dropdown).
  • Added Mesh Inclusion component for testing point|mesh inclusion (Mesh.Analysis panel).
  • Added Mesh Closest Point component for finding the point on a mesh closest to another point (Mesh.Analysis panel).
  • Added Evaluate Mesh component for sampling position, normal and colour at a mesh parameter (Mesh.Analysis panel).
  • Added Face Boundaries component for converting mesh faces into polylines (Mesh.Analysis panel).
  • Added Mesh Edges component for extracting mesh edge lines (Mesh.Analysis panel).
  • Replaced Mesh Plane component with one that takes a rectangle (Mesh.Primitive panel).
  • Added Blur Mesh component for averaging mesh vertex colours (Math.Util dropdown).
  • Added Simple Mesh component for creating a minimal Brep representation (Mesh.Util dropdown).
  • Added Knot Style input for the Interpolate Curve component.
  • Added Knot Style input for the Interpolate Tangents Curve component.
  • Added four different display styles to the Legend object (accessible via the component menu).
  • Double clicking the Legend object toggles discrete vs. smooth display styles.
  • Added an extra input to the legend component which allows legend drawing in 3D.
  • Replaced Containment component with more sensible values for inside/coincident/outside.
  • Replaced the Recursive Voronoi component with a better one.
  • Convex Hull component will now solve for 2 points.
  • MultiDimensional Sliders can now be part of states.
  • Geometry Pipeline object now has a Locked filter, available via the popup menu.
  • Geometry Pipeline object now has a Hidden filter, available via the popup menu.
  • Geometry Pipeline object now has a 'Group By Layer' option, available via the popup menu.
  • Geometry Pipeline object now has a 'Group By Type' option, available via the popup menu.
  • In Rhino5, the Zoom Extents command will now include Grasshopper geometry.
  • Expression input parameters can now have names like "Name (n)", where the text in brackets becomes the variable name.
  • Script input parameters can now have names like "Name (n)", where the text in brackets becomes the variable name.
  • Script output parameters can now have names like "Name (n)", where the text in brackets becomes the variable name.
  • VB/C# script components now have tooltip override fields in the context menu.
  • Parameter nicknames that collide with language keywords are now automatically modified in Script components.
  • Added Wrap option to Text Panel entries. When Wrap is off, items will be trimmed using ellipses.
  • Added NickName support to Knobs.
  • Added a grip region for Knob tuning.
  • Added a specific window for changing Knob settings.
  • Copy to Windows Clipboard now tries a total of 10 times if there's an access failure.
  • Copy to Windows Clipboard now copies to internal Grasshopper clipboard on prolonged failure.
  • Aborted solutions now clear whatever data is stored inside whatever component was solving when the Escape key went down.
  • The state of the Escape key is now also monitored during data conversions, making Escape behaviour more reliable.
  • Rearranged the Params.Special panel into Input and Util panels.
  • Rearranged the Sets.String panel.
  • File Reader component now reads per line files in a more efficient manner.
  • Parameter modifier icons are now drawn as vectors rather than bitmaps.

Bug fixes:

  • Components with Preview=Off would not display in selected only mode, this is fixed.
  • Instantiating number sliders via the popup box would not work if the first number was negative, this is fixed.
  • Copy to Windows Clipboard would not fail gracefully on error, this is fixed.
  • Interpolate Curve component would not warn on invalid degrees, this is fixed.
  • Knob menu control was not correctly initialized, this is fixed.
  • Knob menu control did not correctly respond to Limit On/Off, this is fixed.
  • Curve Discontinuity component would sometimes return invalid results for C1 discontinuities, this is fixed.
  • Certain exotic cases of Data Matching and Input Access would yield faulty output data trees, this is fixed.
  • Expressions in Point parameters would affect shared instances of points, this is fixed.
  • Editor window would not reflect saved/unsaved state of the loaded document, this is fixed.
  • MultiDimensional Slider would not undo on grip drags, this is fixed.
  • Image Sampler would not behave nicely when an image file went missing sometimes, this is fixed.
  • Upgrader for Null Item component generated an invalid result, this is fixed.
  • Text Panels would not display a scrollbar for local text, this is fixed.
  • Vector Display component would remain visible after disconnecting, this is fixed.
  • Vector Display Ex component would remain visible after disconnecting, this is fixed.
  • Adding or removing output parameters from VB/C# script would not update the script, this is fixed.
  • A CCX overlap intersection would sometimes result in erroneous parameters, this is fixed.
  • The tooltip over the abort icon would not show, this is fixed.
  • The canvas wouldn't always redraw when the solver was locked, this is fixed.
  • Transform Parameter Set menu items did nothing, they are now greyed out.
  • Occlusion Component would always return a null topology, this is fixed.
  • Group crossing selection would fail on concave group outlines, this is fixed.
  • Transform input parameters on components would have an empty transform by default, this is fixed.
  • Sweeps sometimes outputted surfaces with internal kinks, this is fixed.
  • Output parameters that output lists now have tooltip suffixes indicating them as such.

The main focus of 0.9+ is to improve cluster GUI and implementation.

--

David Rutten

david@mcneel.com

Poprad, Slovakia

Views: 5662

Replies to This Discussion

I'm loving this: 

"In Rhino5, the Zoom Extents command will now include Grasshopper geometry."


Thanks for all of this hardwork :) We will be patient knowing what is coming :D


Best.

Ángel.

Excellently... Truly revolutionary changes. It will be a pity that old add-ons will not to work in new release. Whether it is possible to start the old or new version GH at own choice?

 

 Thanks

It's not a guarantee that old components won't work, only if they relied on some bit that was changed. We'll just have to wait and see which ones work and which ones don't.

--

David Rutten

david@mcneel.com

Poprad, Slovakia

Hi David,

I am very excited like everyone else about the next release and about many of the new features. I know its early days yet but  I am concerned about two of the 'Changes', especially:

  • Data Trees are now constructed differently in some cases, this may break files that depend on specific data tree layouts.
  • Parts of the Grasshopper SDK have been broken. You may not be able to load GHA files compiled for earlier versions.

Many 'live' and 'complete' projects that are set out in version 0.8.0066 will need to be updated in 0.9.0001, and many of our projects do implement changes to the data tree. However, this is only possible if we are able to access the 'older' GHA files in version 0.9.0001 in the first place. I don't want to sound panicked here but can you please shed light on this matter? How extensive are these changes? I have not had any problems in the past updating certain components etc when newer versions of GH were released, so is this transition less painful that I am making it out to be or will I be going through every project with a fine toothpick?

Thank you and keep up the excellent work

I would recommend you keep a Safe copy of the file in version 0.8.0066 and make a note of which version you should use in the "Rhino Notes" if things don't work out in 0.9.0001. Then if you need to revert back to 0.8.0066 at any time you simply have to re-install it*. As the installation of GH takes seconds there should be no real overhead.

Just the other day I had to re-instate version 0.8.0003 for a job from 2010.

*Note as commercial users it is advisable to keep a copy of every installation program of GH and keep tabs on which version you wrote the definition in. (Both in the Rhino File and the GH file)

Hi Danny,

Thanks for the reply. As of now every project is pretty much 0.8.0066 friendly and I do keep a record of GH versions - mine goes back to when it was 'Explicit History' :). I guess the thing to do it wait and see how 0.9.0001 will go and take it from there. Any project that will be 0.9.0001 friendly will stay that way. All others will need to either kept as 0.8.0066 or reconfigured to be 0.9.0001 friendly.


Thank you

a. "Added Data Dam" you changed the name :D

b. "Added Partition List component" YESSSSSSSSSSSSS

c. "Replaced Containment component" thank you

d. "Convex Hull component will now solve for 2 points" :)

oh and these "Added Point Groups component for finding proximal clusters in point collections (Vector.Point dropdown).

Added Populate Geometry component for distributing points on different shapes (Vector.Grid dropdown)."

thanks greatly

Hello David,

Some really exciting additions and fixes here.  Very much looking forward to the release.

One question which arose as I was reading through the lengthy list.  I see some components which are taking on the functionality of what were previously 'add-ons.'  The ones I am referring to are:

  • Added Face Boundaries component for converting mesh faces into polylines (Mesh.Analysis panel).
  • Added Mesh Edges component for extracting mesh edge lines (Mesh.Analysis panel).
  • Added Blur Mesh component for averaging mesh vertex colours (Math.Util dropdown).

Which, if I am not mistaken, are covered by Weaverbird.  In this case, was this a decision that was made with the development of weaverbird in mind?  Will the whole Weaverbird suite be included in the default component set in the future?

For this particular case, I think it makes sense to develop the mesh tools further, which Giulio and UTO have done via their add-ons.  Will Giulio remove this functionality from a future version of Weaverbird to avoid redundancy?

That's a bit of a painful point actually. On the one hand I really want people like Giulio and Uto to develop components for Grasshopper. It provides a surplus value that is almost impossible to overstate. I want to have a productive relationship with 3rd party developers, because any effort I spend making life easier for them results in a large return on investment. I realise that if I start shipping components that were already available in 3rd party libraries it is a very effective way of poisoning this relationship. On the other hand I want to provide thorough baseline functionality in Grasshopper, so users won't have to go hunting around for functionality that ought to be part of the main product.

I have not found a good way to solve this conundrum. What I'm doing now is —what I consider to be— the least of all evils. I.e. I try to keep ignorant as much as possible about what the 3rd party developers are up to because:

  a) I don't want them to give me ideas like "Hmm, I like this idea for a component, I'll take a crack at writing my own"

  b) I want my development efforts to be guided by my interaction with users, not developers

  c) and I want to keep plausible deniability —as horrendous a concept as that is— in those cases where I do infringe on someone else's turf.

In the cases you cited above, I was unaware that Weaverbird had very similar components. Giulio pointed this out to me after he learned what I was up to but we agreed that providing these components as part of the core package is good for everyone. Incidentally my MeshBlur works somewhat differently from Giulio's.

--

David Rutten

david@mcneel.com

Poprad, Slovakia

Thanks for the thorough reply!

In all seriousness, I think that adopting functionality from add-ons into the default GH component base is actually a great way to forge the relationship as long as there is a way to acknowledge the developer.  If the component is mature enough, and used enough, and adds critical functionality, then I think it is great to bring it into the fold.

But if you are not actively keeping tabs on what others are developing then surely issues will arise where you will bring something into the GH component set that has already been at least attempted.

Processing and Arduino both have folded in mature third party libraries into the default installation.

Anyways, it is not a straightforward issue, but in any case I am glad there is a discussion happening.  In the case of these specific components, I use them all of the time, so I am glad they will be included in the default install.

speaking of this, I always felt remove duplicate lines amd remove
duplicate points components of kangaroo should be standard. I know there is a remove similar items but I wonder if we could get maybe a "remove overlap" component that can remove any object type that exist in the same place such as surfaces, lines, points, ect. That I think would be a super useful component. Unless I am missing something. Also like at group by overlap component that would but things taking up same space into seperate lists.

I'd just like to say that I'd be very happy for this to happen.

Those remove duplicate components were knocked up very quickly with little thought as to efficiency - just brute force comparing all points with each other. They worked fine for what I needed at the time, but I'm sure they can be improved upon.

I wouldn't want the possibility of a better GH standard version to be held back for the sake of not hurting my feelings.

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service