Grasshopper

algorithmic modeling for Rhino

Hello, a post with trabecualr with voronoi again..

I am thinking about generating uniform point "inside the solid." 

That is, all points should be distributed uniformly along the shape of the structure.

How can I do this work ? 

Pop-3D may not be used since it generates a random set of points.

Thanks.

p.s. attached file is the solid I want to make points within.

Views: 36877

Attachments:

Replies to This Discussion

Delightful is that I can now use this well behaved (towards not creating big holes in the interior instead of leaving some mesh there) system to modify the original Lloyd's algorithm loops via the Hoopsnake plugin, and get more regular cells at each size scale:

The trick to not destroying the interior was to leave the longest distances alone, instead of just moving everything some fixed % towards the closest edge point.

Instead of using Hoopsnake, which slows down each cycle, I could always copy and paste the Voronoi and post processing block into a tall stack, or place the partner pair in a Grasshopper cluster via the Edit > Cluster menu command and stack those 5-10 times.

Using the Anenome instead of Hoopsnake plugin to achieve a Lloyd's algorithm loop seems faster since it doesn't bog down saving a copy of all outputs:

Attachments:

Ugh, there's a huge problem translating my 2D system of fractal like branching into a 3D truss: what comes out as Voronoi cell border lines in 2D is what gives the branches, but in 3D those are actually planes instead of lines, so there is no equivalently elegant and orderly branching structure in there made from lines. You only get the mostly triangulated truss which is much tighter, shown here in blue in the 2D version:

If you only sparsely populate those truss points, you don't have as much triangulation and you do get more of a natural bone look, but you lose the orderly branching that I was so excited about in 2D. Also, since hexagons pack 2D space perfectly, the 2D case does create a lot of good areas of hexagons, but in 3D there is no similarly symmetrical space filling object except a cube, but cubes are not what Voronoi emulates at all. If the 2D case branches with three lines per vertex, then the 3D case could ideally branch with 4 lines per vertex, just like the atomic structure of diamond. I was hoping for that, naively, but am now discouraged. A surface adaptive diamonoid lattice is a long way off, it seems. Without the Voronoi relaxation cycles, just distorting an existing lattice somehow merged to the surface as needed local to the surface, won't even out well.

Diamond also is a very specific structure, not amendable to fractal like branching so I'm not even sure what the 3D equivalent of such branching is, whether there is an orderly system. "Branching" is the wrong concept anyway, since they both branch and join together again, forming cells. Pure branching with that ends at the surface is not coming out of Voronoi.

http://www.grasshopper3d.com/photo/stochastic-fractal

Here I have created a superior surface adaptive 3D Voronoi, by using my 2D system of only moving a lot the vertices already near the surface, leaving mostly alone the deeper ones, so I no longer get a blank hole in the interior but I  do get lots of surface density:

The Proximity3D component is a convenient closest neighbor connectivity utility and here I have cleaned up with a cluster for the space warp that moves points towards the surface:

Attachments:

The full variation is here, instead of a movie, in moving the points near the edges cumulatively more so, while moving the points furthest from the edges less so, from 10% to 90% power:

Varying the original random point seed shows there is some history effect that relies on the original points, despite Lloyd algorithm relaxation, but I think there are only a few stable variations since I found repeats for different seeds too:

The Google search term for this sort of thing is "anisotropic centroidal Voronoi" but usually involves excruciatingly complex math with no source code especially since everybody is optimizing for speed instead of simplicity. Often higher dimensions are invoked and statistical methods of approximation and all manner of tricks to shorten the relaxation cycle time by merely altering rather than recalculating a new Voronoi diagram each cycle.

To enhance the cellular bone structure, there appears to be a distinct looseness still lacking. Its as if a certain Chaos theory algorithm needs to thrown into the mix. There is no intermingling between large and small vornoni pieces. I don't see the small pieces should be exclusively relegated to the perimeter. For example a vein of smaller vornoni pieces could run through the a 3d vornoni structure, on a predetermined path such as a bezier curve,for example.

I'm inventing robot bone.

Here are dual density metal foams being used for real bone replacement:

http://rsta.royalsocietypublishing.org/content/368/1917/1999

Generalizing my 2D system to an arbitrary outline curve required making up for the Grasshopper Voronoi component's only accepting a damn rectangle input as the region, to create what is called a "clipped anisotropic centroidal Voronoi diagram":

wow too much to read... I should read one by one haha. Thanks.

A clearer biased 2D centroidal Voronoi script now uses an Expression instead of spaghetti:

Attachments:

Fantastic. What have you done here though?

Should I accept that it has equilibrated "properly" if there is still ambiguity in triangles in certain cells?:

BTW, much of centroidal Voronoi studies in the technical literature are only a few short years old, new stuff all the time, so my mere guess that one could bias ("space warp") the result within each cycle was just a lucky experiment. Glad you like it!

I also did this is 3D for bone structure studies, so it indeed generalizes to 3D Voronoi cells:

http://www.grasshopper3d.com/forum/topics/voronoi-diagram-and-bone-...

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