Tutorial: Form Finding of Blob Architecture (Rhino + Grasshopper + Kangaroo)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] hello hello hello and welcome to a blobby architecture tutorial where i'm going to show you how to make blobs and the approach that i'm going to show you and the the workflow i guess that i'm going to show you is um it's not going to give you a lot of control but it's going to give you enough control so that you can play around with it and actually make a building out of it so for you architects out there listen up so i do have a little bit of a cheat sheet here uh a few notes that i already done just to see if you know it's gonna work and it seems like it's gonna work so let's begin the first thing that i want to do is i just want to i guess create a test you know a test piece let's say a ball that is going to be squished right so for that i just want to create a i'll go to mesh tools and i'll just create a sphere mesh sphere just around the center and let's give it i don't know 50 ml radius something like that the size of the sphere doesn't really matter um but around 50 is good enough considering that our grade is like a hundred i think anyway we have our sphere let us reference it in as a mesh because it is a mesh sphere so i just reference it in bam bam and i'll hide it oh by the way one thing that i did and i didn't explain i lifted the sphere above the x y plane do that please um the reason why i'm lifting it above is because we will add gravity and our x y plane is going to work like floor like ground right so as the sphere is going to be bouncing down it's going to be squishing against the the ground so just lift it up and i'm gonna hide it in rhino so just so that we only see it in grasshopper okay we managed to reference in the speed that's fear um next up under kangaroo 2 we will get ourselves a solver not a zombie solver just a regular solver and what i like doing with this is always creating a button creating a boolean toggle and creating an entwine node n t w i n e entwine um actually let me do just just a second bino bifocals yeah i'm just going to do a bifocals node here just so that you can see better you know what what kind of nodes i'm using okay so we have a twine i connected that to go objects we have a reset button that's just a button right and we have our toggle tutor for turning the solver on or off for any um any simulation this is going to be like this doesn't change this is going to be the default and now the light is messing up we can we go auto there we go um so a data tree is going to come in into the solver that means that the output from the solver is also going to be a data tree right so i'm just going to use bang explode tree node like that and and just connect it for now and and that's basically the core you know the brain of the simulation that that's that's done now for the initial kind of setup or initial goals that we want to actually simulate is well we always start with the same one and that is called show show this one right here and actually i could show you where it is it's right here kangaroo kangaroo 2 rider the the light bulb right that's the show we connected to zero zero input of that wine and now the solver is going to start complaining that's because we're not giving anything we're not showing anything right so i can connect the mesh to show like that reset run the simulation and the simulation is immediately going to stop and end and the reason for that is because there's only one goal that is show so show goes through and twine goes into the solver right and the solver goes like oh i need to show this sphere and it goes like yep here we go sphere and that's that's it then that's the end of the simulation right so it's uh it immediately tells you that it's converged even if i reset converged converse conversed so the output is going to come in since the show comes into 0 0 the output is going to be at 0 0 right here from bang so i can just create a mesh component like that and just kind of have it somewhere here right this is like our final output so now i am going to disable preview of most of these except for the mesh at the start and mesh at the end right like that okay so next what else do we want to do what kind of other goals do we want to have well the first one of the more important ones is floor goal called floor and that is going to make so that the sphere or rather let's add floor later i'll show you why we are going to be adding floor in just a tiny bit uh let's let's do one one goal first let's do edge lengths edge length so the edge lengths go what it does it basically takes all of them and you can't see them but they are there i promise it takes all of these edges of the mesh and it makes sure that those edges stay the same length and now my i'm fighting fighting the the camera here so it tries to keep all of these lines of the mesh the same length meaning that it um this goal will not let the mesh distort which is quite important right so we are going to connect our mesh to the mesh input right here and for the length factor it says that it it's going to be 1 sure we're going to keep it at 1 and for the strength that's also set to 1. let's just remember that number you know that we're using one and one here if we need to we will change it if we don't we won't and this goal goes into zero one if i were to reset and run the simulation nothing really changes that's because you know there's no other force that's acting on the sphere so it's it just shows the sphere and it tries to keep the edges the la the same length as they were and it succeeds immediately so immediately it gets converged okay more goals let's add some gravity maybe so i'm going to add vertex loads vertex loads this one right here vertex loads mesh connects to mesh as per usual and vertex loads l output i will actually connect it to not zero two of them twine but zero one that's because that is not zero one that is because um i only want zero zero to be disconnected from the rest right only show needs to be disconnected from the rest all other goals can come in in one big happy family right so here we have two outputs and i'm only taking in the or showing the second one um or sorry the first one the second one is not being shown and here we have we're using up only two inputs out of the three so i can even do this right okay so now this actually should start working in a weird way so if i reset you can't really see it but because it goes so fast huh damn it so you can't really see it but once i reset now it keeps running and the reason why it keeps running is because this sphere if i were to hide it and let's look at this view right here reset so it's floating now and now i run the simulation and it falls down and you can see that it falls down right through this you know the the floor it just keeps falling so the solver keeps running we need to fix that and that is where we actually use floor floor like so strength floor very a very simple uh goal which will not let our sphere pull through the grid like that perfect well you know kind of perfect it collapses under its own weight but it doesn't fall through which is nice one thing that i kind of want to do is instead of using quads here i want to use triangles so i'm going to type in show in or sorry show selected in rhino and i'm going to select the sphere and type in try triangulate mesh hit enter it's going to become triangulated like so i'm going to right click set one mesh and basically reset the the initial mesh with the triangulated version of it hide it again run the simulation this should ensure a little bit better yeah it's a little bit more accurate of a simulation that that's basically it we can also kind of get get it even more accurate if we use catmull clark subdivision for instance if you don't have the catmo clark node download viewer bird and then you will have it so mesh comes in to catmull clark and connects connects connects gets crumpled you know a little bit better but for this particular example i will not be using it i will just be using a triangulated mesh that that should should be good enough okay so our sphere falls down on the ground it flattens itself out because it collides with the ground and you know that that's basically it that's that's all that happens um so we want to somehow be able to control the form of the sphere how stiff the sphere is right so we are going to and i'm going to actually take take a closer look yes it's pressure that we want is it yes sorry i had to to take a look so we want the sphere to work more like a balloon where um it's it's b it does have pressure that is not letting it crumple onto itself right so i'm going to add one more goal and that's going to be under goals mesh and i will find the one that says pressure pressure like that i will connect that to the zero one input as well and for the mesh of course i'm using the same mesh here like that and i believe the strength yeah the strength is set to be one if the strength is one it's going to be way too intense i'm going to do 0.1 rather than one like that now if i reset and run this it just exploded what what do you mean let's try edge lengths 10 strength of 10 to to try and keep it you know non-explosive ah there we go much better so you can see that the pressure is actually pretty damn strong and it um it makes it so that the the hell is it doing no it's it's fine it's fine it makes it so that the sphere deforms and it deforms because of the uh because the polygons were not the same length uh or not the same area size so the pressure is unequal according to to the to the form that's fine we will fix it and actually we will fix it right now because uh to move forward we do need all of the triangles of our mesh to be the same size or at least close in this in regards to the size so i'm going to clear values like that i'm going to show selected select the sphere and actually i'm going to delete it right and instead of a sphere i'm going to just draw a line like that just a single line and i'm going to reference it in as a curve like that set one curve i'm going to pipe it right i'm going to create a pipe around it so to to make a pipe let's do let's use the multipipe tool that is available in rhino 7 multipipe connect curve to the curve input right here actually why is this lagging is this lagging because no it's paused stop being awkward stop lagging um so curve connects to curve input that's easy node size that's the radius of the curve or sorry of the pipe i need to yeah i use 10 that's fine so i'm just going to use 10 right here like that we get a pretty nice pipe right the reason why i use multipipe by the way is if i had um [Music] let's say something like this set multiple curves it's going to make a really nice connection right so there is absolutely no reason to use an old version of pipe um all right so we we do have this thing here um it does have open ends so we need to cap them i'm just going to use cap holes here and it's going to give me a b rep right a closed b rep that's fine we can we can work with the closed b-rep but i think um just converting it into a triangular mesh oh sorry we don't need to convert our closed brep into a mesh before making a triangular mesh out of it because we are going to be using try remesh tool which is also rhino 7 a tool that's only available in rhino 7. try remesh like that which asks us for geometry and target i'm just going to try and connect geometry to it and it seems to be working just fine we could try doing that that's a bit better i think is it let's just see this tries to keep the the the end sharp we don't really care so i'm just going to use the same tar yeah let's do it this way it looks like honestly it does look look bad but we we will make it work trust me uh length um for length i'll just use the grid yeah length will be around five something like that should be okay i'm just looking at taking a look at how many polygons we have i think that's that's reasonable and that's that's basically it we have our triangular mesh if i connect it to the mesh input here and move the curve up then i can reset the simulation run it i'm just going to fall on the ground no nothing fancy okay uh since you're getting bored let's make it nicer now if i were to take this curve let's just move it down a bit and take another one rotate take this whole part actually let me group this this whole part between curve and try remesh and i'm just going to make a copy of it like so just like so okay oh here i merged it um we'll see we'll see if it's going to work or not like that and connect the curve component or not connect but reference in the curve into the curve component here so now we have two pieces of crap uh going on let's reset and run the simulation and now basically what what we want to do is we want this guy to interact with the bottom one right to basically collide with the bottom one so how do we do that one more goal and that goal is the main one that for which i am actually making this tutorial and it's called soft body collide soft body collide goal where we give it a bunch of meshes right and see how i'm using the same mesh node over and over and over again very very convenient to have just one mesh node and everything connects to it so soft body collide we connect that to 0 1 strength is 10 i have no idea if that's good or bad we just reset and we just take a look it's going to be a little bit like it's not going to be as fast but you can see ah yeah it does seem to work let's actually pause the or or stop the the simulation let's bake this out default right and let's take a look at these two pieces of crap right clipping plane so that intersection between them is still not not perfectly clean of course because our resolution is super high but if our resolution were to be lower right or sorry our resolution is super low if our resolution were to be higher then the intersection would be even better right so this seems to work seems to work quite well so now we can become fancy about it right what would happen if we let's reset oops that's the reset button what would happen if we created something a little bit more a little bit more fancy right for instance i already have prepared a few a few curves here right so i have these uh these three groups of curves group one i'm just gonna connect it here set multiple let's just give it some time there we go looks like that actually we can make this smaller just so that you can see basically the form is this right so that's group one group two exactly the same form by the way except multiple it's doing its thing there we go hide that and i forgot to group these but that's group three so to actually get a group three i need to copy and paste the part of the the starting part of the definition one more time don't forget to connect it with shift to the mesh component here and then once it stops crashing there we go set multiple curves right we just set it up give it some time it's gonna it's gonna think there we go so this is our geometry right this is this is something that they came up with right and if i were to just check real fast 10 10 16. so i do think i'll just quickly disable this just so that it's not in the in the way uh this one this one right here instead of 10 i used 16 because it's it's a thick boy i wanted to this one to be a thick boy 16 like that oops change it up so becomes thicker right and also the curvature of these pipes to to make them a little bit more sharper the ends not the the end offsets i set it to zero and it it makes it so that the the piping is a little bit more sharp right the the curvature like this curvature is not so loose anymore okay uh that's it let's run a simulation and let's take a look at how how it's gonna work so i'm enabling the the mesh and it's not it's not doing great ah there we go mesh has been enabled and i guess we just we just run it right yeah we just ran it so i'm going to probably speed it up reset and run and you can see how it inflates right and how it basically it's a shockwave that goes through the through the whole system at first because of the pressure and now it's going to start drooping down and it's going to start simulating so i'm not going to blab during the simulation i'm just going to fast forward this so that you don't need to wait okay that's enough that is enough of simulating this is how it looks like and actually we can even make it a bit nicer so i'm going to hide the display keep in mind that instead of floor you can use uh goals collision solid point collide and basically get get the landscape in here and make the the freaking form not just fall on the flat piece of of of geometry but rather on on something that is curvilinear right and adapts to its size but in the in this case we don't really care so um i'm just having it flat that's one thing to note another thing let's make it nice uh so so so so what's what's a fast way of making this cool what if what if we get a mesh duel and this is this is where the tutorial ends by the way those of you who are interested in uh just getting this definition uh consider supporting the channel over at patreon link in the video description i give all of the give out all of the definitions that i make for my patreon supporters so if you're lazy and don't wanna follow along just consider supporting the channel would be very much appreciated moving on we are going to finish up here so so the initial idea is done right now it's just making it pretty by doing mesh dual or is it do is it dual mesh uh there's dual here but i think viewer bird has has dual graph okay viewer burst dual graph we're gonna use that and that is going to give us a bunch of hexagons so for every triangle well not for every triangle but for every group of triangles we get a hexagon um it's basically a a dual of a triangular mesh is a hexagonal mesh anyway uh and all of these hexagons are closed what the hell why are these so messed up no wait do it this way don't connect it to the second input that was my bad so we have a crap ton of hexagons that we can actually um we can actually work with this this is going to be a little bit rough but i i think we will we will manage so i'm going to take every hexagon here and i'm going to scale it around its center point so i'm just going to measure air no i don't measure area i use a polygon center polygon center node and i get the center points like so and our factor for scaling is going to be 0.9 90 right something like that thus we are getting like a frame in here but now what i want to do is i want to explode um explode the initial that the starting polygons right and i want to expo explode the scaled versions the scaled polygons as well so i get a bunch of separate segments and i kind of want to find um let's find some sort of a hexagon at which we can look at okay so i get this separate segment the separate segment this separate segment and so on and also separate segments for the inner ones right here um so now let me hide everything else and let's take a look at the data trees i'll simplify them just so that it's easier to see that seems good and what about here that if i simplify this that should also be good it is indeed good okay so now i am going to get end points curve and points i'm basically creating a mesh right recreating a mesh i'm getting curve and points here and here and now these should be these are not in separate branches so sorry before you create endpoints you need to graph the output here and graph the output here so now yes we get one one one one that's that's perfect uh we basically now as we will use merge we can get one two three four let's say these four points into one branch right very important to do so one two so if this is start this is end then this is going to be end and this is going to be start so it needs to go like so it needs to cross here like that okay we got we have a bunch of points now well not a bunch but four points in each branch and we can just use construct mesh component to construct a polygon through those four points cool huh as long as you're following along should be should be pretty simple um now we need to reconnect all of these um yeah we need to reconnect all of these meshes it into three separate pieces of geometry so i'm going to trim three i'm going to simplify this output and let's see we need to trim back by two steps so these meshes are the tree that we're trimming and our depth is actually not one but rather two bam and now we should have a crap ton of polygons yes we do and now i can use combine and clean like that bada bing bada boom should clean it up quite nicely my laptop is overheating that's not great in your case it should be much much faster i have no idea why my laptop is doing this but by the end of it we we do have a lattice structure a hexagonal lattice structure at our hands which we can actually offset mesh we can use offset mesh or i'll be using veerbird's mesh thicken like that and i am going to offset it probably inwards right so that is outwards but if we use a negative distance let's say 0.5 was that inwards i can't tell yes it is in words okay good so we end up with having this this offset right and this lattice structure and now for the the inner hexagons that's going to be pretty pretty easy to do all we need to do is just find where our scaled polygons were here they are these guys right here and i am just going to use um discontinuity on them so basically we just get the corner points of those scaled polygons i will also get an average of those points did you know that an average of a point cloud is the center point of that point cloud average i'll just get the average of those so we get the center point and then i'll probably just use the delaney the low knee the low knee the the low knee there we go that that's a rough one the lonely mesh like that and just to make sure that um it works for at every instance and it's not weird in some cases i'm going to fit plane or plane fit plane fitted through these discontinuities and use that plane for my delony mesh and that's it we get our we get our panels now we can offset um well let's let's use weird birds offset mesh by let's say negative like that so that is negative one here i'm going to use 0.5 i could just divide that num that slider by two but whatever um and then i'm going to thicken it thicken each panel like that sorry that was a that was a phone call anyway um we are thickening this bad boy up by negative 0.4 i guess something like that just getting a few panels in there let's take a look at the final output looks okay i guess um very very very separated though we don't need it to be that separated so i'm going to simplify it let's separate it in terms of the data structure i'm going to simplify it and i'll trim the tree trim the data tree once only depth is going to be one combine and clean clean it up and that's it now this is also ready to be displayed custom preview let's just give it a little bit of a pizzazz gray like that and custom preview for the thickness or the thicken sorry oh my god okay so apparently apparently apparently apparently the offset is messed up right so we can't we can't offset properly we need to use unify um mesh normals um unify machine if i mesh unify normals i have no idea which one is which so i'm just going to guess oh yeah that's because we're using the lunoy mesh like that um maybe we will do it another way in in another way yeah because this one doesn't doesn't help crap okay we need to we need to rethink this part uh which which kind of sucks which okay that was that was much harder than i that i anticipated so basically that the way i fixed it was by getting all of the corner points uh from the inner polygon um inner hexagon getting the center point repeating the center point according to how many uh points points we have so for every for every point here we get one center point so basically six center points in total um and also shifting the list so and then merging everything together and the way it merges is we start from the center right that's d1 the average right goes into d1 then we go to our um just regular discontinuity which is let's say this point right here right that goes into d2 and then we go to a shifted list which is this point right here right so thus we create a triangle and then since we are going uh we're going through every corner point right so that triangle for this one is done then it goes to here to here and thus it creates a bunch of triangles right here there we go these triangles right here then we trim the tree again just for the same reason why we did it before right here uh we combine and clean it up unify normals uh blah blah thick and now everything works and everything looks looks neat and dandy so we don't need to do anything more and that is it okay that is it that is our our thing that we have i know simulate it right and from there from here on out you would start actually working with it you know in rhino right it's 3d modeling it out in rhino and again this is way too it's it's way too hot to do any any kind of modeling uh so i'm going to leave it to you um to try it out try out this technique see you know what what works what doesn't and if it's something that you would like to pursue right um a few more things that i want to show you or just just a few that i kind of want to show you are let's see if if you want it to be up rendering top rendering there we go if you want it to be less like if you want the shading to be nicer you can always unweld and weld with angle tolerance of zero so every edge is going to become unwelded and thus will become sharp same thing for the inner hexagons you can easily unweld them and make it much sharper so now we can see the difference between that that it makes right i'm going to unweld all of these you can do that as well in grasshopper by the way no need to do it in rhino let's take a look at it with arctic view i mean it looks pretty cool kind of kind of a nice angle uh messed it up kind of a nice angle here maybe that's going to be a thumbnail right need need to get that clickbait in um but i think we are done let's check it with our clipping plane that's the last thing that we're gonna do just to see what kind of uh intersections um do we get bam like that god damn i i love clipping planes come on that's pretty cool isn't it i know you were skeptical at the start but now when you're looking at this this can definitely become a building come on there we go i think this is a a good good place to end the video hope you enjoy enjoyed this one and i'll see you in the next one which is not going to be a grasshopper i promise [Music] bye [Music] you
Info
Channel: Gediminas Kirdeikis
Views: 4,058
Rating: 4.9471364 out of 5
Keywords: form finding, blob, bleb, architecture, parametric, organic, flow, grasshopper, rhino, vray, animate, animation, render, section, architectural, arch, model, 3d, c#, tutorial, lecture, course, free
Id: u1DDXnNKdN0
Channel Id: undefined
Length: 47min 59sec (2879 seconds)
Published: Tue Jul 13 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.