Grasshopper

algorithmic modeling for Rhino

Information

Pufferfish

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

This plugin is a set of 281 components which focuses on Tweens, Blends, Morphs, Averages, Transformations, & Interpolations - essentially Shape Changing. Pufferfish mainly uses parameters and factors for inputs for more custom control over operations like tweens and grids as opposed to grasshoppers usual division count inputs. These components are accompanied by support components which are useful methods for tween / blend / moprh operations such as making curves compatible, a custom curve graph mapper, and a multi-threaded morph to twisted box. In addition, there are extra components which simplify some common grasshopper operations such as testing for equality within a tolerance and rounding to nearest numbers. Please email me if you find any bugs to help make this toolset better. Works with Grasshopper for Rhino 5, Rhino 6, and Rhino Mac. Pufferfish is written in C# as a .gha file.

Download:www.food4rhino.com/app/pufferfish

Website: http://www.food4rhino.com/app/pufferfish
Location: Grasshopper3d
Members: 337
Latest Activity: on Tuesday

Pufferfish Info

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 similar to Rhino's tweens. Pufferfish tween curve components also have different interpolation types as well as optional refit and sample point methods.
  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. Multi-Threaded components don't always mean it is faster, multi-threading speed will depend directly on how many cores your computer has and how good those cores are. 
  5. 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 or that I required them to have different options and I cannot ensure the user has other plugins installed. For example, Pufferfish has a type of "Rebuild Surface" which varies from but exists also in Lunchbox and Peacock.

 

Pufferfish Changelog

October 05, 2019 - Pufferfish V2.7

  • Re-uploaded Pufferfish V2.7 and Pufferfish V2.7 example files to fix some inconsistancies in some twisted box components orientations and added new examples. Please read the installation text file first that comes with this download before installing Pufferfish.

September 27, 2019 - Pufferfish V2.7

  • Update to add a Recursive Morph Mesh component and much improved a mesh welding algorithm which is used in components like Mirror Cut Mesh and Rebuild Mesh. Various other component updates, bug fixes, and code optimizations. Please read the installation text file first that comes with this download before installing Pufferfish.

July 27, 2019 - Pufferfish V2.6

  • Update for Tween Through Curves, Tween Through Curves On Surface, Tween Through Curves Along Curve now have an Equalized option like the other tween and twisted box components to easily get uniform spacing. Various other component updates, bug fixes, and code optimizations. Please read the installation text file first that comes with this download before installing Pufferfish.

July 04, 2019 - Pufferfish V2.5

  • Update to add 12 new components, such as Linearize Numbers to use sine graphs for tween factors to have wave like spacing, Tween Two Surfaces Along Curve, new Constrained Area / Volume components, and new Mirror / Combine components. Updates to the multi-threaded Mesh / Polysurface Boolean Twisted Boxes components to now be able to use multiple Meshes / Polysurfaces. Various other component updates, bug fixes, and code optimizations. Please read the installation text file first that comes with this download before installing Pufferfish.

May 17, 2019 - Pufferfish V2.4

  • Re-uploaded Pufferfish V2.4 and Pufferfish V2.4 example files to fix the Multi-Threaded "Polysurface Boolean Twisted Boxes" component which was occasionally causing Rhino 5 to crash, inadvertently it is now faster as well.

May 14, 2019 - Pufferfish V2.4

  • Update to add 55 new components. 3 new tabs (Transform, Domain, List). New options for Equalized, Weighted, and Degree on Tween and Twisted Box components. Multi-threaded Twisted Box components for morphing and geometry filling / subtracting. Some components renamed and organized in different tab locations. Many component updates, bug fixes, code optimizations, and option additions. Please read the installation text file first that comes with this download before installing Pufferfish. 

