algorithmic modeling for Rhino
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.
Website: https://github.com/meshmash/Plankton
Members: 383
Latest Activity: Oct 9
Following on from the images I posted recently (here),I am now making available the source script for Cytoskeleton.First,…Continue
Tags: mesh, Plankton, Weaverbird
Started by Daniel Piker. Last reply by Serge Jul 31, 2020.
Hi,I’m using mesh machine to have a good triangulation of my mesh but I was wondering if I can set target valency for my edges in order to control triangulation. I want to have a triangulation where…Continue
Started by Contestables Jan 21, 2020.
Here are some demo's of remeshing with Plankton combined with some relaxation functions from Kangaroo.(Similar to what I described here: …Continue
Tags: remeshing, mesh, Kangaroo, Plankton
Started by Daniel Piker. Last reply by Contestables Jan 20, 2020.
Plankton 0.4.2. If I take any simple mesh object generated in grasshopper and convert it with the PMesh module, then try running the following python code, I get:for v in…Continue
Started by Cory. Last reply by Will Pearson Nov 27, 2018.
Comment
Hehe, no worries. One of my main headaches with assemblies was always trying to figure out their actual name (as in, not the file name) and their actual content (available types), I just spent a little time looking into assembly introspection. Seems pretty straight forward, attached a small example. I suspect this could be useful for you Mathias. Best, Anders
140402_AssemblyIntrospection.gh
Oh gosh, you're right. I've just realised I've got both Plankton.gha and the PlanktonGh.dll that Daniel packaged with Kangaroo... Sorry for muddying the waters!
Thanks Will. That's certainly true. In your example "PlanktonGh" refers to the "old" .dll correct? The one which is now simply called "Plankton.gha"? In which case one has to use "AddReferenceToFile" as there are now two files with the same name, but different extensions (which I think I prefer actually). Anywho, just tried out the following which seems to work for importing all the dependencies for both Plankton and Kangaroo:
# Reference .NET assemblies
import clr
clr.AddReferenceToFile("Plankton.dll")
clr.AddReferenceToFile("Plankton.gha")
clr.AddReferenceToFile("KangarooLib0096.dll")
clr.AddReferenceToFile("Kangaroo0096.gha")# Import Plankton
import Plankton as pl
import PlanktonGh as plGh# Import Kangaroo
import Kangaroo as ka
import KangarooLib as kaLib
import GhKangaroo as kaGh
Let the digging begin :)
It's all personal preference but here's how I do things (off the top of my head):
import clr
clr.AddReference('Plankton')
clr.AddReference('PlanktonGh')
import Plankton
import PlanktonGh.RhinoSupport as planktongh
pmesh = planktongh.ToRhinoMesh(mesh)
(Note that Plankton.dll and PlanktonGh.gha are in my Libraries folder.)
Hi Mathias,
Yes - that's correct, the remeshing example uses some functions from GhKangaroo.MeshPhysics, so you'll need those libraries referenced. (I'm looking though at whether it might be better to keep all these functions in the .dll in future)
Thanks everyone for looking into this. I did see the ToPlanktonMesh command in the C# examples, but couldn't get it to work without the references.
In order to script Kangaroo functions like in the remeshing examples, I assume I need to reference the kangaroo .dll and .gha aswell?
Hi guys,
right now clr.AddReferenceToFileAndPath is I think the correct method to use here. That .dll has to ultimately be added to the Python context. More in general, McNeel might want to add a new registration to AssemblyResolve for .gha files. Let's see also what Steve thinks.
Giulio
--
Giulio Piacentino
for Robert McNeel & Associates
giulio@mcneel.com
Edit: I see you already figured it out Daniel. I attached another version which assumes that the GH library folder is read by RhinoPython, but offers the perhaps least "ugly" method :)
140401_PlanktonDemoPython_Update03.gh
Thanks Daniel,
This does seem to make Plankton more tricky for Python implementation. In order to reference the Plankton.gha I renamed it PlanktonGh.dll and imported in the same way as Plankton.dll. This provides access to the RhinoSupport class which contains the ToPlanktonMesh() method, allowing us to call it in a procedural manor. This is not exactly pretty, but does seem to work. Attached the example from before.
Perhaps this is something for Giulio/Steve to have a closer look at. I have already suggested that the Grasshopper library folder be add..., but it seems that this could use some deeper thinking/planning in general (should we be able to import .gha files etc.).
Best,
Anders
140401_PlanktonDemoPython_Update02.gh
ok - this seems to work:
import clr
clr.AddReferenceToFileAndPath("C:\Users\Daniel\AppData\Roaming\Grasshopper\Libraries\Plankton.gha")
import PlanktonGh as pl
pMesh = pl.RhinoSupport.ToPlanktonMesh(mesh)
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by
You need to be a member of Plankton to add comments!