Grasshopper

algorithmic modeling for Rhino

This is the script of Daniel Abalde's Peacock tapered offset post, here:

http://www.grasshopper3d.com/photo/the-variable-offset-component-sp...

Views: 93819

Replies to This Discussion

Here's an STL of an exploded and duplicate lines removed tree bunny result that used the relatively uniform Tetgen tetrahedral Delaunay mesh and then obtained its dual Voronoi:

It's considerable work to get a Tetgen binary installed along with pointing it to a saved STL of the enclosing bunny mesh.

The result though conforms to the original MeshMachine created curvature-adaptive mesh, to retain fine detail at the surface, while obtaining a fairly well behaved non-random interior that smoothly changes from coarse inner to finer surface spacing.

None of the duplicate line culling components from various plugins work unless I remember to flatten the input. Fastest is my own duplicate line finder, that just checks for the same midpoint:

Since so many shortest walks overlap, after exploding there are over 100K lines, but only 10K unique ones.

Attachments:

I've teased out the Tetgen tetrahedral mesh tetrahedrons as separate meshes, baked in varying render material colors. Weaverbird Catmull-Clarke subdivision then affords pillows from them.

Besides a tetrahedron quality flag, Tetgen controls tetrahedron size by specifying a maximum tetrahedron volume.

I hope someone can make a real Grasshopper plugin for Tetgen, and also somehow include the Voronoi dual with surface polyhedra too, something like this, which I found online:

Tetgen will *not* give the surface polyhedra, only the inner ones with a totally uneven subsurface, so you lose your surface definition. At best it gives unit vectors indicated by a -1 flag in the Voronoi output file. 

Note the tetrahedrons will not fill space as regular objects, so there's always some chaos and compromise, but Tetgen can make them as regular as possible with its -q flag and a couple of numbers.

Attachments:

It might be worthwhile checking out some of the Python bindings to Tetgen, such as MeshPy: https://pypi.python.org/pypi/MeshPy Looks like it only has C++ dependencies which means it might be possible to implement in GHPython (ala ShapeOp).

I was still neophyte confused about MeshPy, since it said it required Boost.py, which is in my mind a failure to tell me what buttons I need to push to make it work. Do I need a compiler to install it? What buttons do I push? I have no idea. What directory do I put it in, even? Then how do I make it turn on and do something? Seriously, these are human factor arbitrary elements of procedure, that are rarely explained. That's how Facebook takes on several billion customers and many of them don't know what a browser is.

https://mathema.tician.de/software/meshpy/

Thanks for the inspiration!

Is this the real life?
Is this just fantasy?
Caught in a landslide,
No escape from reality.

I've become a jeweler and don't feel like I have enough power tools yet to switch to creative design mode, so thanks for the physical object output as I continue delving into clipped Voronoi diagram algorithms.

buy a 3d printer and print all those polyhedra then you can have a real life fantasy landslide jigsaw puzzle from hell!

I'm jealous martyn!

If I had a router I would router out the branch structure only, as well as a mirrored copy.
Then I would glue one branch structure using clear silicone to a Glass Paneled Wood Framed Door and the mirror branch structure to the other side of the Door..... yikes, gives me goose bumps!

If you had my router you wouldn't be so jealous! If you know the British TV comedy "Only Fools and Horses" you will understand when I describe my router as being a bit like Trigger's Broom!

Trigger's Broom

My plan is to make a new router similar to this one...

CNC Router from Item Aluminium Extrude

great work guys.

Well, say we wish to flush set a stone at the end of each branch - from the tree structure, do you have an idea how we could find the points at the end of the branches? 

The beauty of it is that the tree brand ends are all original mesh vertices. You could find the last lines too by checking if one of the endpoints is a mesh vertex.

OK, I did that now too.

I had to alter the Tetgen flags in the Python script to add Y, which means it should fully preserve the input mesh, something I assumed it already did.

With so few mesh points, there's an odd artifact of the Tetgen Y flag to preserve fully the mesh points, namely long skinny triangles that makes the final branches rather longer than the rest. I think topology is stopping it from adjusting into a uniform 3D mesh.

Removing the Y flag still works with this script though, but you lose some surface points, it seems, the result still being a tree with end branches distinguished. The simple sphere mesh with only a few vertices example leads to less branching too, since most paths to a vertex are nearly straight.

Attachments:

FYI: I did not think a computer could easily run out of 32gb of ram so quickly. That's exactly what happens each time one runs a copy of Tetgen in Rhino. Tetgen does not exit when Rhino exits. Check your task manager

1. Am I correct in assuming that Tetgen is responsible for adding the organic nature the branches end up with? If so I prefer the organic nature of the branches as opposed to the simple pipe structure.

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service