(by ekimroyrp)
The Pufferfish is one of few animals which is capable of changing its shape. This plugin focuses on Tweens, Blends, Morphs, Averages & Interpolations.
Support Email



The Pufferfish is one of few animals which is capable of changing its shape.

This plugin is a set of 131 components which focuses on Tweens, Blends, Morphs, Averages, & Interpolations - essentially Shape Changing. These components are accompanied by support components which are useful methods for the preparation of tween/blend operations such as making polylines compatible and matching surface structures. In addition, there are a extra components which simplify some common grasshopper operations such as testing for equality within a tolerance and reparameterizing numbers. Please email me if you find any bugs to help make this toolset better for the GH community. Works with Grasshopper for Rhino 5, Rhino 6, and Rhino Mac. 

Join the grasshopper forum group here: www.grasshopper3d.com/group/pufferfish

Pufferfish has been tested but it may contain bugs. It will be appreciated greatly if you could report any problem you might find in function as well as things like grammar. Please feel free to make functionality / new component suggestions as well (this is not a guarentee that they will be incorporated). I build this plugin for the community on my very limited free time so please give credit where credit is due.

I would like to make a special thanks to David Stasiuk and Mateusz Zwierzycki for their continual support and input on my plugins and letting me constantly bother them. Check out their plugins: Conduit, Cocoon, Tree Sloth, Owl, Anemone, Starling, & Squid.

-Michael Pryor