Oct 24, 2018 - Pufferfish V2.3

  • Update to add Normalized(N) input to the 17 Tween Through and Twisted Box Through components which enables the use of normalized factor values from 0 to 1. Also added a Flip Polysurface component. After installing the pufferfish2-3.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components. Make sure to first remove any other versions of Pufferfish you may have installed. Pufferfish V2.3 works with Rhino 5, Rhino 6, and Rhino Mac. Some components require at least Rhino 5 SR14. Some versions of Rhino 6 Grasshopper have a mesh display issue not related to Pufferfish, if you see a weird mesh, try Recomputing Grasshopper until it goes away.      

Oct 10, 2018 - Pufferfish V2.2

  • Re-uploaded Pufferfish V2.2 to fix Offset Mesh component causing Rhino to crash when a null was input, re-uploaded Pufferfish V2.2 Examples as well.   

Sep 27, 2018 - Pufferfish V2.2

  • Re-uploaded Pufferfish V2.2 to update 5 components and add 1 more, re-uploaded Pufferfish V2.2 Examples as well.   

Sep 19, 2018 - Pufferfish V2.2

  • Update to add 10 new components for Numbers, Curves, and Surfaces. 40+ components updated, most Tween components rewritten for optimization, accuracy, and bug fixes. After installing the pufferfish2-2.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components. Make sure to first remove any other versions of Pufferfish you may have installed. Pufferfish V2.2 works with Rhino 5, Rhino 6, and Rhino Mac. Some components require at least Rhino 5 SR14. Some versions of Rhino 6 Grasshopper have a mesh display issue not related to Pufferfish, if you see a weird mesh, try Recomputing Grasshopper until it goes away.   

Aug 05, 2018 - Pufferfish V2.1

  • Update to add 13 new components. Mostly utility and helper components. Additional inputs/outputs added to some components. General optimizations and fixes all around.Some components require at least Rhino 5 SR14. After installing the pufferfish2-1.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components. Make sure to first remove any other versions of Pufferfish you may have installed.

May 16, 2018 - Pufferfish V2.0

  • Update to add 16 new components. Most notably components for Tweening Curves Along Curves, A custom Curve Graph Mapper which accepts any and multiple curves as inputs to graph with, Unsplit Surface components for making polysurface like surfaces which read as one untrimmed surface, Twisted Box components like Sweep, Deform, Thicken, and Subdivide. Additional features and options added to previous components. General optimizations and fixes all around. Some component rearrangements in the tabs. Some components require at least Rhino 5 SR14. After installing the pufferfish2-0.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components.

Apr 27, 2018 - Pufferfish V1.9

  • Re-uploaded Pufferfish V1.9 examples to add new examples.

Apr 15, 2018 - Pufferfish V1.9

  • Re-uploaded Pufferfish V1.9 to add a K (Keep) input on the Mirror Cut components dealing with geometry which gives the option of keeping the input geometry and mirroring them regularly if it is mirror cut into non-existence, or to output them as null/empty in that case. Re-uploaded the V1.9 example files as well. 

Apr 13, 2018 - Pufferfish V1.9

  • Update to add 26 new components. Most notably Mirror Cut components for all geometry types, Scale To Length, Twisted Box Curve Variable, and Twisted Box Pipe Variable, Parameter Mesh Surface, Trim components and others. Additional features, options, and outputs added to previous components. General optimizations and fixes all around. Some component rearrangements in the tabs and renamed. Some components require at least Rhino 5 SR14. After installing the pufferfish1-9.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components.

Mar 02, 2018 - Pufferfish V1.8

  • Re-uploaded Pufferfish V1.8 to add edges and faces outputs to the Deconstruct Twisted Box. Also added an Evaluate Twisted Box component and a Twisted Box Centers component. Re-uploaded the V1.8 example files as well. 

