Plankton

Plankton is a free and open library implementing the half-edge data structure for polygon meshes.

This way of storing the mesh connectivity information allows easier adjacency queries and supports mesh faces with any number of sides (Ngons), not just quads and triangles.

The plankton library is intended primarily to be referenced and used from scripts, but  basic GH components for conversion and topology extraction are provided, and more may be added at a future date.

Plankton is still very much a work in progress. This is a first release, and methods/features will change in future versions.

Currently most of the methods relate to extracting topology information from existing meshes, and converting between Rhino meshes and Plankton meshes, but the intent is to over time add more ways of actually modifying and building meshes.

Please share your thoughts and ideas in the forum...

download the latest release here:

https://github.com/meshmash/Plankton/releases/latest

This library is distributed under the terms of the GNU Lesser General Public License (LGPL).

(The source is available on GitHub here)

Copyright 2013 Daniel Piker and Will Pearson

For more on half-edges, see:

http://www.flipcode.com/archives/The_Half-Edge_Data_Structure.shtml

http://openmesh.org/Documentation/OpenMesh-2.0-Documentation/mesh_hds.html

http://www.graphics.rwth-aachen.de/media/papers/directed.pdf

Thanks to the people I have had many conversations about meshes with over the last few years that have really helped inspire and inform this work: including: Daniel Hambleton, John Harding, Kristoffer Josefsson, Harri Lewis, Giulio Piacentino, and especially Dave Stasiuk, who also shared code that helped get this working.

Dynamic remeshing script with Plankton and Kangaroo

Here are some demo's of remeshing with Plankton combined with some relaxation functions from Kangaroo.

(Similar to what I described here:

 http://www.grasshopper3d.com/profiles/blogs/meshmash-dynamic-remeshing)

The first is a simple remeshing aiming for equal edge lengths, while the second also allows interpolation between multiple target lengths, and also optimizes for circle packing.

They require the latest version of Kangaroo to run.

Enjoy!

More explanations to follow soon

Daniel

Load Previous Replies
  • up

    Roman Baudisch

    Hallo Daniel,

    I want to ask for a simple Bugfix, using your definitions for your dynamic remeshing script.
    I used your scripts and after a few iterations, which are working well, the program stops and the C# component gets red.

    Is it related with the version of Kangaroo? I'm using Kangarpp 0096 and the Plankton Version i don't really know. Can you help me out?
    • up

      andres obregon

      Dear Daniel

      I open the Remeshing.gh definition and I have this warning: How could I fix this ?

      Thanks

      A.

      Warning (CS1701): Assuming assembly reference 'RhinoCommon, Version=5.1.30000.4, Culture=neutral, PublicKeyToken=552281e97c755530' matches 'RhinoCommon, Version=6.13.19058.371, Culture=neutral, PublicKeyToken=552281e97c755530', you may need to supply runtime policy
      Warning (CS1701): Assuming assembly reference 'RhinoCommon, Version=5.1.30000.13, Culture=neutral, PublicKeyToken=552281e97c755530' matches 'RhinoCommon, Version=6.13.19058.371, Culture=neutral, PublicKeyToken=552281e97c755530', you may need to supply runtime policy

      • up

        Declan Halpin

        Hi all,

        I'm having trouble getting this installed/functioning.  I am running Rhino V6 and Kangaroo2.  I've downloaded plankton.dll, plankton.gha, and MeshMachine.gha.  I moved them all to Program Files/Rhino 6/Plugin-ins/Grasshopper/Components.  I've also copied them to the AppData/Roaming/Grasshopper/Libraries folder to see if that helped.  They are all unblocked.

        When I open Grasshopper I can place Plankton components on the canvas, but when I open Daniel's Remesh_Plankton_circles.gh, I am presented with a series of popups to resolve assembly references:

        -  When it asks for a "New" KangarooLib.dll do I choose KangarooSolver.dll?

        -  When it asks for a "New" PlanktonGH.dll do I choose Plankton.dll?

        -  When it asks for a "New" GH_Kangaroo.dll do I choose Kangaroo2Component.gha?

        If I do specify files as described above, I still get errors: 

        VertexNeighbours, NakedVertices, Combine & Clean (all Kangaroo functions) are not installed

        I know there has been a lot of discussion on this, but for some reason I can't get this thing working.  It looks absolutely fantastic (and potentially a silver bullet for me) so I'm eager to get it going.  Any help would be greatly appreciated.

        tx,

        Declan