General notes

  1. Grasshoppers native "Interpolate Data" component can "Tween" simple data types such as numbers, colors, vectors and points already. Pufferfish's Tweens of these types differ in 2 ways. The first being that Pufferfish has 3 types of tweens for each: Tween Two, Tween Consecutive, and Tween Through which perform the tweens in different ways with the input lists. The second difference is that Pufferfish uses interpolation types which match nurbs interpolation for simple data types. Those types are Linear, Chord, Square Root, and Uniform. Grasshopper's "Interpolate Data" component uses  Block, Linear, Cubic, and Catmull. Pufferfish also adds the ability to tween Planes, Surfaces, Meshes, and Twisted Boxes as well as average them.
  2. Grasshopper already has a native "Tween Curve" component however, it gets odd results sometimes, specifically when tweening polylines. Pufferfish corrects this with automatic internal polyline and curve compatibilization so that the results are more similar to Rhino's tweens.
  3. Meshes must have the same topology to tween. Unlike surfaces, meshes which come from two different sources with different topologies are almost always impossible to rebuild (automatically) to have the same topology and point order for a meaningful looking tween. Please do not ask for this feature unless you can provide some information / documentation about how to do so. As recommended by Autodesk Maya for blending meshes "A common blend shape technique is to create duplicates of a base, deform the duplicates, then use them as targets. For example, you might make several copies of a face, and then alter the copies to create a smiling face, frowning face, a crying face, and so on."
  4. A few minor components may exist in some form elseware in other plugins (it's impossible to check them all). If they are in Pufferfish it is because I felt they are necessary to the workflow and I cannot ensure the user has other plugins installed. For example, Pufferfish has a type of "Rebuild Surface" which varies slightly from but exists also in Lunchbox and Peacock.


Pufferfish Changelog

Jan 03, 2018 - Pufferfish V1.7

  • Update to add 7 new components. Components from the Discrete Vectors plug-in (http://www.food4rhino.com/app/discrete-vectors) have been updated and are now a part of Pufferfish. Other minor updates and fixes. Some components require at least Rhino 5 SR12. After installing the pufferfish1-7.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components.

Dec 29, 2017 - Pufferfish V1.6

  • Re-uploaded Pufferfish V1.6 to fix a bug in the corner orders of Twisted Box components that use surfaces.

Dec 22, 2017 - Pufferfish V1.6

  • Re-uploaded Pufferfish V1.6 to fix a bug with the Point Divide Curve Target component.

Dec 20, 2017 - Pufferfish V1.6

  • Update to add 6 new components like Twisted Box Through Surfaces and Twisted Box Through Meshes with interpolation options. Tween Mesh and Tween Surface components now have interpolation options. Some component name changes, icon changes, updates. Some components require at least Rhino 5 SR12. After installing the pufferfish1-6 gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components.

Dec 04, 2017 - Pufferfish V1.5

  • Re-uploaded Pufferfish V1.5 to fix a bug with the Move2Pt component not moving certain geometry types.

Nov 29, 2017 - Pufferfish V1.5

  • Re-uploaded Pufferfish V1.5 and its examples to include 3 forgotten Twisted Box components. Twisted Box Array, Construct Twisted Box, and Deconstruct Twisted Box.

Nov 28, 2017 - Pufferfish V1.5

  • Update to add 41 new components. The new components are primarily focused on a new tab for "Twisted Box" components. Additional various components added to the other tabs. Some updates to existing components. Some new components require at least Rhino 5 SR12. After installing the pufferfish1-5.gha, please close Rhino completely one time to avoid potential assembly reference errors with the new "Twisted Box" components.

Nov 08, 2017 - Pufferfish V1.4

  • Update to improve algorithm for all "On Curve" components and all components with an "Interpolation Type" input.

Nov 01, 2017 - Pufferfish V1.3

  • Update to fix a minor bug in all tween plane components with Quaternion rotation that would result in null planes when input planes X axis's aligned. Added many new examples.

Oct 28, 2017 - Pufferfish V1.2

  • Update to add 9 new components. 3 for tweening planes on curves with Quaternion rotation, 3 for tweening planes on surfaces with Quaternion rotation, 3 for tweening points on curves (like Grasshopper's evaluate curve component except you can interpolate between user defined points on the curve rather than interpolating the entire curve) . Added tolerance input to "Is Arc/Circle/Ellipse" component.

Oct 22, 2017 - Pufferfish V1.1

  • Update to add Quaternion rotation option to the Tween Planes components for smoother tween rotations and prevention of Gimbal lock. Suggested by Andrew Heumann, based on a grasshopper definition by Daniel Piker. 

Oct 17, 2017 - Pufferfish V1.0

  • First release


Pufferfish Component List - 131 components 


  • Tween Consecutive Numbers
  • Tween Through Numbers
  • Tween Two Numbers
  • Last Index Range
  • List Length Range
  • Reparameterized Range
  • Equality Within Tolerance
  • Highest & Lowest Numbers
  • Last Index
  • Partition Number
  • Reparameterize Numbers
  • Round To Nearest
  • Default Angle Tolerance
  • Document Angle Tolerance
  • Document Distance Tolerance
  • Zero Distance Tolerance


  • Tween Consecutive Colors
  • Tween Through Colors
  • Tween Two Colors


  • Tween Consecutive Vectors
  • Tween Through Vectors
  • Tween Two Vectors
  • Closest Vector
  • Vector Star
  • Vector World


  • Tween Consecutive Points
  • Tween Through Points
  • Tween Two Points
  • Point Divide Curve Segments
  • Point Divide Curve Target
  • Tween Consecutive Points On Curve
  • Tween Through Points On Curve
  • Tween Two Points On Curve
  • Map Point To Surface
  • Point Divide Surface
  • Tween Consecutive Points On Surface
  • Tween Through Points On Surface
  • Tween Two Points On Surface
  • Move 2Pt
  • Pinch'n'Spread
  • Are Points Collinear
  • Are Points Coplanar
  • Point Plane Side
  • Point Surface Side


  • Average Plane
  • Weighted Average Plane
  • Tween Consecutive Planes
  • Tween Through Planes
  • Tween Two Planes
  • Tween Consecutive Planes On Curve
  • Tween Through Planes On Curve
  • Tween Two Planes On Curve
  • Frame Divide Surface
  • Tween Consecutive Planes On Surface
  • Tween Through Planes On Surface
  • Tween Two Planes On Surface
  • Flip Plane
  • Offset Plane


  • Average Curve
  • Weighted Average Curve
  • Tween Consecutive Curves
  • Tween Through Curves
  • Tween Two Curves
  • Curve Divide Surface
  • Net On Surface
  • Tween Consecutive Curves On Surface
  • Tween Through Curves On Surface
  • Tween Two Curves On Surface
  • Align Curve Seams
  • Close Curve
  • Compatibilize Polylines
  • Discrete Polyline
  • Get Arc/Circle/Ellipse
  • Offset Curve
  • Open Curve
  • Prude Curve
  • Superimpose Curve
  • Trim Curve With Points
  • Curve Length At
  • Curve Length Between
  • Is Arc/Circle/Ellipse
  • Is Curve Kinky
  • Is Curve Linear
  • Is Curve Segmented


  • Average Surface
  • Weighted Average Surface
  • Tween Consecutive Surfaces
  • Tween Through Surfaces
  • Tween Two Surfaces
  • Fit Surface
  • Offset Surface
  • Rebuild Surface
  • Subdivide Surface
  • Superimpose Surface
  • Mesh To Polysurface
  • Shell Polysurface
  • Is Surface Closed
  • Is Surface Singular


  • Average Mesh
  • Weighted Average Mesh
  • Tween Consecutive Meshes
  • Tween Through Meshes
  • Tween Two Meshes
  • Offset Mesh
  • Rebuild Mesh
  • Reduce Mesh By Faces

09_Twisted Box

  • Average Twisted Box
  • Weighted Average Twisted Box
  • Tween Consecutive Twisted Boxes
  • Tween Through Twisted Boxes
  • Tween Two Twisted Boxes
  • Twisted Box Array
  • Twisted Box Curve
  • Twisted Box Extrude
  • Twisted Box Loft
  • Twisted Box Mesh
  • Twisted Box Pipe
  • Twisted Box Surface
  • Twisted Box Through Meshes
  • Twisted Box Through Surfaces
  • Twisted Box Two Meshes
  • Twisted Box Two Surfaces
  • 2Pt Twisted Box
  • Center Twisted Box
  • Construct Twisted Box
  • Domain Twisted Box
  • Reference Twisted Box
  • Transform Twisted Box
  • Deconstruct Twisted Box
  • Twisted Box Corners
  • Twisted Box Volume