Feb 16, 2018 - Pufferfish V1.8

  • Update to add 13 new components. All Tween Curve and Tween Curve on Surface components have been completely re-written and include interpolation options. New components added, most notably Scale to Area and Scale to Volume components. Many other additions, options, and outputs added to previous components. General optimizations and fixes all around. Some component rearrangements in the tabs. Some components require at least Rhino 5 SR12. After installing the pufferfish1-8.gha, please close Rhino completely one time to avoid potential assembly reference errors with the "Twisted Box" components.

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

  • Minor 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 Tab List

  • Color
  • Curve
  • Domain
  • List
  • Mesh 
  • Number
  • Plane
  • Point
  • Surface
  • Transform
  • Twisted Box
  • Vector

Discussion Forum

'Is Arc/Circle/Ellipse' components 3 Replies

Hi everyone.I'd like to know how 'Is Arc/Circle/Ellipse' components work.How does these components recognize the specific type of input curve?Can someone help me understand the content of these…Continue

Started by Manu. Last reply by Michael Pryor Oct 28.

Mesh with same topology 1 Reply

I've go the idea of MeshTween usage, but here the next question: how to create a mesh with specific amount of vertices and faces?Continue

Started by Margarita Volkova. Last reply by Michael Pryor Jan 29.

not able to get the pufferfish components in grasshopper 2 Replies

Hello, I 've just started learning rhino and grasshopper its pretty silly to ask but i'm having problem installing plugins to grasshopper. I moved the files to the library and restarted my rhino and…Continue

Started by Vaibhav Tomar. Last reply by Vaibhav Tomar Sep 27, 2018.

How can i morph a collection of curves (as 1 object/module/Unit) using Pufferfish ? 1 Reply

Hi Michael,I am running into a problem when i try to morph a collection of curves after dividing 2 surfaces using pufferfish component ''TwistedBox2Srf''.Here is the shape : (See image 1)…Continue

Tags: pufferfish

Started by Garikundesu. Last reply by Michael Pryor Jul 16, 2018.

Comment Wall

Comment

You need to be a member of Pufferfish to add comments!

Comment by Michael Pryor on October 28, 2019 at 1:52pm

Ivan Genov it is from the example file "Pf_ClosestVectorLoops - Requires Anemone Plugin.gh" Then to make the mesh you should use either mesh Pipes from the Mesh Tools Plugin + Zbrush, Mesh Voxels from Mesh Tools Plugin and Smooth with Weaverbird Plugin, or use the Dendro Plugin. 

Comment by Ivan Genov on October 28, 2019 at 12:30pm

Hi all,

probably a stupid question, but here it goes:
I really like the following example, but couldn´t find in the exercise file. Could you please give me a hint how to achieve something like that? Help a beginner out:)

Comment by Michael Pryor on October 5, 2019 at 3:59pm

Pufferfish V2.7:  Re-uploaded Pufferfish V2.7 and Pufferfish V2.7 example files to fix some inconsistancies in some twisted box components orientations and added new examples. Please read the installation text file first that comes with this download before installing Pufferfish.

Comment by Michael Pryor on September 27, 2019 at 8:48am

Pufferfish V2.7:  Update - Added Recursive Morph Mesh component and much improved a mesh welding algorithm which is used in components like Mirror Cut Mesh and Rebuild Mesh. Various other component updates, bug fixes, and code optimizations. Please read the installation text file first that comes with this download before installing Pufferfish.

Comment by Michael Pryor on July 27, 2019 at 12:23pm

Pufferfish V2.6:  Update - Tween Through Curves, Tween Through Curves On Surface, Tween Through Curves Along Curve now have an Equalized option like the other tween and twisted box components to easily get uniform spacing. Various other component updates, bug fixes, and code optimizations. Please read the installation text file first that comes with this download before installing Pufferfish.

Comment by Michael Pryor on July 4, 2019 at 12:10pm

Pufferfish V2.5:  Update - 12 new components, such as Linearize Numbers to use sine graphs for tween factors to have wave like spacing, Tween Two Surfaces Along Curve, new Constrained Area / Volume components, and new Mirror / Combine components. Updates to the multi-threaded Mesh / Polysurface Boolean Twisted Boxes components to now be able to use multiple Meshes / Polysurfaces. Various other component updates, bug fixes, and code optimizations. Please read the installation text file first that comes with this download before installing Pufferfish.

