Parametric Rope Bridge for Blender 3.0 - Geometry Nodes Tutorial

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
welcome to another geometry nose tutorial in this one we will be making a rope bridge i just want to go ahead and say huge thank you to jacob from inline vfx for kind of challenging me to make this really fun little exercise and also very useful so definitely go check out his channel linked in the description down below so working in 3.0 alpha make sure that you're in 3.0 alpha or higher right if three has been released and let's jump into geometry notes so first of all we need to add an object to contain our bridge so let's just rename this one to rope bridge and let's create a geometry knows tree in here and again i will call this one rope bridge now the reason i'm naming the geometry knows tree itself is because this is going to be a tool that you can use to append to other scenes where you need a geometry nodes uh sorry where you need a procedural rope bridge or something similar so when you append this you will append this as right bridge or you know you can right click on stuff and mark it as an asset and then when you use the asset browser within blender you'll be able to pick up the rope bridge asset and it will be your procedural bridge making tool if you're interested in the rope bridge that we will make today then i will leave a link down in the description to a gumroad listing i will share on gumroad cool okay so rope bridge first things first i do not need the plane what we're going to be doing is we're going to be creating a parabola at the moment there are no curved primitive nodes that will allow us to do this conveniently so we're just going to do the longhand method which is still very easy so let's grab a line node we've got my shortcuts on the 3d viewport there so right now we just have a line we need to do a bunch of stuff to it so the way that we can draw a curve the way that we're going to be doing it is with two control points like so and from these two which we will use empties for we're going to create a sort of a midpoint that we are going to pull down right so we're going to create a third point now to make a parabola the best way is basically to create a line like this create a line like this and then from each point we can basically connect it so if you think of this as being cut into a few points like so if i was to connect each one of these so zero to zero one goes to one two is two three goes to three four goes to four and you can see that you're starting to get that kind of curve shape in there this is logically the process that we will be going through but very simply we will just be using mixed nodes so we get our line so that we can get an index so let's just do that attribute separate xyz come in here like this and we're going to take our position and we're going to output index and then i want to convert this into a factor so let's also just grab a math node that should be math node and we want to divide our index that can output back here and we're going to output this so we divide this by float value which needs to be the count minus one so let's just bring in a value node here connect this and this and you can see if i have this not minus one then our fact doesn't actually reach one so that's why we need to add the utility math node to this and so let's do subtract one and there we go now you can see our fact values go from zero all the way up to one properly which means that we can use it as a value range um so it is a factor range for our mix factors so that's super important uh also this count will automatically read our inputs as an integer because it's an integer socket and so just to make sure nothing gets out of sync let's floor this one here and that will do the same as make it an integer essentially so this will always remain zero to one the next thing i wanna do is actually add my end point so i need some empties add an empty sphere let's just grab two of these come back to our bridge and i will drag these in directly and we need to set both of these to relative so that just make sure that everything is being compared against the origin of our object even when we move our object right these two points i need to take the average of them to get the middle and then i need to subtract something from the z to make it move down a little bit vector math node add these two together so join and join and then i want to scale this by 0.5 because we have two inputs so divide by two it's faster computationally faster to scale by 0.5 than to divide by two so always use multiplication if possible so now what i need to do is actually subtract something from the z subtract and i'm going to use a vector combine xyz and another input value node so this now becomes my kind of my sag value uh there we go i renamed this one to sag recolor it just so i don't lose track of what's going where so now i have my point a which is the start of my bridge my point b which is the middle of my bridge and my point c which is the end of my bridge now we can do the fun part which is actually make our curve so with the help of an attribute mix node we can actually do this quite quickly need to make a little bit more space the nodes we're really interested in here so an attribute mix going to change my factor to an attribute and we're going to use the fact attribute that we calculated and the reason for this is that basically each point along this needs a different value basically it needs to be mapped to a different part of the interpolation so if i was to now grab two vectors and i was to go from point a to my midpoint b but if i write this to position then you'll see that we're going from one end here to our sag sorry for the center point if i change my sag value then it moves down and it's pointing as well straight towards the other empty so you can kind of get an idea of what's going on there but another one and this time we're going to go from the middle to the end like so then you can see what's going on there now we have the first a to b and we have b to c so i'm actually just going to rename these ones a b b c and then we need a third mix which is going to take the fact again it's very important and we're going to change these to attributes this time a b b c position and there we go now what we have is simply a curve this an original value node here allows us to control the resolution of this first sort of iteration of our curve so we're going to be we're going to be tweaking it and using it for a whole bunch of different things but this is like our initial curve that we use the next thing i want to do is i want to actually create some planks so let's add a new collection let's call it planks i definitely recommend that you use collections to instance things even if you only end up using one object it's just as easy to set it up in our collection but it does give you the opportunity to use multiple objects so in the case of the planks here i might make five or six different planks and they'll all have different textures different you know different states of decay and it basically just makes it a little bit easier to work with something which i'm going to do a few times here when i make something is i'm going to make sure it has a kind of a relevant dimension so for planks that would be the width of one meter or just over one meter basically means that when i later on multiply or change the scale of my instance the amount that i'm changing it by kind of makes sense in real-world scale i've just added a cube let's change the dimensions of this so we're going to go 1.1 so just over 1 in the x um in y we're going to go 0.2 and in z we're going to go .04 there we go so now we have this nice little plank apply rotation and scale that's always important and i can hide that collection going back up to our rope bridge let's just instance that so point instance collection turn off whole collection there we go doing those planks so right now it doesn't look great and that is because they don't point in the right direction you know if we go to top view and i move these around it's not really doing anything useful for us and also they don't follow the direction of the curve there's two things i want to be able to do but how do we go about doing it well we do now have some curve nodes which will help us so the one that we want actually is curve to point but right now we have a mesh object right this attribute mix is outputting a mesh object as we can see in the outliner so in the spreadsheet so i need to convert it to a curve so i can convert it to the points i know it's a little bit confusing but let's just do that so grab a curve mesh to curve and then we can do a curve curve to points so now it's just points and this one's great because we can change it from count to evaluated which uses the original points from the the input curve count is evenly spaced and gives you the certain number that you choose or the one that we want is length and this is because uh well we have a certain number of planks i know they're 200mm wide so i want 300 mil centers so there's a bit of a gap in between right so i can just set the length in between each point to be 0.3 so now if we look at the point instance wow it's much better so this already sorts out a lot of our rotational issues however we do still have some other rotational issues right it's pointing up in the middle so we've got to do some rotation now another thing that this curve to points node does is it outputs a whole load of additional curve based evaluation so this is like our analytical node for curves and it will output radius tilt resolution tangent normal and rotation and this is super important because uh we want the tangent so the tangent is basically if you have a circle like this empty the tangent is like the line that comes past it here right we want to align our planks to the tangent of the curve so point align rotation to vector and they're pointing in the y direction to the attribute tangent and there we go that is how you can align very quickly things to the curve and as well everything is still working swimmingly so the planks are not finished but we will be coming back to them a little bit later ctrl j planks now the next thing i want to work on is the ropes and we're going to be making a bunch of ropes basically just a few things that we need to do to make sure that when we make them it makes sense what we're doing first thing i want to do is i want to make sure that if i just join these two together so i have my curve at the bottom and the planks on top if i move my curve with a transform so i want to move it horizontally on here right so i want to move in the x direction is that correct no this transform is moving in the world x if our bridge is rotated then it just doesn't work it just doesn't work basically so we actually need to be moving it specifically perpendicular to the bridge and there is actually a way for us to do this without too much trouble if we basically find where our empties were and i'm just going to take this add node ctrl shift d to duplicate it with the inputs and i'm going to change it to subtract so now this vector math node will be the direction and magnitude so the vector from one point to another and i then want to do a little bit of maths so let's take a separate x y z a combine x y z and i want to plug my x into the y my y into the x so that's the first thing and then i want to grab a utility math node and on the x here i want to multiply this by minus 1. trying to think of a good way to explain why i'm doing this if i just add a plane okay so we have two lines which we know to be at right angles to one another um this one on the left this one goes across not very much so this is our x and it goes up by a lot right now we know these two sides are exactly the same so these triangles should be the same right so this one goes a lot along like this and then down so this is the important factor our y becomes our y right so this is positive going in this direction and this one is in positive going in this direction as well and our x positive going in this direction however when it becomes this side over here you can see it's actually going in a negative direction i don't know if that explains it very well but essentially this is how you can find the perpendicular vector quite easily with maths without doing too much like computational stuff we're basically just taking the inverse of the x becomes y and just the y becomes x so now what i can do is i can plug this into my translation i mean we have another issue that we need to solve here because it basically is the same distance away as our empties are but is at least moving perpendicular and remaining perpendicular to our bridge object so what we want to do first of all is we want to normalize the vector which means to give it a magnitude of one and there's a function for this it's just called normalize quite simple so now our vector has a size of one regardless of how big or small this is so that's fixed that problem and then i also want to scale this and if i scale this then you can see that actually changes the distance let's add another input value call this one width so this is why i made sure that the planks had a like a one meter horizontal distance because when i set up my width here you can see that i will be able to change the scale of the planks according to my width and it will make sense so for a width of one i only actually need to translate this by 0.5 it's just that there will be another one going 0.5 in the other direction so if i want my width to be 1 then i actually need to half or you know times by 0.5 my width value before it goes into that scale so something like this is fine just ctrl h on that transform node just to collapse it ctrl shift d to duplicate and i'm going to take another scale node join those up like that set my scale to minus one so this is going to invert and this is going to be my vector for the top one the bottom one inverted becomes the vector for the top one super useful just because it means that i have one control for my width and it fixes both of them there we go so now you can see we have a rope on both sides or at least we have a curve on both sides and let's just remove the planks for now just while we're working on this next thing i want to do is i want to make some sort of ragtag ropes that are hanging down looking a little bit dilapidated so i'm just going to take this join geometry which is both my sides and i'm going to add an attribute randomize i'm going to add a vector to the position and we're going from minus 0.1 to positive 0.1 so it's not like a significant distance but it is enough to make it look like there's a second rope there i'm just going to increase the number on here something like 32 that's probably fine and this just means that there's enough kind of resolution going on i want to make sure that my negative my minimum z is a little bit lower just to make it look like it's hanging um and i'm going to make my positive zed just a bit higher as well something like that looks pretty good to me i'm literally just going to duplicate this down so it's exactly the same and i'm going to change the seed so now you can see we have a few and then i'm also just going to subdivide this to make it smoother some mesh subdivision surface and just give it a few of those and that looks much better cool okay next up hand rails or hand ropes i suppose i should say going to take the same clean ropes here and we're just going to add an attribute vector math node i'm going to chuck this on here and i'm just going to literally add a vector to the z height vector combine x y z i'm not looking at the x or the y i'm just doing the z so i can take another one of these hand height let's call it hand for now this goes into the z and normal height for handrails is 900 millimeters and um if it's like a balcony edge then it would be like 1.1 meter so i'm just going to go with 1.1 because it's a bridge you don't want people falling off it i'm just going to join this on to here as well so these are just the hands so now we have the top and the bottom and what i want is some little zigzags to join these together now in an ideal world and indeed the future world we would just take the bottom points from our bottom rope top points from our hand rope and use these as start end points for line segments however uh with geometry nodes in its current state this is not possible so we're going to do something a little bit ingenious going to take our clean ropes once again and if you've watched my bricks tutorial if you've watched the herringbone tutorial or the fabric tutorial then you'll have seen me do this a few times we're going to modulate at two and then greater than one are we no we're only going to modulate two so you would use a greater than one if you're using gradients as we do often in shaders however in this case because we can use the index which is going to give us every alternate point we can literally just set this to be modulating at two because then it'll just be zero one zero one zero one and then we can use it with a uh a mix use it as a mix factor probably easier if i just show you so we're gonna take the index output to let's call this one alt for alternating float two so modulating at two if i come across to where this is we can see that we have alt zero one zero one zero one zero one zero one and so on so we can now use this as the factor so attribute mix we basically wanna be doing the same as we were before so if i add my handrail height to the position so position output position and b is going to be a factor which is literally just the same literally the same one that i used before so now you can see if i change my factor between 0 and 1 we go from foot height to hand height which is great however if we don't set this to a constant if we set it instead to an attribute like alt now you get zigzags where the first one is at foot height second one is that hand height and so on great i do not want to plug this into here because it will get subdivided and we don't want that i would just like this to be joined afterwards now we have all of our ropes next thing that we need to do is actually just add a profile so again this is thanks to our new curve nodes we can just go curve mesh to curve curve curve to mesh however when we come back to being a mesh we can add a profile curve so in this case i'm just going to add a mesh primitive circle and it's tempting to just add this directly and just be like i don't understand why this circle doesn't work but it's because this is a mesh object when we get curved primitive nodes then it will um you would just use the curve primitive node instead of the mesh primitive okay let's go back into solid view i'm gonna reduce this down to eight just to make sure it's a little bit neater and ropes are around about an inch across for a thick rope so 0.025 and there we go so this is looking pretty good so far however these zigzags you can see are super narrow and this is quite simply just because there's a circle at the top there and there's a circle at the bottom there and this like diagonal because of the way it's being skewed it's super narrow so what we want to do is actually we want to subdivide the mesh so that we get some circles that are perpendicular to it down its length like so not subdivision surface because that will actually change where the points are we just want to do a mesh subdivide and drop down here so you can see that's already a bit better three or four is fine depending on how many you want it so another really cool thing that we can do now is actually add knots uh completely optional of course it doesn't matter if you do this or not depends whether it can be close to the object or not or not let's add a new collection for knots and i would recommend you don't already have it enabled turn on the add mesh extra objects add-on this is a superuseful add-on gives you a bunch of stuff like taurus objects so we can add a tourist knot and um this is pretty cool however it doesn't have a lot of setting so you can change the resolution and uh and you can change not types oh some of these are very fancy i'm just going to go with this first one the three all we have is location and rotation so for some of you you might be thinking wow well this is way too thin but we can just go into edit mode here and go alt s and this will allow you to scale it up something like that maybe even a bit more and then i might just subdivide like that and smooth great let's make it a lot smaller so i've rotated it to upright as well and i'm just putting on there so let's disable this collection now all i want to do is i would like to instance these knots so add a point instance node and we're going to instance it on before that subdivide on our zigzag so basically it's going to be at the bottom and at the top and then at the bottom and at the top and so on so collection turn a full collection do the knots so that's looking pretty promising as we rotate this the knots don't rotate with the bridge as standard we know how to make them rotate because it's what we did with the planks so let's take our mesh to curve curve to points and a line rotation and i'm literally just going to d duplicate it shift d alt p to remove from the frame bring it up here and i'm going to just stick it in before the instance like that now way too many knots why is this happened it's because our length here oh sorry our curved points is being evaluated on length and we just want it to be on the original evaluated points of the actual mesh so now it looks like it's all tied together nicely cool let's just add a quick bit of randomization to those knots so that should be randomized i'm just going to leave it as a float set this to scale and we're going from point eight to one point two point eight one point just gives us a little bit of variation on that let's frame this ctrl j knots let's go back to our planks for now we've got a few things that we need to do to them first things first is i want to do some rotation and some scaling just basically add some randomization here so after our align rotation stuff and taking into account the width of our boards uh so the first thing i want to do basically attribute fill let's make a scale attribute here going to set this one to vector going to call this one on the scale and let's add a vector combine xyz just on here so let's set these all to one to begin with and then the x is our width is that right yeah so we can just set our width value in here into here like so and now you can see as we increase the width we also increase the width of our planks which is super useful and then what i want to do is i actually want to randomize the scale so i want to take another attribute randomize and i'm going to change this one to vector change it to scale and instead of replace create we're going to set this to add generally if i'm doing scale i will have it set to add instead of multiply so we want to be adding between minus point two to positive point two looking pretty good so far and then the next thing i wanna do is uh randomize the rotation so i'm literally just going to take rotation and again we've got this set to add so it's not changing it's not like redefining the rotation you can see as we rotate this around it's still working correctly but this is also too much so let's go minus 0.1 to positive 0.1 in all axes and that just gives it a little bit of and danger feels like it's falling to pieces more things we want to do more i want to remove random boards that's the first thing uh just to make it feel like it's really falling into pieces so let's add a attribute randomize we're going to create a random number i'm going to just call this one missing because it's you know missing boards literally just a value zero to one for each board and then we're gonna go attribute compare and we're taking missing finding out when it's greater than a float and we output this one to missing again and then let's use a point separate node geometry two importantly geometry two that's missing and now you can see if i increase the amount that we're missing between zero and one we get more or less boards missing if this was a bridge which it is it would need to be tied to something at the ends at the moment these hand ropes are just floating in space obviously kind of problematic because there's um physics in real life so let's make sure that we have some space for peers right so there's going to be a block here and a block here right at the end and currently we have a board at each end so i want to remove the first and the last board we've already done a lot of stuff to our bridge however we still have things like the index and the factor and i know that my first board has a factor of zero and my final board has a factor of one which means that we can basically just say where does it equal either zero or one and then separate those points don't put boards there so it sounds maybe a little bit complex but let's just throw this together i'm just going to do attribute compare and we're going to say where does it equal so where does the factor the fact attribute equal 0.5 you might be like why 0.5 is not 0 or 1 but we have this threshold so if i set my threshold to 0.499 then it basically means that anything with anything which is outside the range of 0.001 to 0.999 anything outside that range is going to be a zero so let's just chuck it like this and there we go no more first or last boards and now we can use this same method to sort out our peers so let's make another collection here there we go and i'm going to be adding just a placeholder for this one so just like i did with the planks i'm going to make sure that we are starting with a height of one right so that i know that my scale when i set my hand height i can basically just multiply my peers by the height of the handrails and that will work accordingly just give me a little bit of buffer i'm also going to make sure that my top is a little bit higher for example if i have a hand height of like 1.5 i don't want the top of my pier to be exactly where the rope goes into it i want it to be like 1.6 or 1.7 or something and then equally for the bottoms if you've ever played a game where you see a tree on a steep slope and you can like see the bottom of the asset so just make sure you drop this down a little bit and it will uh help it will just make sure that the if you're on rough ground with your bridge your bridge piers are going to stay in the ground basically so it now just looks like a bit of a pier at the end of this video i'll do like a proper scene and i will make actual planks and piers and things so these are just placeholders for now uh but yeah importantly make sure it's one meter going back to our rope bridge looking pretty cool so far i want to find the ends of the side ropes so we can take our clean ropes here and we can literally take our attribute compare and point separate node here shift d alt p that just brings it out of the um out of the frame join this up like this now we can have a look geometry one is our end points this is all we need we can just grab a point instance collection whole collection turn off so this appears you have yourself some lovely peers there is still actually a little issue here you may be able to expect what's going to happen if i rotate this around the position of our peers moves but appears themselves do not rotate so i'm actually just duplicating these notes so curve to mesh curve to points align rotation to vector shift d alt p and we need to put this before the point separate because it won't be useful as a match you won't have any tangent information and uh have a little issue half of the rotation is fixed because we can now move these around however the piers fall over that's not the sign of a strong bridge we need actually another align rotation because if i change any of these it actually just confuses it and if i try to like lock the z axis it also breaks um so let's just take another align rotation to axes to vector sorry and we're going to take the z i'm just going to leave my pivot i'm going to set my vector to a vector and literally just 0 0 1 is fine for that because these will now point straight up and they will rotate properly so we fix the pointing up in the z direction and we've fixed the x and y rotation as well now we can talk about the scaling so these always need to be the same height as the handrail so let's make sure that we have our scaling going on so let's grab an attribute fill node and we'll set this to scale change float to vector and we're just going to grab a vector combine xyz plug this in like so and where are our hand heights hands are over here so this goes into our z axis like this x and y gets one so now you can see if i change my handrail height these get stretched in the z axis you can see the bottom's going down that's just because we did that extension below x and y is one said is hand height and the next thing is we're going to randomize it so let's add a random vector minus 0.2 to positive 0.2 there we go that's just enough to get things a little bit more interesting and then i'm just going to give this a tiny little bit of rotation as well so add to the rotation and we're not going to do much to this actually so very small minus 0.05 to 0.05 just gives it a little bit of a little bit of freedom there we go so this is the peers completed let's just group all of these together frame them up ctrl j okay so how's this all looking together pretty good is there anything else we still need to add yes there is there's one more thing that i want to make sure that we address and that is this stretching so while we get enough boards in the middle enough planks our stretching here is actually caused by our original inputs so i need to make sure that this gets proper treatment and to do this what we need to do is control this value by the distance in between my two empties nice and easy to do let's just grab these leave those points where they were and let's grab a vector math node here distance and i can plug this into here and into here it's still a little bit wide i think what i'm going to do actually so these zigzags should really be per board i think or maybe for two boards so what i'm going to do is i'm going to if i set this to divide right so if i divide my distance by a smaller value you get higher points right so if you divide by 0.5 it's like doubling it um and the reason i'm using divide here instead of just multiplying is because this is now my distance in between points and what this means is i can come in over here where i'm setting the distance in between my boards and i can set this with a value so input value node set this up like so 0.3 was what we were going with and i can also bring this up here drop it in to that divide and let's just make sure that we have every other board is supported by one of these zig-zagging ropes spacing there we go and let's make that red just so i know to come back to it when we do our grouping so i mean this is more or less done you know this is like the bridge there is actually one more thing that we need to add to the nodes just uh before we do the group inputs and that is materials so let's just make a material for the ropes because everything else all of the planks and the piers and the knots they're going to bring their own materials as instances and the rope is actually being generated by the note tree so you can see i've just put a material on here material ropes and um nada nothing's changed so let's come up to our ropes which is this section here and i'm going to add a new material assign node change that to ropes and there you go that has fixed all of our rope problems now we just need to go around with our group input and make sure that we're connecting stuff up in a useful manner so let's make a little bit of space so you can see the modifier here we want this to be a tool that is useful and reusable importantly first up let's remove our geometry input just don't like having extras and i'm going to plug these into our empties so let's rename these start and end let's just start off with here this for um spacing so let's go point three in here join this up and let's rename this one spacing next let's hit sag and there we go after the sag i'm going to add the width and the hand height so width and i might just move this one up a little bit here up in the stack so width is going to be from default value of two minimum of zero up to maximum of infinity just depends whatever you want next one's going to be the height here so let's join this one up there we go default is going to be 1 and minimum is going to be 0. what other controls do we need well we have these missing ones and this missing range for our bridges these go from zero to one so we only really need a slider for this so let's grab a slider off our align rotation node and then remove that because we don't actually want to be selecting that align rotation we just want the slider now we're going to connect that up to my greater than here set this to missing planks and you know you could add loads of things for like the randomization amount or anything you want to change you can set up your system to do that oh of course so we need all of our collections right so this one we've got a collection for planks we have our collection for peers and we have our collection for knots and finally our rope material we need to stick a random seed on the front so there's a lot of stuff which actually needs connecting up to a random seed and i'm literally just going to find everything that i can that has a random seed and i'm going to connect it starting at the top we have this point instance for our collection and we also have an attribute randomized so let's join both of these up and we have two attribute randomizers here these ones are a bit special because these ones do our um our kind of scratchy ropes underneath so i need these to have a different seed if they're the same then it looks like only one rope so i'm literally just going to go in here and add a random value so we've got our attribute randomized for the peers we've got two of these so let's connect these up to the seed as well as the the actual point instance itself and on our bottom row here join up our randomized nodes and the seed on the point instance there we are last one we have finally got a bridge and i can set this and it makes everything a little bit cool a little bit jaunty so if i want to make a second bridge i can just select everything and duplicate it anywhere right i can move things around because it's separate i can change the sag on this one i can change the seed i can set how many planks it has and i can even if i just duplicate the bridge and one end i can make it so that the original end stays the same so let's shift d and you can see that it has maintained that one middle connection so that's pretty cool huh you could do a lot of stuff with this awesome okay so for the rest of this video i'm just gonna make a scene and see if i can do some cute stuff make some proper planks and knots and piers and things and actually texture it as well stick in some shaders but it's just a demonstration from here or now check the links in the description if you're interested in getting this as a tool like my finished one once i've done a bit more to it and um hopefully this was fun hopefully you learned something enjoy playing with geometry notes there's so much more that we can do with it than we've already seen and the devs are hard at work making all of these new tools and notes so check it out make sure you've got the latest builds i'll see you later have fun and enjoy geometry notes [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] so [Music] [Music] [Music] [Music] [Music] you
Info
Channel: Erindale
Views: 40,190
Rating: 4.978601 out of 5
Keywords: blender, beginner, material, nodes, shader editor, introduction, tutorial, Blender 2.8, blender tutorial, blender eevee, blender enviornment, blender easy, blender easy tutorial, blender cycles, intro to blender, blender 3d, b3d, learn, free, concept art, parametric, computational, design, rope bridge, geometry nodes
Id: 9Y_lMMsFeXg
Channel Id: undefined
Length: 45min 18sec (2718 seconds)
Published: Fri Jun 25 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.