The resolution of the simulation (number of segments) affects the results. Increasing the number of segments (e.g., from 10 to 20) causes the rope to fall deeper under the same elastic properties and gravity. This is because each segment can extend independently, and with more segments, there are more points where gravity can be applied. In real life, a continuous material doesn't segment, so this behavior is not physically accurate. For realistic simulations, you must use realistic parameters: work in meters (the standard unit for forces), set gravity to -9.81, and use realistic elastic strengths (which can range from 10,000 to 200,000+). However, realistic simulations become extremely slow.
深掘り
前提条件
- データがありません。
次のステップ
- データがありません。
深掘り
Grasshopper Ephemeral Architecture - Session 3インデックス作成:
This video course is meant to cover all the basic aspects of designing an ephemeral architecture project. Session 3 - Compression (Catenary) Structures, basic optimization and production Video course Grasshopper definitions: - Session 1, https://mega.nz/#!XllHTaoQ!3BV9XQgGfGG6qxBHOTJCMyUmv-FaodNLb3h9vhqSe78 - Session 2, https://mega.nz/#!LssxBKwC!mf7qT4C48PrLkPRWZFCkpfrxyMe4WuFOyrcHQXYQ-Es
in the last session of this ephemeral architectural video course we are going to talk about catenary structure or compression structures these are mainly used for for building or designing and building architectural female pavilions you might have seen many during last year's but they are all based on one basic principle which was already used by for example the architect Antoni gaudí for the designer well basically many of his masterpieces so let's first of all let's let's understand what the catenary curve many people when when they see this kind of curve they think about a parabola curve but actually this is not a parabola this is exactly a catenary which is a different type of curve it is called like this because it basically takes the shape of a chain falling under its own it's its own weight being anchored at the endpoints we can easily easily see that this catenary curve is not a parabola just doing a very quick drawing I can use a range component with a graph mapper the graph mapper also has a parabola graphic here so I can create a series of of points where the X is basically defined by the range values here and then well what I'm going to do here is switch to the front viewport because catenary curves normally are generated in a vertical plane because they fall due to gravity okay so we must consider this Z but direction if you want to see these describes in action so I will construct this point using the range as x-coordinate and the graph mapper results Pence's Z coordinates so you can see that this is actually a parabola I will also use an interpolate curve in order to see this curve ok so now I have this curve here I will calculate the end points and then I would use these points to build a to construct a catenary curve you see that there is also a standard grasshopper function you can find it in a curve spline and catenary here we need the start point and end point we already have them and then this function here asked for being length and it says it should be larger than the distance ay B of course if you want this this curve to bend due to gravity well the length of the curve must be larger than the distance between its start point and end point else we will get a straight segment okay so what I'm going to do right now is define the length using a particular method I'm going to calculate the distance between point a and point B and I am going to multiply this distance here by a length factor which would be basically between 1 and let's say 5 okay so if I multiply the distance by 1 I will get exactly the same value of the distance so this catenary curve will result in a straight segment okay but if I start to increase this you see that the catenary starts to fall due to the increment in its length okay so take a look at what happens when this catenary start falling and reaching the same height or the same depth of this parabola curve okay so you can see that the shape of the catenary looks like a little more fat than the parabola okay so as you can see this is there is a slight difference between these two curves okay so don't don't make confusion between the two because the catenary is somehow more important actually in my whole life I think I have never sorry I have never used a parabola for for my drawings okay so this is how a cataract curve works now why is the catenary so important because if we take a look well let's hide the parabola and the endpoints okay so if we take a look at this curve here actually as this the shape of the curve is determined only by the weight of the curve itself so it's only affected by gravity okay what happens to this curve why this the shape is this shape is so important because each particle of the curve is actually resisting to to falling because of the tension that's being generated all along P be the path on the curve so it means basically that if we take this curve here and flip it so if I take the catenary and say that gravity instead of being a vector like zero zero minus one which which is basically vertically oriented downward we can take a vector like zero comma zero comma one so it it always means vertically but this time gravity will be like flipped so the curve will fall upwards now this is something that that of course you cannot do in in real world that's why for example architect Antoni gaudí was using mirrors on the on the floor in order to see what the structure of his building would look like in once once built but with a computer we can simply reverse the gravity vector so the the object starts to fall upward and that's what's happening here with this with this curve now if the curve falls down and it's subject to pure tension when it folds up it will be subject to pure compression so it means that all the particles of these curves are actually compressed okay so it means that in this case for example this catenary is only falling because of its weight or self weight but imagine that if we apply a uniform load over the the curve the catenary curve will fall a little more it means that if you flip it and you apply the same load that you have applied for having the catenary falling down the catenary structure could resist exactly the same load in in real life and this is exactly what we are going to to do in our in our examples okay now the problem is that mathematically this is basically pretty straightforward each particle of the curve is is such a to compression in this case but if you think about computer calculation saying that each particle of this line is subject to two compression it means that in order to calculate the stress inside this this curve which should perform infinite an infinite amount of calculation because there is an infinite amount of points along this line okay so that's why we use a plugin in this in this third section which is kangaroo and we simulate this physical behavior with some let's say simplification of the system okay so first of all let's build the first system so basically it would be a catchment curve you see that there are a bunch of pre-made scripts here I will as always start from scratch so that you will follow exactly all the process okay so let's create a real category not like this one which is basically a static curve I want to create a catenary that actually reacts to some physical actions okay so in order to create a catenary there is a particular matter that we must follow in in in in grasshopper and kangaroo so I will create two point container and set one point each let me deactivate grid snap and set one point also for the second container and therefore I will create a line okay so now this line is one is made up of one single segment okay and the abstraction or simplification that we are going to do in our in our kangaroo simulation is this straight segments segments are basically Springs okay and and they are idea of Springs I don't know if you remember something about your your studies in physics eventually at university but in an ideal spring is a an element that can only extend or or contract okay it cannot bend so basically this ideal spring can only stretch okay now if we consider this line a made of one single segment and this segment is anchored at the endpoints it means that even if we apply a vertical load along this segment this line will not be able to bend because it would be one single ideal spring okay so in order to have this line falling down according to to the action of gravity force we must simulate or we must let's say change the nature of this segment and convert it into a chain of segments so a chain of Springs okay so in order to do this I'm going to use the shatter common which takes a line and splits it into segments according to the value of a parameter okay now this has to deal with parametric representation of of a NURBS geometry I will simply take a range component which is putting a series of progressive number between zero and one with a regular step and I will use it in order to split this this curve now remember always that when you work with parametric representation on NURBS geometry even if some components automatically recognize this this situation I always recommend that you repair matter as the geometry in order for these components to work properly okay so repair motorized means that it doesn't matter the what is the geometrical length or geometrical dimension of the NURBS geometry when you re parameterize it this this span will measure exactly one so it means basically that the parameter will flow from zero which is the value for the start point and one which is the body for the end point and therefore if we if we define these parameters T using a range the range will output a zero zero one zero two zero three and so on so we will be splitting this line into ten segments which have all the same length okay now the only problem with shatter is that the shatter doesn't visualize the division point okay so you will only get segments here we can eventually visualize this using a dispatch command and send half segments into a and half segments into B they are not yet visible because dispatch as a preview that that includes both a and B but if I take a curve container now you can see that these are the out segments and these are the even segments so 5 and 5 so shatter is working properly okay so these are the ten segments that will be representing our our rope let's call it so remember that we are working in the XZ plane because we are going to use gravity right now so these segments here must be converted into ideal Springs okay and must be passed to kangaroo four four calculation now normally I would recommend you start approaching physical simulation with kangaroo using the older version of kangaroo kangaroo exists now in introversion the most recent one is kangaroo - which is this one but there is also the kangaroo the old kangaroo which is not kangaroo one is kangaroo 0.99 don't don't ask me why but I would recommend that you start working with kangaroo using the $0.99 version because from a let's say from from the learner point of view is I would say he is much detailed ok kangaroo 2 is somehow a simplification from my point of view of the older version ok but anyway I will I will simply skip this this in my opinion necessary step and I will simply go straight to a kangaroo - in order for you to don't have eventually to install the other version and so on just open grasshopper especially if you're working with Rhino 6 which include grasshopper and kangaroo 2 is already included in in in grasshopper for Rhino 6 so you will have everything set for your kangaroo workflow ok so in this case what we need to do is convert these segments into Springs now there are no Springs actually in kangaroo tube which is the main difference between kangaroo to and kangaroo 1 you won't find Springs here but you will find goals angles are divided into categories that corresponds either to geometry or to specific boundary conditions and and forces and so on so in this case these are lines and we are going to go to line and basically a spring is a strength that affects the length of the line ok so the equivalent of the old kangaroo 0 99 Springs is the length line come in kangaroo - okay so I will say that all these segments here are the lines for which we want to specify the physical properties so this is the component that converts the segments into Springs okay also one condition that we must sure now is that this rope is going to be anchored in the start in endpoint and these are a different type of geometry of course they are points so we are going into the goals point group and we will find the anchor component and anger only asks for what are the points that you want to rank and they are first and second point okay so we have anchor points set length line which is elastic property already set in in this length line component and we miss gravity okay so we must apply gravity to this line now Springs or elastic force is applied to segments while gravity is a force that's applied to points and now we need to apply to gravity to - all all along the line okay but we don't have actually points along the line we only have segments okay so we need points and what I am going to do I am going to create to use an even weight curve where I'm going to evaluate this curve in at certain parameters so once again as with shatter I am going to use a parametric representation of NURBS line so I'm going to rip oh no matter eyes this curve and I'm going to use the exactly the same range that I have here so you see that now we have points along this line okay and I will use these points here in order to apply gravity to them and gravity is a force that's applied exactly to points so we will find it in two goals point once again and it's called load okay so a load asks for the point where you want to apply gravity and it's applied to all these points here and it also has an another input which is important which is F me which is force vector and force vector as you can see 0 0 1 so it's vertical because it's only component non no component is 1 but it's positive 1 so it means that this gravity will be oriented oriented upward in our coordinate system which is not actually a problem for us because we want to have catenary structures falling let's say it's o upwards but in this case what I'm going to do I'm going to simulate this rope hanging from the endpoints so I want to recover with a real-life situation where a vertical gravity is oriented downwards so I will take a unit Z vector and I would say that it's factor is minus 1 and so this will be 0 0 minus 1 ok so we also have gravity and then one will hide the points here I will also hide the initial step and an end point I do recommend that when you work with kangaroo there is no need to visualize the original geometry it might be confusing because as soon as we implement kangaroo simulation you will see that all the geometry will will be shown by the kangaroo components ok so now we need to calculate this physical simulation and so we go into the main group in kangaroo and we grab one of the solvers I do recommend normally that you use the bouncy solver because bump bouncy solver is a solver that shows you all the iterations of of your kangaroo simulation ok and one recommendation one important recommendation before connecting anything to the gold objects gold objects are any force that's been used in your definition ok so all these three components would be connected into the goal objects input before doing this I do recommend that you do this take a boolean toggle I do recommend that you also use the false false start toggle if you don't have it I will share the link for downloading this plug-in which is quite important in in the description of this video and set it to false and plug it into the on input of your pansy solver this means that the simulation won't start until you change this button to true okay so now I will start plugging these components here into the gold objects input gold objects ask for three data sets so there is no need to flatten or graft anything here you just simply plug any of the goals that you have been implementing into the gold objects okay and also one thing that you might want to do is use a button here for resetting the simulation okay so there are basically there are these two objects here which are controllers general controllers for your simulation and here you have the goals set into the gold colleges okay so once you have this simulation set I would only always recommend that you reset simulation before executing it and then you switch this button this toggle to true and you see that your system start to fall down now I won't go too deep into these elastic forces simulation there are so many things to command and end up sir but just one one one observation which is one of the main questions that every new users new Kangol users ask is is this is this one so we have taken a line and divided this line into ten springs okay and we see that this line falls down and reaches basically this height okay now let's stop the simulation reset it and what I'm going to do I'm going to increase the amount of division for this line so I'm going to change the step of this range component which is actually set to one to ten I'm going to set it this slider to twenty okay so we will have you see that there is some weird representation here that this is a typical situation provoked by the fact that the button the reset is not being hit so hit this button and you see that everything comes back to normal okay so now we have much more Springs here each spring can extend once we apply gravity to this rope and gravity is being applied to more points okay so once we release the simulation you see that this the same rope with the same elastic property and the same gravity applied is falling down deeper than the previous example now these should not be possible in in real life let's say that that we have a continuous material so there is no segmentation okay so what we are doing here is creating a simulation that basically depends on the resolution of the system this is not acceptable okay but also keep in mind that this is two to one particular situation and this situation is that each code that we have been using has a strength okay now take a look at this we have anchor points that must remain fixed during the simulation okay and their strength is set by default to ten thousand okay while length line which is the elastic force for our rope is set to ten and gravity is set to minus one now - 110 ten thousand what okay because normally we should be working with real strength or realistic strength okay so few consideration I repeat a won't go too deep in this topic but it's very important that you understand that the simulation that we are running is proportional to the real-life scenario okay so you can think about this simulation as as a general behavior that would happen to this body under certain circumstances of course this body eventually will not deform like this but its deformation would be proportional according to to a scale factor if compared to the visualization that we are getting here now how can we get to a realistic simulation when if we want realistic simulation we must work with realistic parameters okay so first of all if you are drawing a and architectural pavilion you should work eventually in in meters not because it is the standard unit for drawing architectural project you can work with whatever unit you you feel more comfortable meters centimeters millimeters and so on but because forces are normally expressed in the metric system using meters as length unit okay so if you want to use kangaroo for a physically correct simulation you must work with meters in in in Rhino okay and if you want working meters it means that this rope is actually measuring one two three four five six and a half meter more or less okay so once you understand this you are capable of creating a well proportioned architectural body here in by now now let's switch to grasshopper gravity is not - one where it is - 9.81 eventually okay so this parameter here this value here must be set to the proper value for gravity okay but more important thing is elastic force okay so basically elastic force takes into account what material we are using in our simulation okay basically all material sorry a stick okay and if you want to know what's the elastic force of a specific material you can google it for example and you will find that each material elastic property depends on one value one coefficient which is called the young models okay so you must find the young models and must find the formula for converting the young models into the elastic strength for this component now the problem is that strength for a realistic material normally ranges between something like ten thousand for example and can reach very high values like 200,000 300,000 and so on okay and why we are not going to do this because in that case the simulation becomes extremely slow okay so yes it is possible to perform a really realistic simulation physical simulation with a kangaroo keeping taking into account real properties for materials but the simulation becomes extremely slow and of course if you set the elastic strength to 200 thousand for example you also must adjust the strength of the Anchor Point else the elastic property will be so strong that anchor points will start to move around okay so in in my website you will find also a grasshopper definition for using real-life strength elastic strength for a given material there is basically the definition works already for something like 20 different materials and I will share the link to this to this post in the description of this of this video okay but anyway behind this simulation you see how many theory you must take into account I will leave this to leave this 210 and I will reset and run the simulation again so this is the reshape that we get using kangaroo applied to a straight segment okay so the difference between these and the previous catenary curve is that this is a static static curve which shape only depends on the length that we specified while here the the catenary shape depends on the elastic properties of the material that we are using and on the load that we are applying okay so having said that I will stop simulation reset it turn off the line and just group and turn off all this definition so you see that this is actually what's happening here it's absolutely the same thing okay with some more explanation now of course we want to work with three-dimensional objects because a familiar pavilion or or compression structure our three-dimensional object but first we must understand another important concept regarding kangaroo okay so what I'm going to do now I'm going to create a different system made up of linear segments so what I'm going to do I'm going to draw here in Rhino a set of line like this and this and from midpoint to midpoint so what I want to do I want the three ropes to fall upward this time and I want the system to be anchored to the to the ground just in the endpoints of the first line and the second line so I want this endpoint this endpoint and these and these to be anchor point while I want the end points of this middle line to be anchored to the midpoint of the first and the second curve so we should come up with something like let's say that this is the first line here this is the this is the third line okay so what I want to achieve is this line falling upward this falling upward and this one should do something like this okay so let's import this line I will use a curve container and I will take first of all let's keep this line separated for now then we'll eventually we would see if we can easily simplify this this definition by grouping into data set so what I'm going to do you see that normally especially when I start working with a new system I tend to keep components organized according to the distribution of geometry distribution in the Rhino scene okay just in order to recognize the element more quickly okay so basically what we need to do is to convert these three ropes into three elastic cords okay so what I'm going to do is exactly the same thing that we already did a while ago so I'm going to shatter this line repair matter eyes and use the range okay so now we have our segments here and I'm going to use one single range for all the curves so I'm going to also repeat this and I'm going to repeat this so we have the three sets of segments for our three initial curves okay and I want to convert all of these three series of segments into elastic segments so I go into coastline take length line now I don't care about differentiated elastic properties of the three ropes I will just convert all of them into the same using the same elastic properties okay so there will be basically three ropes of the same material okay so the elastic part is is already set now we need to apply gravity so it's a gold point load we need points along this line okay so I will take a evaluate curve where I take these lines here one two and three remember to repair a matter eyes because this is a parametric component and I'm going to use the same shatter to convert or to interpolate the points the evaluation point of this line and I'm going to apply gravity to all of them now I'm I'm one change in this case the FV direction I want these ropes to fall upward so we have elastic property gravity we only need the anchor points so I would take the end points comment for line on the left and line on the right and I want to convert all these points here into anchor point so start and end with all be anchor points for our system let me internalize data so I can get rid of these three lines in in Rhino and now we only means the kangaroo bounces over with the toggle or false start toggle and the button set into the reset input now we start plugging in the anchor points you see that as soon as you plug forces on call objects inside the bouncy solver you start seeing the corresponding geometry okay the springs and gravity and then we reset and run the simulation and you see that we already have our catenary system falling upward now let's stop the simulation and reset it okay and I want I will recover let me turn off the preview of this undo the delete of this three object here what I'm going to do I'm going to delete the centerline because I want a new center line or new middle line study from near here the first curve and near the second curve okay and so I will have the first line will stay the same the third one also but the second the middle line will change set one curve to this new curve okay now I mean internalize this and I delete them so let's see what happens now to this system when we reset the simulation okay like this and we run it let me move forward and whoops you see that the third line is falling upward and keeps on falling upward because there is nothing to retain its fall okay now why is this happening this is happening because the endpoints of this center line here are touching the first and third line but not in a particle okay so if we take a look at this you see that the endpoint of this middle line is touching the third line along one of the ideal Springs now objects in kangaroo are kept together only if they connect with correspondence to one of the particles and particles are these points here the points that you see when you turn on the preview of the bouncy solver these points are kangaroo particles and objects must connect in particles if you want them to stay together okay so let me recover the initial configuration why the initial configuration was working because this centre line connects to the midpoint of the first end of the third line and the midpoint corresponds to a particle as each of the of this lines here is being divided into four into ten segments so five segments on one side and five on the other side and we have one particle on in the midpoint of each of these lines okay so if I set one curve and take this once again and reset in this case the system is kept together because the midline is touching the midpoint of the first and third line of course this is not guaranteed that the system will work forever because if we take the range which is basically defining the amount of segments the amount of division for this line and set this range to let's say an 11 slider like this and we reset now you see that we have 11 segments and 11 segments for the sidelines so the mid line is touching the first line and the third one along one idea of spring so there is no connection in this particle or in this particle okay so even if the line is touching the midpoint and I'd fire the simulation it will simply fly away okay so pay attention to when you set up in your kangaroo system if in this case for example as we are using the midpoint this the number of steps cannot be old it must be even numbers so I go into this slider here and say you can only give me even numbers okay so now I can increase the resolution of my system it doesn't matter how much I increase that value eventually I will have a proportional simulation which will have more elasticity as you can see but the system will be kept together because all the elements join connect in one particle okay so basically you can build any system however complex it might be the important thing is pay attention to the connection between the elements okay so let's reset these I will internalize once again this main line here of course this definition can be more elegant instead of using a three curve container we could also use just one and so on but this is just for understanding how kangaroo works okay so let me organize things a little and let me group and disable this this definition so now I will eventually change the color of these groups because it's like if they are some generic initial consideration okay so let's give them a yellow color like this and now let's move forward we can get rid of these lines and let's switch to a three-dimensional stack real 3-dimensional structure made up of surfaces now being behavior and theory is absolutely identical okay the only difference the only thing that we must take into account is that is that kangaroo cannot work with NURBS surfaces okay why because NURBS surfaces are at mathematical objects they are continuous object so one NURBS surface is made up of infinite by an infinite amount of points of particles it's like considering a continuous catenary curve or a catenary curve made up of a discrete number of segments so s for the NURBS curve where we had to shatter the curve and work with a finite set of segments when we are working with three-dimensional object instead of working with NURBS surfaces we must work with meshes okay so of course the the speed with which kangaroo can calculate the deformation and simulation of one mesh depends on on mesh resolution so the higher resolution the slower will be kangaroo computation okay so initially what I would do is work with a mesh a low resolution mesh image in order to have kangaroo performing all its calculation very quickly and then eventually we will increase the resolution so to have a better result okay so let's create a very simple system for now I will I will use well actually even in this case I would recommend that you install the old version of kangaroo not only because of the behavior of forces and classification of forces but also because there are some utilities that you might want to use in your kangaroo workflow now I won't go deep into this this subject but for example one thing that you might want to use in your workflow in order to simplify things a little speed up things a little is this utility here which is called quote divide lets takes a quadrilateral face of one mesh and divides it into for quadrilateral meshes okay so I'm going to use a different method because I'm not sure that you have kangaroo $0.99 installed okay but in case you do you might also try another solution taking a simple mesh and using the quad divide and see how it increases the resolution of of your mesh now I'm not sure you have it so what I'm going to do I'm going to create a plain surface I don't care about the science actually even if continuing to consider what we have said this should be measuring 20 by 20 meters okay even if I am working with millimeters but we are not taking into account real-life forces or real-life dimensions we are just experimenting a little with kangaroo so this plane surface will be my initial system kangaroo cannot work with this so I have to convert this using a mesh surface comment and now you see that I have a the mesh visible with its quad phases the amount of phases is determined by the UNB parameters so I can define the resolution of my mesh using a slider here and well couple of slider here so now I have a 400 polygons mesh so remember that it's very easy to reach higher resolutions in in using the mesh surface because these two values here are being multiplied by each other so 20 by 20 is already a mesh with 400 faces as you can see so in this moment I will lower these two five by five which is by the way the default bodies for human being in mesh surface so I have a 25 polygon mesh and they are quads okay so this is the mesh that we are going to use for our kangaroo simulation and basically it's like with lines or curves okay so what we are going to do now as this is a mesh is not a line anymore we are going to do God's mesh and we must give this mesh elastic properties and as there was a length line here we have the edge lengths for our mesh okay so I take this mesh and give it elastic properties using edge length okay also we must apply gravity to this mesh object now we don't have any points here and we should eventually extrapolate all the vertices of our mesh which is something that by the way it's it's possible because we can use the deconstruct mesh component and this gives access to all the vertices and we could eventually use the goals point load in order to apply gravity to this mesh but you can also go into goals mesh and if you want to apply gravity to the mesh instantly you can use the vertex loads so vertex laws apply equal vertical loads to all vertices of a mesh without having to let's say visualize them or or extrapolate them from the original mesh so this common does all the work for us okay and automatically you see that the strength is set to minus 0.1 it means that the gravity is oriented downward and as it should be but we don't want this object to fall down we want this to be an architectural female pavilion and with a compression structure so we want to value to be positive and so I would say that this is going to be plus 0.1 as you can see there is no need to define the orientation like the direction like like Z Z vector for example because this is a component that applies equal vertical loads so while point load uses a force vector that can have any orientation because it is defined by XY and z component the vertex load only works for vertical actions okay so vertical downwards or upwards last thing that we need are the anchor points now I'm going to use four vertices as anchor points even in in this case this utility was transferred to the new version of kangaroo you can go into the mesh group and look for mesh corners okay so mesh corners what this component do is take the mesh and according to an angle defined in in in radians by the way as always in grasshopper it isolates and detects what are the vertices the corners not diverted sorry the corners of the given mesh okay so once we have them we can simply convert them into anchor points using the Gould's point that we already know okay so that's it we have everything set I will turn the preview up for all of these things here and I will use the standard method of applying a false table toggle a reset button and then I will start to take corners like anchor points give the elastic net to the goal objects and apply gravity to the system okay so now when we reset and release the simulation this is what happens okay is exactly like with the lines we have simply converted the initial continuous surface into a discrete system of segments which is like shudder of course and then we have isolated the endpoints or mesh corners in this case and convert it into anchor point game private game elastic properties to to the mesh with the H length component and applied gravity is to all the vertices of this system using the birthday clothes so as you can see it's perfectly symmetrical to the curves case that we already analyzed one consideration you can see that even if we started with a mesh that was visualized exactly like a surface or a three-dimensional object with this volumetric shaded preview kangaroo is only considering the elastic elements which are the edges because as you can see this component is giving elastic properties to the edges not to the physical panel or physical polygons of the face of all the mesh okay so kangaroo doesn't care about the panels or the faces of the mansion it only cares about edges and vertices which are the particles by the way so if we want to visualize the physical or or the three-dimensional aspect of our mesh what we must do in kangaroo is going to the main group and use the show component so everything we want to be shown after kangaroo simulation must be passed to kangaroo using this show component and we want to see how the original mesh is affected by this simulation so I will take your original mesh plug it in to show component and connect the shut up show component to the Gould's objects as well and you can see that here is the mesh appearing once again okay so you see that now the mesh reacts to our deformation so once we have this this deformed system you see that the bouncy solver when you release the simulation has a face of running and then it says let's wait for it converge when you see converge it means that this component is no longer calculating okay so it has reached the equilibrium status between all the forces that are acting on the system and then you can simply switch the toggle to false the bouncer solver is is posting this moment so the output system is not changing anymore okay so what do we need here considering this this system if we want to to analyze the system eventually we can work with the edges and vertices and physical elements that we have considered during the simulation but if you want to build these for example we must also work with with the mesh panels or mesh polygons okay or the faces of our mesh object so all these things here are inside the output kangaroo output okay so you will you would see that there is a mixed set of objects here there is the mesh which is which was passed to the bouncy solver by a show component okay then there are some null objects then there are lines and these lines here are the springs okay so you can see that you have here form from five to 64 so they are basically 60 Springs you can see that if we take a mesh HS component here it is saying that we have 20 naked edges which are the exterior edges and we have 40 interior edges so 20 plus 40 is 60 and if you have the 60 springs that are considered during the simulation and that there are other null and so on okay so first thing we must do is get rid of the null object because anything that that you might want to do after the kangaroo simulation could be affected by the null objects so in order to do this I normally use a clear tree and I pass all these data here to the T which is the tree and here you can decide what what actions you want to perform normally the remove nodes is set to true by default okay so if we take a look at the output of this you see that there is no longer null objects there are no longer no objects inside this list of values okay so you have a mixed set here of data with meshes and lines normally if I want to work with with the edges or I want to work with the mesh what I do is take for example let's say that I want to work with a mesh I take a mesh container being a mesh container this component here can only recognize meshes so when we pass this mixed set of mesh null object and lines this thing here can only understand meshes so when it gets a mesh he will recognize the mesh when it gets a null we will understand now and when he gets a line it will convert this object in this line into a null as well so if I take this and plug it into this panel you see that there is the mesh the null object and all is not here all but the mesh so if I clean this data set here as a result I only get the clean data which is the mesh object okay and if I want to work with the edges or with the the springs or the lines I do the same I take a line container and pass this output to the green tree and I only get lines here so I get rid of the mesh end of the null object in one single step so whatever you want to use from the kangaroo output I do recommend that you take the correspondent little correspondent jump the container and use a clean tree in order to clean the data set okay so one two mesh here's the mesh one the lines here are the lines now where are the particles the particles are here they are the vertices okay so if we want to work with the plastic ones you just have to take a point continue if you want two things to be more clear and here and your your particles okay so if you do this you see that here are your particles moving during the simulation here are the lines as you can see and if I plug this here you can see this is the mesh okay so I have clean data coming from the output via this simple data manipulation with a clean three component okay let's stop the simulation and we have this object here now there are two problems well first of all let's see this the same definition with a more complex scenario okay so let's keep this here a while well actually there is no need to turn it off because we will be using exactly this one I'm just turning off the preview of the Planetree okay so what I'm going to do now I'm going to create a mesh system here in Rhino and I want to use it as to build a a compression structure or a catenary pavilion here in in grasshopper using kangaroo so what I'm going to do now I'm going into the mesh menu here and going to the polygon mesh primitives and take 3d face okay I will create a series of quad faces just remember when you create a mesh or a four vertices surface remember to click on the corners counterclockwise okay so in this case I will click lower left lower right upper upper right and upper left corner from since--since Rhino six you are able to create Pentagon's in in this in this interface but I do not recommend that you work with meshes with polygons with more than four sides or four edges and four vertices so just click enter right here and here you see that we have created a mesh polygon which is a quad now if I create this polygon like counterclockwise like this I get this object here if I create the same polygon clockwise so like here here here and here you see that this comes out orange why because in my interface orange represents the negative face of the surfaces and meshes okay so this was created content otherwise and and it's positive face it's positive normal is pointing upward and this is what this was created clockwise and it's positive normal Direction is pointing downwards of course if I take a look at this from the bottom you see that things are inverted okay but anyway I want to create meshes counterclockwise okay so just follow this this thing and I want to create other quads which are joined to this one okay so I will create other 3d faces and just keep in mind that if you want to snap to this vertex here this is a vertex this not an end okay so if you don't activate the vertex snap you cannot snap to this endpoint here so activate the vertex which are mesh vertices and then counterclockwise create another polygon and then another one and then another one always counterclockwise and you can add as many polygons as you please I will just stop right now okay now keep in mind that these are 3d faces mesh primitives so they are independent meshes so if I select all of these I will be selecting six different meshes even if they are touching each other along edges so I must select them and join them okay so six meshes joined into one open mesh now this is one single mesh and I will take a mesh container in grasshopper and right click and set one mesh and you can see that here we have our mesh imported okay I will internalize this data here and get rid of the original machine in Rhino now what I want to do I want to use this mesh as initial system instead of this one so what happens if I simply move all these cables here from the mesh surface to this mesh well I can drag all this cable with ctrl shift and dragging the cables to the new mesh okay and I can visualize the clean tree result reset the simulation and turn it on and you see that this subject here is behaving weirdly okay why we get this strange deformation why would we see this object is not bending because this mesh is made up of six faces okay while our initial plain surface was divided into a more dense network of polygons made up of 5x5 polygons they were all free to move they were only anchored at the four corners okay where are the anchor points of this mesh they are here these are all corners for the mesh corners therefore this whole object is anchored to the ground like here here here and all these vertices here are being kept anchored to the ground so there is almost no possibility for this object to to leave the ground and also there is no possibility for these edges to bend because they are just one single idea of spring each okay so in this case if we want to work with this I would recommend eventually that you actually let me recover the original okay this is the original situation what I'm going to do I'm going to take this mesh object and now yes I need to use the old kangaroo 0-99 mesh utility which is called quad divide okay of course there are other methods but I also want to give you an idea of the utility of these tools that were discontinued with kangaroo - okay so I will add this object to this group and I will take the original mesh and use the quad divide to do this each quad of the original mesh is being divided into quads using a five by five subdivision so each of these quads which were six is being divided into 25 quads and so we have one mesh with 150 polygons here quads so this is actually the mesh that we are going to use in our simulation I will take basically this cables here ctrl shift ctrl shift and drag them to the quad divide output ok and now let's take a look at what happens we this all we must reset the simulation of course as always and then run the simulation and you see that this thing is behaving properly right now okay so we have a much more interesting object from an architectural point of view and the whole object is actually working only with tension let's say it so because it is falling upward but you must imagine that this object once you freeze it like this it's capable of resisting to compression coming from the top okay so these are not artists these are these are catenary curves all in this pavilion is catenary okay so you can take these and eventually bake it as it is and you have this pavilion ready for being built and so this is the pavilion or the shape that we are going to use right now there are two problems that we must discuss in order to bring this object to to real life first of all the fact if we consider for example the original mesh the system before the deformation you see that all these faces here are quad polygons so they are basically made up of four sides and they are flat ok so this object here if you want to to produce these panels here is very simple you can simply cut them using whatever type of cut technology you might want to use okay but when you apply gravity into the subject and the subject start to fall down well all down up or deform in general okay there is no guarantee that these quads remain flat okay so in order for these quads to remain flat the only possibility is that the four vertices lie on the same plane okay but this is basically impossible so if you take a look at any of these polygons here let me switch to wireframe pre any of these polygons will have some distortion so for example let take let's take this one here you see that there is no way to align these two vertices with these two versus vertices here okay you always have some kind of deviation between the edges of these of these quads so it means that these quads are not flat so how can we produce this kind of of structure because the risk is that in order to produce in each of these panels here you must use expensive technologies or expensive processes so what we want to do is convert this object here into a surface let's call it so or a system made up only of flat surfaces now there are two approaches to this kangaroo can try to flatten the panels okay so if you go into kangaroo goals and Gold's mesh you would see that there is a component is called planarize okay now you can try to work with this and see what happens but planarize is another goal so it's another force okay you know that catenary curves as we have discussed are generated by only considering elastic properties of the material and gravity well eventually applied loads okay planarize is a force that tends to maintain a polygon a quad flat so it acts despite the gravity action and despite the elastic properties of the material material so eventually if you work with planarize component what happens is that the shape that you get is no longer a catenary shape so basically this will not be a compression-only structure so if you exaggerate with the planarize component it means that this object that seems to be identical to the original one will simply crumble if you try to assemble it in in in a real world okay so I would not recommend that to work with planarize unless you are able to adopt some security measures when you use this one safe method is to take the output and convert it into eventually planner surfaces or planner panels okay so let's say that we have this output here from the green tree which is a mesh with 150 polygons 150 quads okay so what I want to do now I want to analyze if this quads are flat or not and how much flat or how much non flat they are okay so in order to do this once again I switch to kangaroos $0.99 and take one component which is this thing here linearity display now this is a component that allows to visualize if a a a quad is flat or not is planner or not okay so what I'm going to do here I'm going to take this mesh plug it here and you see that this thing here is performing an operation which is actually it's not visible by by default you have to work with the output of this thing here now let's try to understand how this planet to display component works I will simply let me just organize things a little okay so we have primary display panels display is saying okay give me the mesh and tell me I what is the base domain now what is this base domain this pest domain is saying tell me what is your acceptable range in which the the panel each panel can be still considered as a flat surface okay so we see that this base domain means from 0 to 0.05 means from 0 to 5 percent what deviation so considering the flat surface if the deviation is contained between zero and five percent then this component will still consider the quad as a flat-panel okay while if the deviation is larger than five percent then this component would recognize the correspondent panel as non flat okay now what do we have here as a output we have a number which represents the deviation so you see that this panel is basically flat this is basically flat this is not flat for just four point zero zero five basically this is absolutely non flat okay this is a 13% deviation with respect to to the planarity condition okay but anyway you see that this is representative of the planarity of each panel okay so we have a Planeta coefficient here and then we have here 150 measures which are B each of the quads of our mesh and we have 150 colors representing the planarity of the mesh so we can also do something like this we can take a custom preview take the mesh meshes here and visualize them each one with its color so whenever you see green light green or orange etc you are seeing basically panels which are almost flat of course green means that it's basically flat okay which are basically this ones here but when you start to see 0.03 it means that you're already getting into the orange song okay when you see red it means that you have at least five percent deviation or more so everything above 0.05 percent it means that it's deviation with respect to the planarity condition is larger than five percent of course you can decide for example what is your limit for planarity for example you can set this value to any value between zero and one where zero means zero percent tolerance and one means 100% tada okay so if I set this to one and plug it into I you see that everything turns into green or green ish okay so everything is basically flat here but if I start to decrease this you see that that reddish panel start to appear so if I say for example 0.5 these panels here are the panels that have 50% deviation with respect to the planner configuration okay so let's say how do I determine this this value here but basically you have to understand that if you have a structure like this there will be frames and panels okay normally unless you are building this only using a three-dimensional bricks let's call them so okay but if you have a frame in case you have framed for example the frame will will have some height I will represent it like within a high profile here and therefore if you have two profiles here when you have a panel which have which has some deviation you might have a panel that does something like these and then it runs up and it runs up and it does like this show you some kind of distorted panel but this distortion this deformation can be absorbed by the height of these beams basically so you can easily define what's the maximum deviation that that is acceptable because if you planarize the the correspondent panel you are sure that the frame will be able to compensate the deformation that you are creating okay so that's why you determine what what kind of deviation maximum deviation you are ready to accept in your simulation okay so let's say I will use a a twenty five percent deviation limit okay so everything that is red is something like that for example I cannot simply produce this panel see this red panel using a a cut technology okay so because they are not flat and what I want to do I want to let's say keep the cost under control so I want to use only cuts technologies like for example glass panels okay so in order to do this what I need to do is I can let's say leave the green greenish panels as the yarn and take into account only the red ones now the red ones have a deviation which is at least 0.25 so if I take these numbers here and understand which is larger then this deviation factor then this will give me a sequence of true false if I want to include 25% I will use the larger than or equal to okay so if I do this let's find a value which is larger than 25 like 33 value 33 is 0.31 and then we have a bunch here okay so if I take this panel here and plug the larger than and equal to you see that 33 correspond to true and then there are this bunch of values here which are all true through two and so on okay so when we have problematic panels this will return a true so if I dispatch all the panels here using this pattern in a I will have the problematic panels because they correspond to true and in B I will have D let's say acceptable pants so what I'm going to do I'm going to take the problematic button problematic panels and I'm going to use a triangulated component so I will take this problematic panels here and we'll split them into triangles why because triangular panels will always be flat okay so if I take a mesh container and plug the new triangulated panels and the acceptable quads now what I have is a mesh which is made up basically of flat panels balem quartz or triangles it doesn't matter but I am optimizing the the presence of triangular panels according to the maximum deviation that I can accept in my project so if I decrease this I will have more triangles of course but if I am capable of considering more deviation then I will have less triangles it depends on the frames that I will be using okay so if I return this to 0.25 it's nice to see for example how this simulation or how this let's see it from the top viewport this triangular panel start to appear according with the deformation that occurs cover this this mesh okay so this is this is the first consideration so we have here a set or made up only off let's wait for this to converge only of flat panels which are ready for for production and of course you can use any technique for let's say name these panels and put them on on on the floor basically on the ground ground here and prepare them for cut cut technology or cut processes okay and bring them in bring them to to production second observation let's say that we want to do exactly to produce this one thing is to let's say cut each panel and then assembly start with this structure piece by piece so we will have in this case if you take a look at this well actually if I join using a weaverbirds joint meshes and weld component if I do this I see that I have a mesh with 196 pieces okay so I have to produce basically 200 panels and then assemble them one by one paying attention to the shape and position and unions and joinings that I have to create here now there is another approach basically we can use a different technique a different approach where we split this object into chunks and each chunks can be cut and then put into into place by simply folding along the edges okay so for example imagine that I am able to isolate all these stripe here of oak panels of course I can develop this stripe on flat on the floor on the ground and then I can cut it and simply bend the panels fold the panel using a specific angle along each of these edges here okay so this is what we will try to do now I don't know if we will succeed let's see because normally this operation is is quite complex but in order to do this there is a plug-in a grasshopper plug-in which is very important and it's also let's say one of the scary plugins because it's quite complex but it is called IV okay and IV is a plugin that allows to create a let's say topological interpretation of the mesh structure in order to unfold it and to develop it flat on on the comp on a plane and be able therefore to easily manufacture this this object now let's take a look at that I had IB and let's see how it works okay so what we are going to do nothing right now is take this mesh that we finally obtained by kangaroo simulation and remember that we triangulated some some panels but some parents are still quads okay what we're going to do is going to use IP for grasshopper now I ve same plugging that allow us to basically deconstruct the mesh structure and create some kind of connection between edges and polygons and use these this rule that is created all over the mesh in order to create mesh chunks and unfold these these mesh chunks into flat mesh parts that can be easily manufactured and assembled in in the real world okay now IB is is let's say quite complex as a plugin because it is based on on a very peculiar algorithm that that you can see here in this group that is called primal segmentation okay so you find this kind of strange names like DFS MST and so on and you see these like names which are somehow non easily understandable okay but they are all algorithms that allow a particular segmentation of the mesh so you see that there is they a number in this group this is basically the sequence by in which you want to create the workflow using IV now I have prepared here in a hole definition where you have the kangaroo simulation and also the IV part for unfolding the mesh on flat on on the on the ground floor basically but I will apply this the same IV definition I will not write it from scratch because it is quite boring and and and in complex ok but we will serve the existing one it's absolutely irrelevant if we build it from scratch or not but I will go through each and every step of these definitions so let me just unplug and disconnect this cable here and reactivate this of course this definition is connected so that's why it's everything orange or red okay so let's see what happens when we have this mesh here and we plug it into the triangulate you see that this is actually the result of the of the IV operation that are made in this area now let's see what happens let's see how it it works okay so I will turn everything off here and we go back to the our initial mesh now IV needs to work with with triangular polygons okay so what I do here is is actually triangulate the whole mesh so all the work that we made in order to optimize the shape of the panels in order to have all flat panels here he becomes absolutely irrelevant as you can see because we must triangulate and also there is this Weaver joint measures and well because this this part of the division was used in a another definition where the meshes here were basically derived from from here from this vanity display so that's why you see that there is this additional we will join the mesh they will choice and join and weld but here you already have an idea of of how you should manipulate the mesh after the kangaroo simulation but this method was for for any mesh okay so you can unroll and unfold any mesh that you might want to use so once you have one single mesh the first thing you do is create a mesh graph okay so the mesh graph and you see that there is there are several components here now these is the first one that you want to use so you have one mesh actually and you want to build a graph from an existing mesh okay so this component here what it does is create a connections create connections between edges and polygons so you can see that for example here this graph from mesh determines what what is which is the center of any of any polygon since along the the mesh and then create this connection here between the centers now this is in some processes this is called the dual connections okay so the connections between all the Centers of of the mesh polygons but you can see that that these connections you touch the middle point the midpoint of the edge between two centers okay so it is not a straight line okay so this is the the graph from from mesh so you see that this graph is actually connecting all the center point of all the polygons of the mesh okay now the important thing is the following step the following step is is a weight graph now what what does this component do is create let's say preferential connections between the center inside this graph that the graph from mesh creates all over the mesh this space angle edge weight which is the component that I am using in this case there are several components it several functions here you can decide whatever you might want to use but in this case what I want to what I want to prefer as a criterium is to let's say identify those connections that that are determined by the angle between two faces two edges and faces okay so what happens when we do this this component here starts to run through the the graph mesh that we have graphed that we have created and it starts to give weight to edges along the mesh according to the inclination of two edges and faces that connect along the the edge that we are considering okay so for example what happens here is that take this edge here this age connects this face and this face and this is the line that connects the two faces HSN faces okay and according to the inclination between this face and this face this age here will be given a weight okay so that is this is the meaning of this component here so once you have given a weight to all the edges of all the mesh you can use a primary segmentation which is basically the algorithm there according to the weight that the phase angle edge weight gives to the graph or derived from a mesh this is actually creating selective paths according to the weight that this component gave to the edges so this we create basically these paths here that don't run all over the mesh the mesh they just create preferential paths that are derived from this phase angle edge web so faces which have a let's say inhomogeneous inclination they are all kept connected together by a single branch here as you can see and you see that these connections here do not touch let's say do not do not touch each other okay so you have this kind of branches here actually you might think that the branches run from the part with more thickness to the path wheel which is thin but actually it's it's the opposite these branches run from the thinnest part to the thickest part and you can see that that they are independent branches so you can see that for example not all the branches touch each other you might have also separated branches okay these branches here are basically determining the chunks of mesh that will be eventually come folded and unrolled on the on the ground plane okay so I repeat first of all you create the whole graphic okay which is this set of line here the green line that you see here then you decide what method you want to use to separate this degrade graph into a several branches according to the weight that you give to the to the graph and the weight can be assigned by different using different criteria the criteria that I am using here is the inclination between two edges and faces okay so and then it's basically what I'm trying to do is group group faces that have an inclination and angle which is basically uniform more or less okay and this algorithm here is creating the relative branches and end connection okay so this weight split graph what it is doing is actually taking the graph created by the MST crystal which is the algorithm for primary segmentation and it's basically splitting the graph so each of these branches would be treated apart from the other ones okay so you see that this is actually you can see that it's basically the same graph as the preview but you can notice as here you have one single simple cable coming out from the MST crystal so it means it is just one single graph okay but here once you split the graph according to due to the desire the interval that you want to use then you have a list of graphs okay so you see the same preview but you have a set of several different graphs graphs okay and so here you have this mesh graph here which is actually a mesh graph component is like any of these params containers here but it's a capable of containing mesh graphs graphs from from I be okay and once you have your separated graphs then you can visually unroll them okay and you can see for example that in this case these are the chunks of graphs created over the surface already unrolled and you can see that here you have a coefficient here for rolling here is set to 1 which means complete unroll you can see that they lie flat each one with its own inclination which depends from the starting phase that you want to consider for over the mesh but you can also set these to for example 0 in order to see the whole process let me hide this and let me also hide the original mesh ok so you can see these are the graphs that are going to be unrolled ok and they correspond exactly to a to this mesh graph here so once you have this mesh graph usual unroll you can simply drag this and you see that here you have the branches that are being unrolled up to 100% ok so they all lied flat here and you see that this is receiving 7 values and you might recognize that here you have one flat chunk then you have this one and then you have this one here and then you have this one here each of these frames that you see here that represents or identify one of these seven graphs that we are rolling and then what I did here was eventually a very basic operation for taking all the graph unrolled graphs okay and then I just placed them inside a grid on the XY plane so you can see here you have the graphs and rolled on the flat on the plane now this operation here is an operation which not always succeed it depends on how complex the mesh is so you might want to tweak parameters here that's the complex part because as you can see the workflow is pretty straight forward but there are many problems that can that can arise like for example this one ok so you see that for example this chunk here when you unfold it completely there is no possibility for this mesh to avoid self intersection ok so it means that eventually once you get this this graph here you might want to split it eventually along this edge here and obtain two separated graphs that you can produce or manufacture into two separate separate chunks now I end up this this IV part and also this compression structure final part for this video course at this stage okay so the unfolded Enel road on the XY plane parts for this for this mesh but you see that there are also some fabrication components here that allow to place this kind of flaps on the edges of of your mention of the two to be able to for example prototype these like doing some some rapid prototyping with paper or so on or or or something similar there are also some interesting components here that allowed to name well actually put numbers to any to each chunk and each age along the chunk in order to be able to recognize to the corresponding edge of a different chunk but anyway you these are these are basically easier than the first part of of the IV workflow so I would keep I will leave this last implementation to to you and that's it for for our video cross-eyed I always give the possibility for you to drop me a line in case you need some further explanation or else if you have any doubt regarding what we have seen so far during the video course I also recommend that you subscribe to my youtube channel and you also add me to your social networks and very active on social network I will give you here in this file I will also give you the my nickname you can find me as junk at the MA junk at the MS it's it's my nickname in in on facebook on Twitter on Instagram it's always the same so you can easily easily find me online here you have my website so you can stay updated with new video courses and tutorial and news okay so that's it for for this video course I hope you enjoyed it and bye you
関連おすすめ
Elon Musk’s XAI, Fiber-Optic Drones & the New Era of US Defense & Winning the AI Arms Race
DefenseNow
250 views•2026-05-15
I Read Every Google Antigravity 2.0 Doc So You Don't Have To (13-Min Operator Playbook)
hyperautomationlabs1045
120 views•2026-05-19
Could AI change the future of cancer survival?
MotherConservative
999 views•2026-05-16
[RQ] All Preview 2 Midnight Horror School Deepfakes in Macbg Major
macbghuggylego
102 views•2026-05-15
Firefox on Android Just Added 'Shake to Summarize'
BrenTech
349 views•2026-05-19
Google’s NEW AI Just SHOCKED The World…
JulianGoldiePodcast
188 views•2026-05-21
WWDC 2026 Promises Apple Intelligence and Siri Upgrades | Episode 195
TheMacRumorsShow
104 views•2026-05-22
RNNs Had a Fatal Flaw — Why Transformers Replaced Sequential Processing
axiom-motion-math
567 views•2026-05-18