Comment by Michael Pryor on May 17, 2019 at 3:44pm

Pufferfish V2.4: Re-uploaded Pufferfish V2.4 and Pufferfish V2.4 example files to fix the Multi-Threaded "Polysurface Boolean Twisted Boxes" component which was occasionally causing Rhino 5 to crash, inadvertently it is now faster as well.

Comment by Michael Pryor on May 14, 2019 at 3:58am

Pufferfish V2.4:  Update - 55 new components. 3 new tabs (Transform, Domain, List). New options for Equalized, Weighted, and Degree on Tween and Twisted Box components. Multi-threaded Twisted Box components for morphing and geometry filling / subtracting. Some components renamed and organized in different tab locations. Many component updates, bug fixes, code optimizations, and option additions. Please read the installation text file first that comes with this download before installing Pufferfish.

Comment by Michael Pryor on May 9, 2019 at 10:40pm

@Christopher Leung

Well, I didnt do anythng special with the Trim Mesh With Plane component to keep the colors so guess it just does, however the mirror cut mesh uses the same method in the code, the difference is the new faces added by bridging. This tell me that adding new faces  to the mesh probably erase the color. 

 

"I also tried to use the MirrorCutMesh together with the MirrorCutColour components which is not quite successful as the previous one"


Well it is quite obvious why that wouldn't work, Mirror Cut Colors just cuts a list of colors at an index. There is no way that the order of your mesh verts / colors would match that cut, because a plane cuts a mesh doesn't mean it is cutting the order of its verts / colors in half.

Say you have a list of colors:

0:red

1:Blue

2:Green

3:yellow

say you mirror cut that list at index 2. you will have:

0:red

1:blue
2:blue

3:red

Now say that list of colors are associated with a mesh face

0: vert 0 = red

1: vert 1 = blue

2: vert 2 = green

3: vert 3 = yellow

But you mirror cut that face from between vert 0 and 1 to between vert 2 and 3, you will have remaining vert 0 and 3, so the mirror color of the mesh should be
0:red

1:yellow

2:yellow

3:red

Hope that makes sense. 

What I was suggesting to you before is to generate a color map always for one half of the mirror cut but apply it to both halves. This of course means generating the color map with grasshopper in the process.  

Comment by Christopher Leung on May 9, 2019 at 8:33pm

Hi Michael,

Thanks For your quick response, and developing puffer fish components 

I have managed to find a solution by using the TrimMeshPlane Component which keep the original colour of the mesh after the operation, i then mirror and join after operation is done. (bypasse the mirror cut mesh).

It seem that it does the work for now, but im not sure how this might impact me later on down the track.

 

Here the Results,


---------

I also tried to use the MirrorCutMesh together with the MirrorCutColour components which is not quite successful as the previous one, as it remap the whole mesh colour throughout the whole outcome. (i am wrong on how i interpolate the colour as it require to cull some colour that are cut)

It does the mirroring Mapping colour but not from the Initial Geometry, comparing both image you will understand what i mean.


------

Here the grasshopper component i used and i also attached the files in case you want to give it a try. 

As per the colour bridging condition, i think it is subjective, as it depend on the design. 

1) one condition for this could be by using the colour from the original mesh colour to define the colour of the bridging element (The offset plane colour is apply to the bridge)

2) Apply the same Mesh colour in along the bridge (Which might look ugly if their is a huge offset), for instance if it is red colour, it just translate the red colour across, it might be better to take the colour on the vertex of the mesh where it cut the plane to map onto the bridging component than averaging colour of the face

I hope this could be somehow helpful into developing the tool, as for myself i dont have much codding experience yet.

Regards,

Chris

-----
Files
MeshColourTest.3dm

Colour%20Test%20Mirroring.gh

 

Members (337)

 
 
 

About

Translate

Search

Photos

  • Add Photos
  • View All

© 2019   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service