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.

Cytoskeleton

Following on from the images I posted recently (here),

I am now making available the source script for Cytoskeleton.

First, to explain the name:

In 1903 Nikolai K Koltsov  proposed that the shape of cells was determined by a network of tubules that he termed the cytoskeleton

(the name comes from Cyto- meaning cell or hollow vessel)

This is another wireframe thickening tool, intended for 3d printing use.

In contrast to exoskeleton (which works on general line networks), this works exclusively on lines which form the edges of meshes. The additional connectivity information present in this case makes it possible to produce an output with all quads, and moreover, a quad mesh with all even valence vertices.

Because it works on a Plankton mesh, the input can be made of ngons. We can also input a triangular mesh, apply the dual operation, and then thicken the edges of the resulting polygon mesh. This works well in combination with the remeshing script I posted here, for getting approximately equal edge lengths. This can be used to quickly turn any closed mesh into a lightweight hexagonal (mostly - with a few pentagons and heptagons for curvature) frame structure.

The even valence quad mesh property of the resulting thickened mesh means we can also use the mesh direction-sorting and directional-subdivision tools from Kangaroo (described here).

When combined with Weaverbird's Catmull-Clark subdivision, this allows us to smooth the mesh, while also having control over how much 'webbing' occurs at the nodes:

from left to right we see:

  • 2 levels of Catmull-Clark with no directional subdivision
  • 1 level of directional subD, then 2 Catmull-Clark
  • 2 levels of directional subD, then 2 Catmull-Clark

One could even combine the resulting surfaces with all sorts of relaxation, or developable strip unrolling...

The code is there for you to read, so feel free to experiment and make adjustments to it. Hopefully it is fairly self explanatory.

Please feel free to ask any questions or suggest improvements, or just show off anything you create using this.

and yes - because the input and output are both meshes, you can apply it recursively!

This script references version 0.3.0 of Plankton, which you can download here:

https://github.com/Dan-Piker/Plankton/releases/tag/v0.3.0

Load Previous Replies