tion) which would amount to -at a rough guess based on your image- about 1000 genes. I'm not sure how well Galapagos will be able to deal with such an amount (ironically the biggest problem will probably be the interface, not the solver algorithm).
The main theoretical problem I see is the fitness function definition for this. It won't be good enough to count intersections and minimize those. Reason being is that the number of intersections is an integer (it doesn't vary smoothly) and as such there's no 'selection pressure' towards better solutions. If you start with a setup like this:
it would have a 'fitness' of 2. We'd like to move these two shapes apart but even if we move them a large distance in the correct direction, we still have a fitness of 2:
It seems like a more useful metric would be the area of the overlap, at least then when leaves move apart, the fitness value will change, which allows the algorithm to make an informed decision.
Computing curve region intersections and areas will be a very intense step, making the whole process even slower than it already is. If I had to do this, I'd first try and tackle this using pixels, as computers are very good at dealing quickly with them. You could draw an image of all the shapes, drawing them each in a transparent black. Then, when two shapes overlap, the resulting pixel will be darker than the fill. If three shapes overlap it will be darker still. Then, once you've created the image, you could all the pixels and compute a value based on how many dark pixels there are.
This can probably be done in a reasonably low resolution, but you'd need to write some code to create and analyse the images.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
ere is often a bit of a misconception about the differences between 'mass-spring' models and FEA. Although the method of solving is different, as I do not form a global stiffness matrix, the elements themselves and the calculation of stresses in them can be effectively the same, and based on standard real material properties and sections.
Using nodes with only 3 degrees of freedom as Kangaroo does currently, axial stresses can be calculated (a spring being a very simple finite element), and bending without torsion (following the approach described in this paper), accounting for Young's modulus and sectional area. I had been focused for a while on more geometrical optimization, but recently have been looking again at clarifying the real world units and numerical values used by Kangaroo for structural purposes.
Several other ways of modelling beam/plate/volume type elements using combinations of springs are commonly used in game/animation physics, and these can indeed be difficult to link to accurate quantitative behaviour, which has perhaps helped form the impression of mass-spring models as non accurate, but it need not be so.
The approach can also be extended to 6dof nodes, in which case it becomes possible to include torsion, anisotropic bending etc, and to base these on more standard engineering formulations for beams and other elements.
In fact I've recently worked on some software together with Gennaro Senatore and Charlie Banthorpe for Expedition Workshed that implements such 6dof elements together with large displacements, realtime interaction, and options to output bending moment/shear/torsion graphically. This is browser based (you can try it here), rather than Grasshopper but I'm currently working on bringing the same approach into Kangaroo.
Maintaining interactive speeds while avoiding numerical instabilities does pose its challenges with these methods, and for many conventional structures where the displacements are small and interaction is less important I think conventional FEA will continue to be more efficient for some time, but I do believe the approaches will eventually converge.
Thinking about it - although they are very useful techniques, continuum mechanics and infinitesimal displacements are both just useful abstractions, and no less 'artificial' than mass-spring models (and I think infinitesimal displacements are particularly counter-intuitive - real things have to move to generate stresses).
Anyway, I'm always very interested in exploring collaborations and sharing of ideas about these approaches, and would love to hear any more thoughts from the Karamba team about this...
best,
Daniel…
out of the practice walls.
Anyway get a hint: Hard top-bottom clustering is used (process is STOPPED to the fist level of clustering for clarity: meaning flat clustering):
Cubes are abstarct (spaces, say: "rooms") centroids:
Then clusters are made; Prox K-Means is used here (other methods also available). Cyans are the abstract representation of the flat clustering (for clarity). The decision upon the number of clusters is quite complex and is based on criteria that are not used here (adjacency matrices et all):
Then this:
And finally that:
Obviously the real thing works recursively (kinda like a fractal algo) on the clusters and stops if the predefined number of nodes is reached (say 2 or 3). Then the "flat" red connector shown connects actually (bottom to top) child to child AND child to parent clusters etc etc.
BTW: GH has a component (called quadTree) that - I guess - works "kinda" like a K-Means clustering algo but the fact that GH is a-cyclic by nature ... means that you should use Anemone - if the above are attempted via the component way (not my way anyway).
more soon
…
, but without modifying the lists order:
suposing i have a structure list
(Paths = 75)
{0} (N = 51)
{2} (N = 51)
{3} (N = 51)
{4} (N = 51) ...............
I`m trying to apply to that list of values the statement:
if x>y then x=0
if x<y then x=x/z
but i need the list structure to keep exactly the same.
I`d be very thankful for any ideas on how to approach this problem.
Many thanks,
Roberto
…
er from moltiple curves the represent the area of floor plans,
but the problem is, I cant fine a way to intelligently divide the curves - responsively to the radiation analysis color (for example - that yelow area on of the building will have more division on each floor plan)
do you have any ideas on how to do that?
i tried to use attractors be failed miserably..
THANKS,
Limor.…
write a definition that represents the following surface that I have created out of paper.
This is essentially a squared surface subdivided into triangular segments. For that reason I was hoping I could use Zubin's example about triangles in chapter 3 of his book.
I'm sure, you guys know these kind of folding technique, but to clarify the pattern of the surface, here's a quick diagram:
My approach was to use the point cloud out of Zubani's example and select points with the Cull Nth component according to the pattern shown in the diagram. These points I would then offset with a z-vector component while keeping the distance between the points fixed.
However, after spending now several days trying to figure this out, I definitely ran into a wall..
As I see it, the example generates multiple points for the same coordinates, meaning there are occasions where there 6 points on top of each other.
Further, the Cull Nth component doesn't work exactly as I've hoped, the problem lies in the transition from one row to another..
I was also thinking instead of creating a series of points and then trying to filter specific points out to create (a) the surfaces and (b) the offset, maybe I should start creating these separate lists from the beginning?
Or, instead of point cloud series, using a surface and the sDivide component?
As you see, I am pretty confused/lost in the problem... any help would be greatly appreciated!
Thanks!
…
a competition this year where we will be constructing the complete house.
http://www.heliomet.org/
The house has always had the notion of large self shading screen on its south facade. However the self shading aspect of this had never really been developed and it was only ever really an extruded pretty dia-grid pattern.
Ultimately we imagine the perforations to be milled out of foam which could then be laminated in a surf board kind of fashion.
I have done some work with optimization through geco and galapagos before, so I imagined I could do something similar to optimise the openings for maximum radiation in winter/minimum in summer to the internal space.
Because of the nature of the pattern and large number of perforations though, each time galapagos will try a different iteration, it has to trim all the openings on both faces of the screen, or boolean difference for it to be meshed and exported. Whicever way i do it, it just seems too heavy a process for testing iterations.
I've also thought about maybe optimising a single opening, or set of openings, and then trying to combine them back into an overall.
I have attached the grasshopper file I was messing around with, where i was predominantly just looking at a dia-grid on front on back face of my 'screen' with a number variables to manipulate them. Lofting between the corresponding shapes gives some idea of a pattern with more '3 dimensionality' and interest. As I said, once i started trying to set this up ith geco/galapagos to look at shading optimisation it was way too heavy.
I would just be interested in anyones take/experience in how to approach this self shading project in grasshopper, to get me started on a good path as I'm sure there are better ways i dont know of.
Thanks
Arrash
…
try to optimise the form maybe will use Rhino Phyton... I will try to continue this script to pass trough potential method, which will modify the hull shape, and get the optimum shape. For now there is a problem with that Open Foam works only on linux and I am looking for other free alternative for CFD.. Just to investigate the resistance fast, so to deform and modify the shape... Later with the deformed shape will do 3 passes with deform, compare, deform with fast potential solver. And the last two shapes which I liked could pass trough viscous solver so I can compare the difference, cost, performance, production. Does somebody know such free potential code for windows I could try? After getting free CFD code. IDEA: The question will be how to connect them (the outputs of CFD with deformations in Rhino) so taking PressureXYZ vector fields from CFD, in table with coordinates for each point and amount of deformation in each direction putting them in Rhino (in scalar form in table with position of the control point amount of deformation and direction. So using Rhino nudge comands to deform the body. Deforming the hull using the control points, or control curves with soft body deformation. Maybe there will be a high dense cage where is the higesht point in the table and soft deforming proportionally the rest points. There sould be two limiting lines (which user will specify in top view) up to where the deformation can be done, for the cylindrical part. So the curvature should smooth with g2-g3 curvature up to this meeting points of optimised stern, bow with the cylindrical left alone part. At the end there will be optimised hull form for lowest Pressure = Resistance in some constrains (limiting lines for the untouched cylindrical part for example) for current LBD and displacement. With possibility to get linesplan.. Later time begining shape can be connected with Tables with emperical or statistical formulas from the rules for specific ship. If somebody wants to join this quest is more than welcome
Here is an example picutre which will show me where do dig, and where to put material for the deformation of the body: …
uts an instance of a class type, which I refer to as Class Instance A for this discussion post.
Component B, has a for-loop, through which it does a few things, and makes "n" number of variations (in this case, just 3) of Class Instance A. Simplified/generalized structure of Component B is as follows:
a=[]
for i in range (n):
.....variation = DoSomething (StartShape)
.....a.append(variation)
.....for obj in ghenv.Component.OnPingDocument().Objects:
..........if obj.Name == "MakeAssembly": ...............obj.ExpireSolution(False)
I am not sure if I am using the ExpireSolution method correctly here. I also have found this (Grasshopper.Instances.ActiveCanvas.Document.NewSolution(False)) from some other discussions, but it doesn't seem to solve this problem. Or maybe I have the placement of ExpireSolution or NewSolution wrong. Upon pressing F6 then F5, Component B keeps updating Class Instance A, instead of "resetting" it to its original condition. For-loop in Component B must have the original Class Instance A every time, in order for it to spit out variations. I need to find a way to expire the solution for Component A only, at the end of each For-loop. Eventually, I need it to loop 100+ times, so manually pressing F5 is not really an option... Below is an image of what should happen:
What is the best way to tackle this problem (in either Grasshopper-Python or IronPython), so that the same original Class Instance A is fed in every time the loop is run in Component B?
Thank you! …
r ideal surface so they add up where lots of points or lines cluster and create rather unintuitive bulges form a 3D modeler's perspective, here done with Millipede's Geometry Wrapper:
I've learned to do marching tetrahedra or cubes in Python to create the surface as needed from a implicit ( f(x,y,z) = 0 ) mathematical equation based on raw trigonometry but am not yet sure how to define an equation for Rhino user created input items like this or find a way to make marching cubes accept such input let alone one that doesn't treat each geometry item as an electric charge with so little decay.
This would afford an old school "organic" modeling paradigm that T-Splines replaced, but the T-Spines pipe command can't do nearby lines right either, which just makes overlapping junk. Metaballs and lines are not as elegant in that there is a real "dumb clay" aspect to the result that affords little natural structure beyond just smoothing, but still, if it works at all that beats T-Splines, and then I can feed the crude mesh result into Kangaroo MeshMachine to afford surface tension relaxation that will add elegant form to it.
I need both quick hacks and some help on how to deeply approach the mathematics of the required isosurface, now that I can think in Python better than ever.
I got a hint the other day here, about using a different power of fall-off but am not sure how to do the overall task mathematically:
"and just as with point based potentials, one can use different power laws for the distance, function, resulting it different amounts of rounding at the junctions. Below is with a 1/d^3 law for comparision with the above 1/d" - Daniel Piker
http://www.grasshopper3d.com/forum/topics/meshes?commentId=2985220%3AComment%3A1324050
He also included this link about bulging:
http://paulbourke.net/geometry/implicitsurf/
Am I supposed to create an actual implicit equation for my assigned points and lines and use that with marching cubes to surface it? If so, how do I define that equation, at all, and then how to control bulging too?
…