Grasshopper

algorithmic modeling for Rhino

Well ... Daniel (and fellow GH users)

I post this here because there's a broader audience around (but move it to Kangaroo group if required) - note Starling, Anemone and Wb are used.

You remember this case for sure (started by Giorgio a couple of days before). Ive got involved because I exploit ways to "relax" shapes on nurbs (say patterns created by Lunchbox or "manually) without using any kind of mesh (more explanations soon).

Here's 5 test cases (SDK appears that doesn't have some "thicken surface" thing ... thus the algo that finds the "whole" shapes is rather naive) VS 2 Kangaroo "methods" and the why bother (he he) option as well.

If the goal is to "fit" these shapes within the nurbs ... does it work so far? No I'm afraid (appears that "springs" used are not the proper ones - or [Kangaroo1 option] the lines that pull should been originated from valance 2 points only)

Tricky points:

1. Internalize appears having a variety of serious issues (see Input inside definition) - Load Rhino file first (but even so ...).

2. Pull to surface is deactivated - this is not the issue here (and it's very slow).

3. Since Starling/WB alter the "curves - points" related order

the issue here (Pull points to curves) is to correspond apples to apples:

and that's what Anemone does:

From chaos :

to order:

this means that prior activating Kangaroo you should double click to the Anemone start component in order to "sort" properly the curves.

But .. fact is that results are pathetic:

more soon

best, Peter

Views: 7495

Attachments:

Replies to This Discussion

BTW: this single "shape" (last surface, NOT internalized, GH bug that one) poses some challenges as regards excluding "improper whole modules" from the working collection (spot the bad boy in the fore ground):

if someone could mastermind some simple way (there's a complex "post process" way as stated inside the definition) I would be glad to get inspired.

BTW: one (out of many) reasons for puzzling with "relaxing shapes" on nurbs:

http://www.kalzip.com/kalzip/us/technical/technical_long-length-she...

BTW: imagine the following rather ordinary scenario (same kind of issue with Evolute Tools pro): work > Kangaroo > work > .. > work > Kangaroo > ..

by what means you think possible to "reconstruct" some meaningful  data system (i.e. "restoring" in the pre-Kangaroo state, so to speak) out of the stream of "lines" and "points" that a particle system can output?

If I understand correctly what you are asking - this is what the Geometry/GeometryOut is for.

Any data tree (which can contain combinations of points, lines, polylines and meshes) going in will come out with the same structure, just with its points moved along with the particles

Here's a definition that relaxes hexagons on a NURBS surface.

I've shown it with both PullToSurface and PullToMesh forces, though I'd recommend against using the former - meshing it for the pulling calculation is just so much faster, the input can still be NURBS, the output is the same, and you can choose the resolution of the meshing to get the numerical accuracy you desire.

As I was saying in the other discussion with Giorgio, it is quite a different approach if you want clean noding out of the pattern at the edges. If instead some stepping of the pattern, or trimming and tidying up along the boundary as you show here is okay, then this usually makes it easier to get nice panel shapes.

If this is the case, then I think the best thing to do is untrim and extend the surface, generate and relax the pattern on this, then cut away the parts you don't want.

Attachments:

...and here it is showing how much the hexagon regularity is improved.

If for each hexagon we take the ratio of the shortest edge to longest edge as the measure of regularity, the average goes from 0.55 to more than 0.99

Attachments:

Well Daniel ...

...  since actually clean noding ("whole" shapes so to speak) is the desired goal appears that relaxing the pattern against an untrimmed surface (and then eliminate things in a similar way as I've used) is some (*) approach (V4 does this already but I haven't attached it since there's still on the making).

(*) But this is half baked bacon: the goal is to "fit" the whole patterns (the untrimmed "shapes", that is ) within the trimmed surface  (controlling the "deviations" as well) - say as much as possible nodes with valence 2 "touching" the trimmed surface edges. Otherwise eliminating the relaxed ("clean") things (on the untrimmed nurbs) brings us again to the start of the issue or not? (we are in a rabbit hole with this I guess, he he)

BTW: Since offset surface (both sides) and make a "solid" is not available in SDK ... one of the main issues here is the elimination of these "shapes" (the brep used via extruding the projections etc etc is OK because the surfaces are chosen to suit the available components, but imagine a bottle like thing etc etc)

more soon with V4 (or V5)

And whilst V5 build is on the making here's some good reasons for "relaxing" this on that (directly related with this case):

1. The emergence of "liquid" forms in architecture poses a variety of issues mostly related with panelization. Panelization means many things, for instance (1.1) designing an aluminum facade system (most common case:  "hinged" extrusion profiles that contain opaque or transparent materials - the "facets"), (1.2) designing insulation and final "coating" in roofs, (1.3) ... (1.n) continue at infinitum.   

2. Let's stick to the least understood (and less glamorous) part : topic (1.2). The best core material for the core job is FOAMGLAS:

http://www.foamglas.co.uk/building/applications/

3. Most ignorants in our trade believe that the main point/task of a thermal insulation is the U thing. But in fact is the Dew Point (DP) management the most important of them all (DP = critical temperature at witch the relative humidity reaches saturation). Thus we arrive to the compact "roof" (or some compact "part" of the AEC thing) matter: (3.1): Dew point INSIDE the thermal insulation, (3.2): no thermal bridges, (3.3): no air from the application medium (say plywood, corrugated/flat sheets, special Foamglas Px panels etc etc) up to to the water proofing membrane(s) (say 2 layers of SBS bituminous membranes). Here's the most typical case of them all (special tapered inserts not shown - notice the cladding fixing method without perforating the sheets, no other insulating material can do that):

4. The above image brings us directly to Kangaroo matters (if we add the "liquid" thing meaning no linear geometry around). By "liquid" I mean that our working surface is no more "flat":

In particular we must: (4.1) test if the corrugated sheets can follow the curvature (they can up to a point), (4.2) test if the FOAMGLAS panels (straight "boxes")  can safely AND FULLY adhere to the medium without spending the GNP of Nigeria to do it (*), (4.3) test if the VM Zink (or Kalzip) cladding systems can cut the mustard - they are more flexible than the corrugated sheets (and can been tapered on-the-fly, Germans are very innovative on that matter)  ... but... well ... you understand where the issue is, I do hope.  

(*) you can use 85/25 bitumen (cheap and nightmare to put it) or PC500 (very expensive and easy to apply). Obviously some mechanical fixing is required as well.

And what is the most important test of them all? Well ... the 4.2 thing, what else?

more soon.

Well Daniel ...

... I think that the "correct" way to do this (the "core" way anyway, he he) is:

1. Finding points in the module's perimeter (boundary on a mesh created by Starling) that have valance 2 (*) - meaning that each is connected only to 2 others.

2. Dividing the nurbs edges by a corresponding number of segments and creating a "zig-zag" combo of springs (lines) that pull the valance 2 points towards the edges (avoiding the criss-cross situation that ruins the pattern topology).

PS: here's a failed approach to control what kind of springs we need (cull them based on their length)

3. Separating the module's perimeter from the rest of the module's lines (creating a "stiffer" perimeter than the rest).

4. ...

(*) the question is: how to do that?

(*) the question is: how to do that?

Silly me, it was elementary/obvious - culling based on vector angle (<=180 : yes, >180: no).

Blame some shortage of cigars.

I'll try to create different stiffness springs (boundary points shown pull hard, points not shown pull mild) and see what happens.

The 1M question : I have a feeling that is is a delicate balance of stiffness between a zillion springs. But ... if you pause the simulation and change a x value ... the process continues further on instead of restarting (WAD or what?). That way it's rather impossible to interactively inspect changes due to subtle value(s) alteration(s)

Update: progress is made (version V8):

1. 123,34 bugs are addressed (and 1234,5 are created - in the Name of Science).

2. Singularities (like in case5) are history.

3. A variety of shapes is added (WIP).

4. A variety of surfaces is added (WIP).

5. The correct way to cull whole shapes within the nurbs is added.

6. The idea to pull shapes via valence 2 boundary points appears working :

From zero:

To hero:

more (and the definition) soon

Also - while on this topic of relaxing on NURBS, here is another interesting application - converting an existing untrimmed surface with badly-spaced/skewed isocurves into a trimmed NURBS surface with the same shape, but a nice u-v grid:

The technique is similar to the other example I posted above:

- Make a copy of the surface and extend it on all sides in Rhino

- Make a mesh from the original surface

- Relax this mesh, while pulling it onto the extended surface, and expand it until it covers the boundary of the input surface

- Build a new NURBS surface from the grid of mesh points, and trim it with the original boundary

Attachments:

Hmm... this is quite interesting I confess.

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