Comparing Grasshopper and Dynamo!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] g'day there you're watching the Aussie Binh guru and today we're gonna be benchmarking grasshopper and dynamo cuz I've been looking at both programs during my career so far but especially grasshopper recently so we're gonna compare them as fairly as possible which is quite hard so essentially if you haven't seen grasshopper before I do have one video on my channel at the moment that covers the basics essentially it's a visual coding language which can achieve a lot of complex outcomes for example some highly complex geometry that respects a lot of mathematical functions there's a really strong community and there's a lot of support for it as well whereas dynamo is a very similar program in what it tries to do however it really is built in particular to work with Revit data and Revit objects specifically where as grasshoppers made to work within Rhino and doesn't read Revit elements so that's the key difference between them but I thought it's worth benchmarking their speed against each other just to show people how different they perform especially when dealing with geometry so it's also worth being aware about rhino insight Revit which is a new package for grasshopper which essentially allows rhino to work with in the Revit environment so you can take advantage of the speed of grasshoppers geometry engine within Revit itself in future I will be covering this on my channel probably hopefully in a month or two but there's a lot of stuff going around at the moment on YouTube about it so I definitely recommend checking it out so let's actually just compare them a little bit so I've actually already got runner and Revit open so I've got our rivet and dynamo and runner and grasshopper so let's just start with grasshopper to begin with so we're just going to make us a simple geometric function to compare the speed of how quickly you can change and either rate between the programs so we're just going to start by making a couple of control point based curves so I'm just going to create one and I'll create another one essentially we're gonna create a tunnel of aux between these two curves if anyone's followed my LinkedIn you'll have already seen that I sort of started benchmarking the programs using this technique so we're just gonna make a curve in grasshopper and we're gonna make another curve as well we're gonna set one of our curves to this and the other one of our curves to the other and essentially we want to divide these curves so I'm just going to create a number slider between two and we'll set it to 10 by default all the way up to 15,000 so we're going to really push the capabilities of these software we're going to divide these curves up to 15,000 times and then create an arc between them from there we need to divide our curves by this number so we'll take one of our curves divide it by this number I would use copy and paste over I'm finding that occasionally copy and paste doesn't work in grasshopper it responds to Rhino instead so that's why I'm not using some of those functions but essentially at this point we have a way of dividing these curves you can see obviously that we really quickly increase our density of curves it's maybe four now we might just make this 1,000 just so we can actually see the filigree of what we're doing so let's just set this to 10 and now okay what we need to do from there is actually create a by arc so essentially we're gonna be creating a set of by arcs between these so by arc node and essentially our by op is looking for a few things so it's looking for our start point of the by our end point and then it's looking for the tangent at the Biot which in this case is the z-axis so we're going to be creating some longest slicing functions and we're also going to be creating a vector in the unit set direction we're going to be reversing this for our normal and for each of our points we will be creating a vector in longest lasing and likewise looks like my copy paste function is working we'll be doing the same for this and essentially we're feeding in our points they're vectors points and they're vectors you can see at that point this doesn't quite work so we actually need to feed in the non reverse vector there we go and now we get a bye our katana it looks like my internet spades sort of impacting the performance of how this is graphically appearing but you can see at least there we go when I'm not panning around you can see how quickly this can update and it's not even struggling I'm going up to a thousand at the moment and it's not even chugging at all so again we'll just go back to maybe like 78 for now so let's go and do this in dynamo as well so we're going to set up the same function but just in a different program so I'm gonna have to create some model curves and I'll need to create them a little bit differently so we're gonna draw a spline as they call it and rub it and we're just going to create a few points again and we'll just do another one cool so we're gonna be getting some select model element nodes one really big difference that always throws me off is that in grasshopper you double-click to search in dynamo II you right click so I find I'm constantly doing that accidentally between the two programs now I'll go to manual mode as well it's really important to note that difference as well dynamo and grasshopper don't operate the same way so dynamo can go into manual mode quite easily whereas in grasshopper you need to change it a different setting in order to only run when you tell it to run but most people will run in automatic mode in in grasshopper typically okay so I'm just gonna just remake these in manual mode and I'll just disable my tool okay so I'm gonna select one curve and another curve one really big difference in dynamic as well is geometry preview so you actually can see your geometry within the dynamic environment so when I get element geometry which is another key difference Dynamo needs you to say I want the geometry of this element or as grasshopper just creates it automatically there are quite a lot of assumptions the grasshopper makes pretty much always correct assumptions as well at the moment ah I haven't run yet of course and there you go there's my curves within dynamo okay so at this point I need to divide my curve so let's go notice I keep I keep double-clicking to find things so let's try by curve and divisions so we've got a nerve curve at the moment or a spline so we'll take our curve and we'll create a number slider and we'll just do the same parameters for this zero a thousand and a step of one actually we nee through two let's just start it maybe forty seven and run okay interesting okay I need to do it but Donna my curve that's interesting asking me for an element curve I think I need to turn these into polylines potentially I know I need to split by parameter that's why so the way that you divide a spline in dynamo is quite different so what we need to do instead is create a slider which is gonna be the number of our divisions but then we need to create a sequence so the way that you divide is a little bit different in dynamo a little bit trickier so we're gonna create a range this will essentially make a set of divisions between 0 and 1 so these are going to be the points of parameters along the splines will feed in our parameters take our curve run our scripts and now you see we have our points instead so we split by parameter and then we get the start point of each of those segments so it's a lot more lengthy in order to work with this versus cross off of a day ago now we have this we can go on to automatic mode as well and now as we change this node points changing but note that I'm getting up to about 600 and it's already getting a lot slower it's already chugging so we can already note that there's already a fair bit of complication coming into a 3 dynamo working with geometry which is you know a little bit disappointing but you know to be expected because we're we're dealing with geometry here and rhino's geometry engine is much more powerful than rabbits what we'll do is just also feed in the same but to this curve so we're going to be loading it up twice as much now so now is that we're creating two sets of divided points still chugging quite a bit but still still keeping up at least it's it's almost giving us real-time feedback there's no hourglass loading for example so what we're gonna do then is we're gonna create that Z vector the same way we did before and then reverse it as well and hopefully you're doing this is a at home as well I recommend that you do just so you can really compare them and you can really feel the difference so we need to reverse the vector the same way we have in Java and essentially now we need to create an arc by start and by start and and tendencies so again we're gonna have our point and we're gonna have a vector and we'll have our second point and we'll have its vector and actually it looks like I might need to fix this one out so what we actually need to do is feed in the reverse for both there you go so now we have our tunnel essentially the same as what we had before so we could benchmark purely on this basis at this point but what I want to do is also manage some geometry preview notes to really set some more data in motion and really benchmark them based on this so we're gonna set a gradient depending on the length of the curves along the along the the by arc tunnel so we're gonna create a curve length node and I'll go back to grasshopper and do this in a sec as well so get the length of each curve which should be a number we're going to have to remap the range we can also flatten this first as well note that in grasshopper you can actually flatten outputs within the node body as well which is really nice so we're gonna remap our range to a number between 0 and 1 so we'll take our curve length and will bring that between 0 and 1 and this essentially so we can map this along a gradient range between 0 & 1 send out all those numbers should represent that range okay so what we need to do at this point is we need to create a color range which is a little bit harder than in in grasshopper so I'm just gonna get a couple of color nodes from Clockwerk so we just get color green color red and we'll get color blue I could write these colors natively using color by a RGB I'm just saving myself a little bit of time we're gonna create a list with these three colors just to create our color range so we'll go red green and blue and I'll go back and turn off some of my geometry previews in a second so we only see the colored version okay so what we need to do then is map this color range using list count and you'll notice how much easier this is going to be to do in grasshopper this this whole step this is why I'm doing it so well again we'll go to zero three one and we'll step add an increment of X just so we can create those three positions on the gradient map 0.5 and one after that we need to create a color range so we'll feed it in colors and indices and our values now we have a range of colors that will represent what override color for our geometry previews so we're going to do geometry color so by geometry color so our color will be these our geometry will be our curves and this should generate a set of color geometry so what I need to do is just go back and hide all of the non colored versions and there you go now you can see we have a color range that response based on these size so you can op see move these and dinamo should respond and pick up the change and you'll see it is and you'll see as the curves changing length the color will also change as well if I go back to the start I can also adjust the number of divisions along the tunnel but you'll notice it's already getting slower I can feel the chug the sliders not keeping up it's it's taking time to catch up with me so I'd say around maybe [Music] thousands is really the limit of what this can really handle without significantly slowing down let's go back to grasshopper and do the same set of operations so we're going to be taking a slightly different approach in what to do this but we are going to get the length of the curve first so I'm gonna get curve length same approach and we're gonna get the length of this curve or the byock notice everything's instantaneously happening there's no speed there's no slowdown I don't have to keep hitting run as well if I'm running in a like a manual mode I'm just working it on automatic here we're gonna do now is get a min Max and I've got this from a package called our header opera which we just find the minimum and the maximum item in a list so really straightforward no remapping required because we're going to be using a gradient in order to map our colors the same way we have in dynamo so pretty much all it needs is a set of values and a minimum and a maximum so we've got a minimum we've got our maximum and we just need our values now and that will create a range of gradient values and you see how quick that wall is compared to Donna there's a much more straightforward workflow I think because it's been around longer and that really taken the time to think about how easy these things should be so we're gonna get a a preview or a custom preview and we'll take geometry and we'll take our colors and done how quick was that but on top of that some of the components in grasshopper a much more insured if they have a lot more options so if I right-click this you can see I've got a lot of presets I can pick from already so it's not like I have to really custom map my gradient range if one of these already gets the job done so a lot easier to work with in my opinion what we can do is just turn off the preview of our buyer because now we can see our custom preview in color note that the custom preview is obviously within rhino it's not like in dynamo where it only occurs within the rabbit when the colors occur so that's a little bit more dynamic but essentially that's it that was like 10 seconds Huracan versus a couple of minutes and let's just start cranking this up as well and see if it gets any slower up it goes it's really not really slowing down at all so let's get a little bit shaky let's um really push our values up now so we'll go back to 15,000 now let's just get going and see how it goes and it's still going slowing down a little bit now but it's pretty much keeping up it's still almost in real time and not really a challenge for it let's go to dynamo and as you can expect this is probably not gonna work as well so we got a 15,000 I'm sorry dynamo you're gonna hate me for this I must have started dragging already it just does not want to do it you can see it's spinning it's really struggling it may crash possibly but it will get there in the end all right we got two about eight and a half thousand it's still thinking still spinning and still spinning it got there you can also see type and explicit results which will be a little bit faster so let's just go straight to 15,000 you can see that I'm already not responding it looks like it's gonna really struggle to get there it will get there it did but it really struggled so I think in terms of benchmarking them based on just a little example like this you can see the power of the Rhino engine is really adding a lot of performance to how we're able to work with geometry so if I go back to 5,000 done forgot about the 15,000 done it's very quick obviously grasshopper can't read Revit element data that is one thing that I still use Dynamo for a lot and obviously if you have to work with the in Revit then it's not as easy to work with grasshopper because you have to use Rhino inside it's a new tool to new workflow definitely look into it but hopefully this sort of helps show the relative speed differences between them just in a simple geometric exercise so I think it just really comes down to whether you're using geometry and complex generation workflows so such a generative design workflows for example versus just working directly with Revit I think that's the two reasons why you should use grasshopper or dynamo in my opinion you should learn both I think that they're both really valuable tools and I'm gonna be covering some videos on grasshopper for very practical use over maybe the next couple of weeks so there'll be a few dynamite videos next week and then after that I'll be doing a couple of weeks of grasshopper videos I'm still quite new to it but they're gonna be things that I've already started using grasshopper for at work so I think they'll really help you see practical use for grasshopper as well so hopefully that helps give you a better idea of the two platforms and how they measure up definitely haven't play with them yourselves see what you think leave any comments down below if you agree disagree on my assessments obviously that it's not the most fair assessment because the geometry engine is so much more powerful but that's really what I love about crossover so it's it's fair to me if you're not already following and subscribing feel free to do so I make videos about three to three times a week and plan to do so for a very long time long as I can and hopefully I'll see you in the next video thanks okay you
Info
Channel: Aussie BIM Guru
Views: 13,345
Rating: 4.8594251 out of 5
Keywords: aussie, bim, guru, cad, revit, dynamo, computational, tutorial, demonstration, how to, educational, grasshopper, rhino, script, benchmark, compare, comparison
Id: -rhRdmJ7tI8
Channel Id: undefined
Length: 19min 2sec (1142 seconds)
Published: Sun Oct 13 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.