Thallus 3D Printed Sculpture With Kangaroo Physics (Grasshopper Tutorial)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome to this edition of project of the week each week I'm going to recreate a project in grasshopper that is chosen by my subscribers and followers this week we'll be taking a look at the 3d printed tellus sculpture this pattern is based on a differential growth algorithm which typically works to create an ever expanding curve that never touches itself this behavior of this particular system is tweaked to enable connections in the curve that create a structural system that bonds large parts through 3d printed technologies in this tutorial we're going to use kangaroo physics to create similar patterns and apply them through a parametric geometry we'll begin this tutorial with a base curve that will serve as the starting point geometry for our differential growth algorithm we will then divide this curve into a series of points and then submit the curve so we break it down into a collection of line geometries I've created a template Rhino file for you all to use for this tutorial which can be downloaded by all members of the different design comm so if you're not a member you can sign up for free and get these files so I've also got a blank grass up a document open that we're gonna start with and I'm going to just begin by referencing in a curved geometry which is this curved geometry here I'm gon set that one curve and I might just turn off this base curves layer so we don't accidentally select or move that then I'm just gonna go ahead and we're gonna divide a curve up into a series of segments I might just start with like 500 segments so quite a few we want a lot and then we're going to create a line between two points the first point being you know these points in the divide curve and the second point being a shift shifted list version of these points so what we're doing is we're just creating basically almost a lower resolution version of this original polyline like preview those guys off for now so we're going to work with kangaroo physics so if you haven't used kangaroo physics before check out our meshes and physics simulations course on the different design comm I'm gonna come to the kangaroo 2 tab and I'm just gonna drop a bouncy solver onto our canvas to begin with so the kangaroo kind of works in a way where we're gonna give basically a series of goals as to how we want to affect this curve geometry and the physics simulations iteratively run over and over and over to try and achieve those goals so we've gone ahead and segmented our curve in grasshopper and the first goal that we want to kind of apply to our geometry and our kangaroo physics simulation is to tether that curve to a geometry boundary in this case we're going to tether it to a mesh geometry that we specify in grasshopper so back in grasshopper I'm going to go to my goals on tab and select on mesh and we're basically just tether all these points coming out of divide curve onto a mesh that we specify the mesh is actually gonna be this base surface here just this rectangle I'm gonna go set one surface and reference that guy in and before I plug it into anything I'm actually gonna mesh the Brep because it's you know a NURBS geometry we're just going to turn that into a mesh and apply that into our mesh I can go ahead and put that into on goals I'm gonna flatten this and right now basically kangaroo physics is gonna run and say keep all these points on the mesh because they're already on the mesh it's actually not gonna do anything but it's basically just like a setup so when we start like moving these points and lines around a little bit myself a bit of space we're gonna put all of our goals in this big gap here so I'm going to create a button just for when we want to reset that simulation I'm also gonna make my damping one point zero zero we don't want our velocity to weaken as the simulation runs over again and I'm gonna create a boolean toggle and plug that into the on button so if I toggle this to true it'll run the simulation if I talk to false or just pause the simulation I'm also gonna give the strength of this on mesh a strength of maybe make it a thousand and I want it to be a pretty strong force because we're gonna have a lot of other forces going on during the simulation so that on mesh gol will tether our curve to our geometry boundary a geometry boundary being that mesh and the next goal that we want to implement through kangaroo physics is basically to set a segment length goal we want all of the segments that we've created all these lines to be a certain length apart from each other a certain length in total it's gonna be a larger length than what you start with because they expand of the curve will essentially create these really interesting geometrical outcomes as the simulation progresses so to do that I'm gonna come to my goals line drop-down menu I'm just like the length skull and the lines we want to implement it just these lines the length I'm going to go for maybe we'll just go for two point zero zero to begin with and we'll leave the strength at a default of ten the other thing I might just do coming out of the bouncy so we get a bunch of points so vertices I'm gonna create an obscure v' from these points they're basically the simulation points so we can actually view this as a curve rather than a series of points so I'm gonna plug that into gold objects holding down shift we just want them all to come in together at once and I'm gonna reset that simulation we can you watch this simulation run so it's trying to expand all the lengths of that you know curve that we've got we could go and live increase that expansion so you start to get you know this kind of janky curve all these lines these segments are trying to kind of move away from each other based on that distance and you can obviously update it live so I'm gonna just toggle that off and pause that simulation and one of the things that we want to avoid with this simulation is the crossing of this curve so this kind of messy overlap that we're creating here we want to remove that from our simulation basically so we've set our segment length girls and that seems to be working quite nicely in kangaroo physics the next thing we want to do is we want to avoid crossing the curve to do this we're going to turn our curve itself into a collision object and tell everything in the simulation try not to hit this curve itself so to create this collision object I'm gonna come up two goals colliders and I'm just going to select the basic Collider you know drop that on my canvas the objects I don't want to collide where they're all these line segments that I'm implementing I'm gonna give it a radio if maybe 1.100 it's basically the smallest distance before we try to move away from this collision and the strength I'm gonna give it is I'm gonna give it a strength of a hundred let me plug that into strength well it not will won't plug anything for ignore a and ignore B I'm gonna put that guy in here and I might just preview these initial lines off and this initial curve so we can just watch that simulation live again so we can go and run that simulation and you'll see we don't get the overlap that we were experiencing before as much getting a gap here so I might just invert that to true for the periodic so we got a closed curve so then you know you start to get these kind of more interesting you know patterns coming through you can start changing a few of the settings and the simulation runs really nicely perhaps we could even increase the number of points now simulation or so probably should have paused it before I did that just hit that reset button there we go and you can kind of see you know some of those really interesting strange patterns that come out of the simulation so already we're creating some pretty interesting patterns through kangaroo physics that avoid crossing the curve is making it look a lot neater but the final kind of goal that we want to implement just in this tutorial in kangaroo physics is a set angle goal so but right now between each of those line segments you get this kind of you know angle as measured by the arrows here what we want to do is basically get each of these angles so they're flat so there's no angle between them so what we're gonna do is we're gonna apply a force that basically pushes against the arrows that you see in this diagram and tries to create as little curvature in the simulation as possible so we can find that ghandar goals angle i'm just gonna grab the standard angle component and we're gonna create an angle between I might just stop running that simulation we're gonna create an angle between all these lines and we're also going to shift the list and the angle is going to measure between that itself and its neighboring line basically the rest angle I'm going to copy a panel over I want the rest thing going to be zero and I want this to be a pretty strong for so many of the strengths of 1500 and I'm gonna whack that into strength and then we're gonna applied that into our bouncy silver I'm gonna reset and let's run this simulation and it'll be a little bit slow to begin with but you'll start to see that the curvature starts to be kind of limited I'm gonna preview this shyffilis off and we get you these kind of rounded blobby almost kind of like a bit of a water animation or some kind of liquid simulation you see we still you still see we get a few little overlaps here we can go and tweak the parameters to try and avoid those things generally it tries to avoid them eventually and you start to get these really kind of interesting little patterns so I might talk to that off we could increase the number of points I could make just you know 2,000 points and really give this simulation at workout this is of course you know run a lot slower as a simulation I'll run and just see how it goes yeah it's gonna take a little bit of time to get going so very slowly we'll see these kind of bubbles start to appear and then they'll kind of just go really quickly yeah there they go there's sudden a breakaway and then you start to get these really kind of interesting patterns so you could go ahead and experiment with different settings different number of points different base curves will have a very large effect on the out point that calms you get in the simulation itself but in 2d that's generally how we would go about creating this pattern I'm just going to I'll let it run for a little bit I don't know if it'll fix that little overlap or not perhaps know I might just pause that simulation where it is right now wow it's pretty close to fixing it I just let it run for a second and you can kind of see how the 3d printing logic builds into this like these kind of distances would probably be the size of your 3d printer speed and then they would bond together to create kind of a structural integrity that we've seen like the project that we're looking at as a precedent so I'm gonna go ahead and pause that bouncy sole for a second so in the next part of this video we're going to create a parametric form to apply this pattern to and if you don't have much experience with parametric design check out our parametric design course on the different design com the form we're gonna create will be closely associated with the precinct we're kind of taking inspiration from but you could really just recreate this kind of pattern that we're seeing generated on the screen on any surface geometry that you're able to create inside of grasshopper so I'm gonna stop that simulation running again and I might just zoom out and we might just all this stuff across down here preview everything off except for that guy and I might turn off his bass surface in writer and we might move into perspective mode so I'm gonna begin by just creating a polygon and I'm gonna give it a radius of 50 that's not what I want fifty point zero zero and the number of segments I'll just give it I mean it doesn't really matter we could go with 20 it could be as low resolution as you want you can kind of drag this up I might actually make it a maximum value of 50 I don't really think we need anything higher than that for the polygon and then I'm just gonna find the discontinuity points of that curve that we've created essentially what we're going to do is it's gonna laugh between two curves it's almost like the base logic of this would be if we created a unit Z vector we're essentially almost moving these discontinuity points up by whatever you know a vector is maybe it's 300 plug that into there so you know up there and then essentially creating a poly line through both of these points situations and then just lofting between them so this is a pretty boring faceful and to start with that we'll go ahead and figure out a way to make it a little bit more interesting in fact I think what we would do is we'd create a NURBS curve not this poly line output that I've created here so let's go ahead and delete that and we'll turn that one into a NURBS curve as well and flatten those guys coming into there so there's gonna be something like this but we're gonna give ourselves a lot more control so the first step that I'm gonna do is I'm essentially going to try and create more of like an arching effect on the base form so I want the points that are kind of like towards the ends of the curves to kind of be lower and then it'll slowly kind of come up and around in a loop and then go back lower again so let's get subtle in this by just creating a list length component and coming out of the points there and I'm then gonna create a range and the number of steps that I want my range is gonna be the list length but to get it the exact length that one I just need to go cuz that's gonna create on thirteen numbers and I want twelve like list itself so I'm just gonna create an expression X minus one just in the expression editor there and that's just gonna give me like a range of numbers I mean I could go ahead and just for you know I give it's eight we could have a look at this move vector with that so you start to kind of you know get from zero all the way up to here what we want to do though is we want this to come up and then it comes straight back down like that almost like a loop so right now we're just going straight up and the way that we'd go ahead and affect that is we create a graph a graph mapa plug that in range into there and I'm gonna make it a Xia graph I'm gonna get that guy up there this guy in the corner down to the bottom there so it's like you know that loop that's almost the form that we're trying to create I'll plug that into multiplication and then we start to get you know that interesting loop that we're after in terms of the form so I might give myself a little bit of space over here and we can probably go ahead and just group those guys so that's you know how we're creating a little loop in our base form and the next thing that we want to do is we I want this to kind of like taper outward so on these to almost be scaled upwards and then we're gonna add a little bit of a twist onto that as well so the first thing I'll do is I'll just create a little scale component I can probably come out of the way up here it's almost like a third stream so this stream is creating that kind of arching form this one is creating the bottom curve and then this one is gonna create the scaling and moving out of these middle curves so I'm gonna create a scale the geometry I'm gonna scale is all of these points here I'm gonna scale these from the center point so I'm gonna find the area of this polygon and I'm just go from there and the factor I want to scale by basically I mean we could go ahead and do just a two point zero zero to begin with what we're trying to do here is essentially do something like that but what we don't want is we don't want this kind of like scaling we want it to do is doing out here on this side but these kind of points closer to where the points are quite low we don't want them to scale out at all so we might actually go and remap remap these numbers that we've got coming out of this curve here and just reuse them for this scaling situation we've got going on so I'm gonna get the values out of here so this the sauce domains actually mean 0 to 1 because that it means our domain there in that component there and I'm going to create a construct domain component the start demands going to be two point zero zero also the start demands gonna be one so I might actually create a panel for that guy I'm making one and the end demands going to be two and we'll remap those into there hasn't worked I want it to be at our domain and you'll see us out to get that kind of like tapering effects that I'm after there and you could go and affect the taper parametrically like that I'm just gonna leave it at two for now but you start to affect the form in kind of an interesting way with that domain controller we've created so now we want to rotate these guys a little bit so I'm going to go and rotate these scaled geometries I'm gonna change the angle to degrees and then I am also going to give it a negative value just because I want it to it they see if I rotate it currently it's gonna rotate in the opposite way that I want it to so I'm gonna make the angle just about 34 now fact let's make it um zero smaller than thirty s more than ninety so we never go over an angle of ninety like a right angle so I'll make that the angle I rotate by and then the plane I want to rotate is just that centroid again so now we could go ahead and plug that into the geometry and you start getting a bit of a twist in this but the problem that we have with this twist is that we're rotating these two bottom points here as well which is something that don't want to do so myself a little bit more room over here perhaps you're gonna do a list item from this scale geometry here and I'm gonna create a panel we're gonna get list item zero so that'll be the first item before we rotate basically so that one there we also want to get the last item as well so I'm gonna go and do a list length length component there it is and we want to get the last of my item on that list I'm just gonna create a little expression coming out of here X minus one because the last item won't be value number twelve it'll be value number eleven because we start counting from zero so I'm gonna plug that into the index there I'm gonna flatten those guys coming in in fact was flattened coming out of here be more intelligent and then we're gonna go and do a replace items component we're gonna basically replace this list of items with these two points that were found here so those are the items and the indices you want to replace is once again that zero and that 11 and wilkes zero and then 11 and then we're gonna flatten coming into there and then that will be you know rotated list so now if we kind of go and do that you'll see that those base points actually hold in place and you can get a bit of a twist on the form that's being created in this little simulation here okay so now we want to figure out how we can run this simulation over the top of this surface form that we've created so we're gonna basically marry these two algorithms together a little bit just make sure that you've got the boolean toggle switched off in the kangaroo solver we're gonna do a few things so the first thing we're gonna do is I'm gonna create a map to surface component and I'm gonna map all of these lines in fact I might actually just create a little line container to make it a little bit easier first to use this algorithm I'm gonna map all of these lines coming out of the line component here into the map to surface and we're gonna create a bit of a split between all this stuff that I'll move that guy over there and we're going to map from basically this base surface that we created an initially where is that guy gone this surface here we're gonna map from that source service which is here we're gonna map all these line curves which are those guys I'm gonna map it onto this lofted surface here like that so we get that kind of starting curve coming into algorithm so then we're going to override all of these lines here with this curve here so this mapped curve is going to be a new curve on this simulation and then the surface that we're gonna actually mesh is gonna override that guy so we're gonna run the simulation on top of this new form that we've created might go and preview a few things off just so got a clear understanding I hit that reset button we also want to just make sure that the points that we're mapping coming from this curve here so I'm actually gonna create an endpoints component and we'll grab manage the endpoint and override that so if I hit that button yet we should get all of that working on to our simulation properly so that's the kind of little setup there we're just basically mapping those lines onto this surface here and this loss lofted surface sorry and then we're gonna re run that algorithm so if I go ahead and run that simulation we should start to be able to view this iteration on top of you know our base surface here although we're getting a bit of an era straightaway there's a few little kind of overlaps going there which tells me perhaps we don't have the settings there's perfectly Lunz we'd like but just Lillian talked with that guy off so if any I might actually just do is just reduce the number of points let's try with 500 points again just give that a bit of a reset see how we go that's a little bit better we still get a bit of an overlap that's probably just with the base curve so as I kind of mentioned before the base curve can often have a pretty significant effect on the simulation itself I've actually got another base curve in here those curves zero zero two we could go ahead and input that into this initial curve so we could go and set that as our base code I should not have let the simulation run there we go and then if you run that you start to get like slightly different outcomes it's actually a better outcome in this regard so maybe we could go ahead now and increase you know the number of points again to 2,000 you've got a reset and what you know this simulation kind of unfold and you start to you know recreate this kind of really interesting pattern with all this logic that we've embedded through a kangaroo on top of that base geometry so I mean outcomes from this first of all I'd have a go out playing around with the settings in the base pattern and see what you're able to create the different types of patterns I think there's a lot of scope to change the parameters in grasshopper or add you know different types of kangaroo physics simulations you could also go and just try and change the base form and try this on a totally different form as well and create your own kind of unique designs using this kind of simulation logic then if you want to you know visualizes in 3d we could go and create like a mesh pipe component plug in that curve take a little bit of time to resolve that the radius you're gonna be wanting is basically the same radius coming out of this Collider so it's almost like that 3d printing radius and then we could go ahead and preview it you know a nice wide material I think it might have like a bit of a meshing problem that I've experienced a few times just have a look at it in render mode looks dodgy so sometimes a bit of a rendering error that occurs it might not happen on yours but happening online you can subvert this by just like deconstructing the mesh and then reconstruct and plug that guy into that and then you get you know that geometry appearing with some shadows
Info
Channel: Grasshopper Tutorials
Views: 24,582
Rating: 4.9852762 out of 5
Keywords: grasshopper, 3dmodelling, rhino3d, parametric, parametricism, grasshopper3d, design, kangaroo3d, grasshopper tutorial, Rhino Grasshopper, basic grasshopper, grasshopper plugin, parametric design, parametric design grasshopper, parametric architecture, parametric architecture rhino, parametric modelling, 3d modelling, grasshopper definition, grasshopper pattern, geometric pattern, kangaroo grasshopper, kangaroo tutorial, kangaroo grasshopper tutorial, kangaroo physics
Id: dVv6zLicE4s
Channel Id: undefined
Length: 24min 44sec (1484 seconds)
Published: Sat Apr 18 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.