ns about them.
It's a direction for Kangaroo I very much intend to continue developing - and I am still getting to grips with the possibilities and experimenting with how different optimization and fairing forces work in combination with one another, so I would value your input and experience.
For those interested in some background reading material -
[1] http://www.cs.caltech.edu/~mmeyer/Research/FairMesh/implicitFairing.pdf
[2] http://mesh.brown.edu/taubin/pdfs/taubin-eg00star.pdf
[3] http://www.pmp-book.org/download/slides/Smoothing.pdf
[4] http://graphics.stanford.edu/courses/cs468-05-fall/slides/daniel_willmore_flow_fall_05.pdf
[5] http://www.evolute.at/technology/scientific-publications.html
[6] http://www.math.tu-berlin.de/~bobenko/recentpapers.html
[7] http://spacesymmetrystructure.wordpress.com/2011/05/18/pseudo-physical-materials/
[8] http://www.evolute.at/technology/scientific-publications/34.html
[9] http://www.evolute.at/software/forum/topic.html?id=18
At the moment the Laplacian smoothing is uniformly weighted, which tends to even out the edge lengths as well as smoothing the form, which is sometimes desirable, and sometimes not. It also tends to significantly shrink meshes when the edges are not fixed.
I plan to try some of the other weighting possibilities, such as Fujiwara or cotangent weighting (see [1] and [3]), as well as other fairing approaches, such as Taubin smoothing [2], Willmore flow[4], and so on. This also has applications in the simulation of bending of thin shells.
Planar quad panels are often desirable, but I'm finding that planarization forces alone are sometimes unstable, or cause undesirable crumpling, so need to be combined with some sort of fairing/smoothing, but the different types have quite different effects, and the balance is sometimes tricky.
There's also the whole issue of meshes which are circular (I posted a demo of circularization on the examples page), or conical (this one still isn't working quite right yet), and their relationship with principal curvature grids and placement of irregular vertices, all of which is rather different when the whole form is up for change, rather than having a fixed target surface [7].
I'm also trying to get to grips with ways of making surfaces of planar hexagons, which need to become concave in regions of negative Gaussian curvature (see this discussion)
and I hope to release soon a component for calculating CP meshes, as described in [8], which I think could have many exciting construction implications.
While there are a number of well developed smoothing algorithms, their main area of application so far seems to be in processing and improving 3D scan data, so using them in design in this way is somewhat new territory. There can be structural, fabrication or performance reasons for certain types of smoothness, but of course the aesthetic reasons are also often important, and I think there are some interesting discussions to be had here about the aesthetics of smoothness.
Anyway, that's enough rambling from me, hopefully something there triggers some discussion - I'm really keen to hear about how all of you envision these tools might be used and developed.
…
On the other hand ... well ... we can pretend that this could be some sort of add-on dedicated for broken pieces, (and nerves if loops = a big number) he he.
Anyway:
1. If you enable the history (the yellow things) you can watch the recursion working: get a donor box and "slice" it in 2 (either via an "orthogonal" plane [the fast boxes] or a random one [the slow breps]). Then get each one and repeat until the desired "depth" of "slices" is achieved (the loops, that is). Pure recursion in terms of programming (a function does something, yields results and then calls itself to further process each result).
Double click on the C# to see the code (but don't change anything). For the record this is the function that does the main job (spot the fact that if it's not terminated it calls itself [last line]):
2. The x, xy, xyz options restrict the random plane (actually in the boxes case there's another technique used (Intervals) but never mind). For instance (case random breps) the slicing plane is defined at the brep center and using a random direction:
Vector3d dir = new Vector3d(rand.NextDouble(-1,1), rand.NextDouble(-1,1), rand.NextDouble(-1,1));
If the 3rd value is 0 then the plane's YAxis is parallel to Plane.WorldXY.ZAxis.
3. Now if the "slicing" thing was a random polyline at a random plane the pieces could be far more "elaborated" (and/or "naturally looking") ... but the thing with programming is to know(?) where/when to stop.
4. This approach could use any donor Brep (a blob for instance) or a Brep List. Notify if you want to add such an option.
5. Added some lines more for an option that allows to sample the pieces (due to the last loop) in an automated flat "layout" (it's a bit more complex than it appears on first sight).
6. The x,y restriction mode now affects the random slices as well. See what I mean:
and the same restriction using boxes:
Truth is that all that freaky stuff could be helpful for you if you had serious plans to learn C# (not something achievable without pain and tears aplenty).
best…
g? What can be done to speed up the process? Algorithmic Design Workshops is a platform created by ecoLogicStudio to engage these questions introducing novel parametric modeling techniques in the context of architecture and landscape design. Each event will be a opportunity for learning design techniques, testing new methods and debating their potential applications or evolution. Architects, Landscape architects, urban designers and students alike will find in the workshops a unique opportunity to improve their technical skills while confronting themselves with the most debated advanced design subjects.
This workshop, particularly suitable for beginner/intermediate users, offers a playful introduction to algorithmic and computational design with Grasshopper. The ambition is to generate 3 dimensional artificial landscapes based on the recognition of natural pattern formations (valleys, mountains, dunes, marshes, coral reefs, etc.), their subdivision in territories of occupation and the development of related path systems. The workshop will start from processing satellite images of natural formations and extracting patterns from them with the GH point set reconstruction tools. Applicants will than begin the process of generation of 3D architectural landscapes based on a series of structuring operations and negotiations with the project site. An evaluation process will than follow and will allow the recognition of inhabitable spaces, accessible slopes and ground movement volumes.
more information on:
http://algorithmicdesignworkshops.wordpress.com/2011/10/04/algorithmic-landscapes-gh-advanced-modeling-workshop-october-2011-ecologicstudio/…
o do this I used 'tangent duality' of the triangles (also in the paper). Yes that's the Soumaya Museum in mexico DF. I believe GT did the facade. If you look closely, the hexagons are not connecting watertight, there is a small gap between them so they can all be congruent, the small gap makes that possible. They're evenly distributed among the surface which is nothing new, it has been done before only with discs by future systems,http://www.gadailynews.com/thumbnail.php?file=assets-2012/Selfridge...
For me the challenge was to create a water tight planar hexagon grid mainly for efficiency reasons. If you look at the joints, which are more simple and easy to construct (only 3 edges come together, were a quadricular grid has 4 and triangular grid 6). And of course the panels are all planar :). Aesthetics came second.
With negative curvature it is not possible to aggregate your surface properly with convex planar hexagons (that fit watertight that is). That's why in the negative regions the switch from being convex to concave. See the pdf for more info, I also didnt knew this when i started messing around :)
http://en.wikipedia.org/wiki/Convex_and_concave_polygons
Thanks and I`ll keep you guys posted!
Cheers!…
had):
You can see that the 4 rings have different paths {0;0;0},...,{0;0;3}. That's why [Dif] component will not treat them as a "set of Breps"(leave your mouse pointer over the component to see what inputs it expects) but separately. So it will do 4 subtractions (the output will be 4 Breps).
But if you flatten this data tree into a single list you get this:
Now all 4 rings are in a single list and [Dif] component can treat them as a "set of Breps"
Notice also how the wires change (single line for one object, double line for one list, double dashed line for a data tree). Now the output of [Dif] is one Brep(all four rings subtracted from the rod).
Hope this is more clear now... Still, check the links for a better understanding of trees :)…
mber of assumptions can be safely made, and this is not the case for equations with unknown behaviour. The initial division may be too coarse to find a specific peak, and this approach cannot handle discontinuities either.
Assume we're trying to find where a function becomes zero, within some domain. We know ahead of time that there may be any number of solutions; zero (x²+1), one (x+1), two (x²-1), many (Sin(x)) and even infinite (Sin(1/x)).
So we evaluate the equation at 9 values, dividing it into 8 spans (the dashed purple curve is how the search algorithm sees the equation). We immediately determine that none of the spans crosses the y=0 line, so either we give up or we focus on spans 5 & 6 as they got closest. We'll never find the two solution in span 3.
Or maybe the equation results in a discontinuous graph, like so:
It seems as though the answer must be somewhere in span 4, but no matter how hard we search there, we'll never find it.…
Added by David Rutten at 1:05pm on September 7, 2015
fused now because I'd like to use brute-force instead of genetic/swarm algorithms. I am worried about fitness landscape and local extremes with my variables. On the other hand Colibri Iterator would compute millions of combinations in my case.
I'd like to use Colibri brute force+Design Explorer to explore different solutions. I am not sure how many combinations there would be but I assume that up to 10^7. That is a lot of data to compute and look through. Probably impossible to do.
I looked into 3rd example on Design Explorer page (the building one) which is pretty close to what i want to do. As far as i understand the graph, there are 9 variables. Each has different domain. My calculation for number of combinations (going from left to right - from 'elevator width' to 'solid wall amount') is 3*5*5*10*6*4*10*50. That is 72.000.000 combinations. On design explorer page there are around 250 solutions. I probably do not understand something or there is a way to filter data somehow.
My questions are - Is it even possible for Colibri Iterator to go through such huge data? Have you got any tips how to filter that data so that only chosen solutions are saved to *.csv file? Maybe I am missing something and there is another way used for design explorer examples? Any tips or tricks? :)
Thank you for your time and help,
Have a nice weekend…
urther the design process, allowing for much greater speed with working on complicated and repeating forms. Grasshopper creates parametric modeling to automate production, new forms, shapes, patterns and your own interfaces. It is only possible with the algorithmic modeling. No knowledge of programming or scripting required, but still allows designers to build form generators from the simple to the awe-inspiring designs. Class covers List management and introduce Date Trees. We will work on jewelry projects (not all) however design professionals from all industries can be benefited from the class. Basic Rhino knowledge is required. Please bring your laptop. Grasshopper is in Rhino 6. For Rhino 5 latest Grasshopper can be dowloaded from here. https://www.rhino3d.com/download/grasshopper/1.0/wip/rc Rhino 5 for Mac comes with Grasshopper. Instructor: Akiyo Matsuoka. Authorized Rhino Trainer, adjunct faculty at Fashion Institute of Technology in NYC.
Registration:
https://www.akiyomatsuoka.com/rhino-training-schedule
Location: Midtown Manhattan Manhattan, NY None United States…
s, each made from two Nurbs curves, each with different surface properties.
Curves A1 and A2 have 2 control points:
startpoint and endpoint
Curves B1 and B2 on the other hand were drawn with 6 control points each.
What's more, those point's aren't equally distanced from one another.
The lofts inherit the position of control points of the profile curves.
The distribution of control points in the loft direction is uniform.
So no suprise here:
You can think of Nurbs curves as rubber bands and of Nurbs surfaces as rubber sheets. The areas with less control points would correspond to streched rubber.
Now lets imagine you take an A4 piece of rubber, lay in on a table and draw equally distanced lines on it. When you strech it ununiformally - the distances won't stay equal anymore.
Returning to your first post:
The Divide Surface component operates on u,v values which you can imagine as dimensions of the rubber sheet in relaxed state.
So the result you got was indeed an equaly divided surface, only in the so called "parameter space" of the surface, which doesn't always correspond to the xyz space.
There are methods to divide curves and surfaces in equal distances in the way you want it. For starters check out the Evaluate Lenght component.
I think that's enough teory for today. Have fun!
JJ…
visions). from what i can see from the image, this is generally a box form, with definable surfaces. I would start by creating an array of parallel lines along the length of the form.. maybe about 8 with an equal offset. what you can do with this is duplicate the lines then move this new set above the old set to give the form a general depth.
grab all of the lines and run a "rebuild" command, what you are doing with this is adding more points to the lines... lines are defined by two points you probably want to add about 6 to each line, this will allow you to have more control over what the line is doing, don’t add to many though because then the line becomes uncontrollable.
Now with the original set (the lower one) you can use the "points on" command found under the "Main 2" palette to access the points that define the geometry of the curve. manipulate these points for each curve into the form of the shape that you want... get used to this "points on" tool its extremely useful.
lastly grab all the lines in the lower set of line and run the "loft" command what this will do is create surface from the selected lines. then do the same for the top set.
just remember that in nurbs modeling al la this... that points define lines and lines define surfaces... and i guess you can also say that surfaces define polysurfaces.
good luck…