Grasshopper webinar - Data Trees - March 29, 2020

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello everybody thanks for being here just a few second I don't know how are you nice to have you back okay just few seconds I'm just finishing setting you everything up let me also close the windows before we start we should have just lied but actually it's not showing up but anyway doesn't matter hello hello from Turkey nice to have you here yeah Carly's from Costa Rica oh I I was going to be in Costa Rica just a week ago but you know due to coronavirus everything was canceled so well actually not canceled she just we just moved I don't know yet in which dates the events will happen but anyway just stay in touch Kali's hello hello from Greece hello John how are you robbing sound no from Greece that nice to have you here everybody it's going to be crowded also today there have been many last-minute registrations happening yeah postponed not canceled yeah exactly exactly it was postponed in Costa Rica hopefully as soon as this emergency situation ends we will be scheduling new new dates wanna see no way nice to have you here what a surprise our cinema is is that you friend of mine jpgs mrs. grose a okay so today we are going to talk about data trees in grasshopper as you know it's well the charcoal just the fact that you are here and you are interested in in data structure it means that I don't have to explain basically the importance of this particular thing carmine come stai come on over Capello a lefty any custom awareness aware so we can we watch it after yeah yeah the webinar will be it is being recorded actually it will be available as a replay session online for about 70 to 72 hours in this same platform you would have received the links in just well I don't know exactly how much time will be after the session closest but I will punish myself the video on my youtube channel so yeah it will be available for for you to review it well basically whenever you want okay so it would be available online forever basic oh and unless YouTube crashes and and of course that would be a but anyway you were so so I was saying it the fact that you are here means that you already know the importance of data trees in grasshopper actually I think that well this is my personal opinion but data data manipulation is it's the key to to achieve whatever kind of research you you might want to in grasshopper so besides plugins and scripting and so on if you don't understand clearly how data trees work well actually have a data manipulation in general works then you are going to be in problems okay and eventually your workflow will stop even before using any type of plugins so today what we are going to do is going to well I'm not this fancy a demonstration guys I think you already know it if you have seen any of my videos or tutorial so I would not be presenting some fancy 3d models or fancy structures or whatever I will focus on the way that data tree is function because data trees work sorry because I think it's it's more important that you understand how to deal with other trees so that you can use them in any application okay well actually a few words on this platform here that that we are using well many of you were already present yesterday at the webinar on on textile simulation with kangaroo but let me quickly go through the features of this platform I see that or someone already raised the hand so Francesco sorry that I will not allow you to speak in this moment I prefer you concentrate on the the explanation here and then you just save your questions for the Q&A session that will happen probably in the last 20 minutes okay I will from time to time I will switch back to the chat session here that we have in this window just to see if everything is okay and to say reply to the more relevant questions [Music] eventually today we are going to use probably some functions for from some plugins but I'm not completely sure so there is no need to work with plugins in order to understand the importance of order the way that data trees works so you can simply concentrate on the on the webinar itself and another thing another quick introduction because at this webinar as well as the other one on on kangaroo textile simulation is part of a series of events that I am organizing so there would be more actually yesterday here in Mexico they started to announce that these quarantine would last at least one more month so and and I think they are being really super super optimistic in this in this moment but so there will be plenty of time to organize other things and to keep us well let's say meaningfully entertained okay so I think it's it's a situation in it you know crisis is its opportunity so I think this is an opportunity for us to improve ourselves and to invest on on ourselves so I am organizing these webinars the other webinar which will have a second session next Saturday the one or on Kangaroo the textile simulation so if you miss missed last session I will be sure in sharing the link to the rig replay so you can let's say view the first session and then you can take part into the the second session happening next Saturday there is also a special bundle of grasshoppers video courses so you can buy this bundle on my on my website I will be sharing the link as well at the end of this session or I think if you already received it in in the webinar email that you got in your mailbox today I'm going to share with you another thing which is basically you see there is this offer here that I am sharing right now this is basically if you are here in Mexico you can buy my book directly with me because I have very few copies you see that I only I'm only making five units available right now but only if you will live in Mexico so it's the Spanish edition while if you if you are not here in Mexico or and you want the English version you can find it on amazon.com or amazon.com tree you are okay and and there is also another offer that I will share with you which is basically related with kangaroo so there is a kangaroo online course that I am organizing for let's say in a couple of weeks it should start in a couple of weeks so if you're interested I will share with you these this other offer these you can see this offer ends in in basically in a few hours okay but basically there is a code that you can use if you're in Mexico so with this code you get a discount while during the checkout process okay so just I'm going to take this code here and copy paste it in the chat window so in case you're in Mexico and you're interested and here it is and you can use it on my website many people yesterday asked how can we stay in touch in for your your channels so well I'm going to just open the mine in my web page here yeah so you will see that all my contacts and social networks and whatever they are all on my web page and soon after this I will be switching to Rhino grasshopper and start the this session if there is any preliminary questions that you might want to ask this is the moment and then Google start with with the webinar in the meantime let me show you that here on top of my my website you can find a phone number an email address and then there is Facebook Twitter Linkedin Behance and an Instagram YouTube and also what's up but if you have this number you can just write a message to this number so yeah basically okay I see there is no questions for now so I would just close everything and switch to to Rhino normally what I do is I work with with brand new grasshopper definition started from scratch but today I've prepared a this script here which by the way it's it would be available at the end of this session so you will have it available in this webinar platform but I strongly encourage you and invite you to work with me if you have the possibility if you have not know two two monitors or whatever setup you might have in order to follow the webinar with as as if it was a practic session okay and here is the thing I like to work with with well let's say examples okay so this is a cute example that it came to my mind yesterday so in order to understand that at least the more important thing is what about the other trees is to understand how data is is sorted inside a the the data set and what are the consequences of values being ordered or sorted in particular ways okay so let's say that I said we are a being in Europe and we own well I own this 100 euros bill okay and one other euros means I am rich okay and then I want to share these my richness with you okay so let's say that you are 100 participants okay and actually you are sorted you are contained inside one list okay so you see the classical quality this rectangle represents a grasshopper panel so something like this okay and inside this panel you only have one group with 100 people okay so all of you as you see that this list is called simply one okay so inside one there is say user number one number two or three for up to 100 okay what happens is this case if I give you 100 euros well 100 euros means I will be poor because I don't have I no longer have 100 euros but also you will be poor because you will receive 100 euros and you will have to split these sweetness between all of you so each one of you is going to get one Europe okay so this is the effect of working with a list practically but if you have a dream you have several possibilities so for example let's say that you are contained in in a data tree structure where each of you is part of one group so let's say the tree number one contains a group number one group number two group number three up to block number 100 each containing one only person okay so in this case if I give 100 bill to this data structure each of these guys here will receive 100 euros okay so I will be bankrupt basically and you all will be rich okay well there are other possibilities like having a data tree where the data 3 is 1 and each group contains two guys two people okay so in this case for example if I give one other units to this data tree here each group will receive 100 euros okay so you would be a little less poor and I will be absolutely poor as well so okay so here you have a scheme so you can understand what's the effect of inter interaction between one value which is the 100 euros and a list and two different types of data tree now we are going to explain this with a real Rhino grasshopper values okay so that this was just to give you a quick glimpse of on the differences that you have when working with the lists and different types of data tree but we are going to into detail to understand how basically some well very actually very few of the functions that are contained in the set toolbar work so I always say to my students that when you work with grasshopper the more important toolbars that you have available in red ocher are the math set m vector okay so all the rest is just basically working with geometry transformation or plugins okay but if you if you go very deep in the math set and vector2 but then you are let's say you are white at at least 60% of grasshopper potential okay so let's concentrate on the sex to power many of the things that we will do will focus on on some very few of these components actually in this webinar so I also remind you that there is a data to it video course on my website in case you're interested so basically we're by the way in that video course you will have an explanation for each and every components every function that you have in this tool bar okay so let's switch to the important things the important things with when dealing with data structure are these okay when you work with grasshopper you can create basically three types of interactions between data so for example when I say interaction it means like for example piece you plug wires into a function and then values flowing through this wire and reaching start point for example interact with values flowing through this wire and which in the endpoints okay so this interaction here is what I'm talking about and there are three scenarios first one is an interaction between one value and one value okay so this is okay this is very simple and and this normally that doesn't produce any problem okay then there is the interaction one-to-many and this is also okay we are we are going to show this in a while okay the potentially one interaction happens when you have many with many values interacting inside one single function okay and we are going to understand why and how to solve this kind of of situations so just keep in mind that basically this translates into having let's say single simple wires flowing inside one function so if you have simple wire and simple wire it means you are creating a one-to-one interaction okay one-to-many means that at least one of these two wires is a double wire so it's it's a base transmitting a list of values in that case you will have an interaction between one and many so this is also okay and we are going to to understand how this work and then there is the many to many so many to many means that either you have lists and lists or you have three and lists or the inverse or you have three entry okay so in that case you will run into some problems or eventually you run into some problem it's not that whatever you connect to lists inside one function you necessarily run into problems okay but this is just potentially wrong so you must pay attention to when you plug this kind this kind of cables or wires okay so let's see how this translates with practical example so I have prepared this little scheme here where I have created a the different interaction between objects and in this case it's quite simple I'm going to to turn on the first scheme which is basically a one-to-one interaction so I have one start point one end point and this is the line that I'm creating so there is no other possible solution the interaction is very clear I have one value interacting with one vibe and the only possible solution is this single line okay then there is this one too many okay now this one too many is it's already interesting because actually we already said the disease okay there is no problem coming up from this interaction but how does this work this is this is important okay so we are already assisting to a standard behavior in grasshopper let me point it out using some panels so basically what we have here in this interaction is one single point on the left which is this one and five different points on the right okay so how does this interaction work a grasshopper usually easily works we are using a method which is called longest list okay so it means basically that the longest list between the two that are interacting determines the amount of results so in this case you see that we have a list at one point here and a list of five points here so the amount of lines that we come up from this interaction is going to be five because of the longest list okay so how does this work well basically it works like this grasshopper says well I take the longest list and determine the amount of results and the amount of results is generated by this type of interaction so I have interaction between data which have the same index okay so zero interacts with zero but then the second list has index number one two three and four while there is no one two three four here on the left so brass hopper uses the only available the value which is the zero so you have this interaction this interaction means this and this okay that's why you have a line starting from the same endpoint and reach in the five and separated endpoints on the upside okay and this principle here is always valid in grasshopper so everything that will happen when we will work with many to many interactions will always be driven by this longest list unless we say that we want to work with a different method okay so let's see what happens for example when we have many too many now this is the the scenario where everything works just fine okay so I told you that many to many is potentially wrong okay so this is the only situation where everything was just fine and it depends on one particular circumstance which is this many values here are the same amount of values that you have in the other many values here so we have five points and five points so if you have five and five of course the longest list method is actually creating one interaction per each index okay so there is no longer list basically in this situation so each value here will interact with the corresponding value of the other list okay so here we have the only let's say non-problematic scenario in this many-to-many interaction but there are many things that can happen in case so let's say that I have lists with a different amount of virus so like this one which only has three points and then there is this other one which has the famous five points that we are using so in this case the longest list method says that first value interacts with the first one second with the second one third with the third one but then there are three and four they don't have any corresponding values in in the left list and so grasshopper will use the the the last value of the shortest list and makes it interact with the remaining values of the longest list okay so you see that in this case that's the reason why we have this kind of interaction I am using lines because I can easily draw a scheme and you can see the correspondence between the result here and the result in the preview in wine okay but you can you produce whatever kind of of function instead of lines and endpoints okay and this will be exactly the behavior that we are going to obtain so these happen happens when you have lists with a different amount of values okay then there are other methods which are shortest leads for example so let's say that you have this amount of points back three and five but you don't want the longest least to determine the amount of interaction say I just want for example this connection here and this connection and this connection here and I don't want the diagonals for example so if I want to do this I need to tag grasshopper that is no it's not the longest least to determine the amount of lines is the shortest list and there is a function which is called eventually shortest list which basically dreams the remaining values of the longest list the values that have no correspondence with a short list okay so in this case for example if I turn on the preview you will see that shortest list is actually trimming the second list so the list be eliminating the two remaining points at the end okay but if you don't want the points if you don't want to get rid of the points at the end you can simply switch the and say you decide to work with dream star so you will have the last three values instead of the first three or you have interpolate so it just distributes the remaining points along the longest list okay and so what anyway whatever you might want to use for example the result is that you get connection only between the values of the longest piece that have some correspondence with values of the first list okay so this is short at least and then there is the well basically I call this the orgy of interaction okay you can see that everyone interacts with every anyone but with members of the same list okay so you have for example with cross reference you have this point interacting with all the points each of the points of the second list and then the second one and then the third one okay this is something that eventually well it's very unlikely that you are going to use cross reference in your daily practice because this is nice I have to admit this is a nice design imagine if you apply this to a more complex set of points for example you will get some very complex line structure okay but when it comes to let's say give this a physical output or or let's say some real life application well it becomes quite difficult to imagine something like this because you have overlapping lines and so on I always tell my students that if you for example go on Google and try to look for a grasshopper parametric design and go into the images results you will find fancy images all over the web but very few of them actually can become some real product at whatever scale you are working so I will just keep any particular application of the cross reference okay so these are basically the possibilities that we have and we are not considering data trees we are only considering lists or or single values okay in this scheme so what happens when we have data trees involved in our in our workflow so this is this is basically a simple creation of data trees in order to understand what's the interaction between two territories okay and also what's the interaction between many and with many values but when you have a mix of lists and and data trees instead of simply lists as we were discussing right now so what happens in this case I have two lists each containing five points okay so when we create a basic interaction we will have five lines connecting couple of points okay and then I'm using the graph tree I I'm sure you already know this this function I will not go into the very basics okay but this is actually creating a a territory from a list how well basically you can see it here it takes each of the values of the original list and place it inside one branch of the resulting data tree okay so we have a group of five points here and then here we have a group of five groups each one containing one point okay so the amount of values is not changing what is changing is the organization inside this at this data structure so this is the data tree data tree well you can use the term you are in order to understand why it's called basically tree so there is these three like representation of this data structure but I do recommend that you get used to the term viewer in this configuration okay so this is the useful setup for the panel viewer that the useful preview for the panel Muir the the preview that that shows you the actually the structure of the data inside this data tree okay not be the graphical representation this is just that's a fancy but it's not useful so what happens when we have a mega to main interaction which is involving data trees so what happens if I graphed for example the sec well the first set of points saw the points on the left and plug it in to start point so in this case what happens is like a cross right if you can recognize this scheme here why is a cross-reference because what happens in the start point is that is that there are always five points getting inside this input here but they I always say they are traveling separately from the others okay so start point is receiving one point at a time while end point is receiving five points together so let's say that line says okay I got the first point what I have on the other hand five points so I've connected the first point with the five coming in in the end point parameter okay and then it goes back to the start point at zero there is another point alone because it belongs to a different branch of the tree and then it connects that point we need the five on the right and then the third one and then the fourth one and then the fifth one will be connected each with the five points on the right so when you have this interaction here like many to many but with a territory involved and the list on the other side if you are lucky you get some meaningful result if not you will run into problems okay and we will discuss this later on with a practical exercise what happens if I graphed also the second input at the end point while everything goes back to normal because what happens in this case is that I get one point on the start point input and then I get end point will get one single point okay so I would be working basically we need to data tree since that point and end point which will pass each of these points to you one one by one to the line component okay so in this case line will receive the first point and of the first set and the first point of the second set and connect them together and then the second with the second sir with third so you can see that also when you have these let's say data tree with data tree interaction the the way that grasshopper used this complex data structure is the same as when it worked with lists so you can imagine a tree as a list of lists so the element of the territory is not the the value is the least so when you have five lists on the right on the left and five lists on the right the interaction would be between the first list and the first list second list and second list third put that list entered list or branch with branch okay the problem is what's inside each branch so if inside each branch you have one value and one value one value and one value we are going back to our okay situation of one to one okay so in this in the case there is absolutely no problem okay the problem starts to happen when you have different amounts of values inside one branch so let's say that zero zero on the left has for example three points and zero zero on the right has two points so in that case you will have the first layer of interaction will be list with list and the amount of list is going to be equal okay so there is no problem at this level but when you go deeper inside this branch you will have a branch with three points and a branch with two points in that case you will have a many-to-many interaction happening at the second layer of interaction and it will use the longest list because you will have three values here and two values here okay so these fees when problems start to happen so it depends on on the various levels that you have inside this particular data data structure okay not only the amount of branches if it's important of course but it's not the only thing that affects the interaction okay we will run into some problems later on so you will be fully aware of what I am what I'm talking about now few practical example what i'm doing here i'm creating a couple of off circles okay like this in order to understand the importance also of the way that values are sorted inside a branch or a territory oh by the way let me quickly skip here and see if we have the kangaroo offer well actually the kangaroo offer is yeah I will share it okay you're not though don't worry about that yeah later and then what about the graft Phyllis flatten to act as a cross reference you mean you could you graphically pretend an input B means this could know well actually I I do not recommend to create a a cross reference effect and let unless you are fully aware of what you are going to do okay so eventually our goal is not to create this kind of cross reference interaction eventually our goal will always always be to go back to a one-to-one interaction or to a one-to-many interaction and only use the many-to-many when we have two equivalent data structure on the two sides okay so it means that you have for example many too many in terms of lists means that you have two lists with the same amount of values and when you are dealing with with data trees it means that you have the same amount of branches with the same amount of values contained inside each branch okay so we always want to go back to the one-to-one interaction okay that's our goal not creating the cross-reference situation okay but yes if you want to be the province reference situation you just left one of the input and leave the other one as a list and you will get this kind of fancy interaction in this case what is the shortcut to disable to disable the components well actually you can do two things you can disable the preview with ctrl Q like this or you can deactivate the component like with control e okay the difference is that if you turn off the preview the component the function will still be working so it will pass data to the next function okay if you control E you deactivate the function so there would be no values flowing through these cables so you see everything gets orange okay so control Q is for the preview control e is to deactivate compare completely the function okay yeah so in this case I'm creating a couple of circles by the way this is an important things that I wanted to discuss in terms of of data structure or in in panels so if you want to create a couple of circles here you need to pass two values to the radius and you might want to create a panel and say we want to create a first circle with a radius of three and the second one with radius of five like this okay and then you exit the panel and you have these two values here and you plug it there and then the circle stays ok what do you want okay um the problem is that when you are inside one panel and then you click three this is a number okay but three enter this is a text so we are running two lines of text so if I type five this is no longer three and five s number this is one single text consisting in of two lines okay so if you want to convert these text into two separate values you will have to tell the panel that this is not a multi-line data it's just two data's in one list okay and then you have access to these as a value and the other one as a value as numbers okay so I wanted to point out this because many people for example get error when they use panels because of this okay so I am reading a circle with one Center and two radiuses so this is a one-to-many interaction and as you can see is something that it's perfectly controllable okay we will keep everything done under control here we want the same Center but two different radiuses one too many registers okay and we get two circles because of the longest list method so we have one Center and two radius so we will get two circles okay not one single circle using the first radius for example so longest least happening here whenever grasshopper make some kind of pop of interaction between one and many there will be the longest least activating the bat curve the white curve is receiving a bunch of curves like two in this case and he's using a two different amounts of count for dividing these curves okay so what happens here is that we will have the same values the same amount of division for the first circle and for the second circle okay so we will have the a correspondence between each point will have a correspondence in the other set of points gained like you can see radially okay so point is already the a data tree data tree because if we go here you will see that we have these groups of points it's 11 points per circle so when you read here 0 0 0 0 represents basically the first circle which in grasshopper means the first radius here so the smaller circle is in first place in our list so when you read here circle radius two millimeters is because we passed the two values as first value to the radius okay grasshopper doesn't change the order in which values appear inside lists and data tree unless we want it to change okay so you will always have the values ordered in the same way that you define with your inputs okay so in this case you see that this zero zero represents the first set of points meaning this inner set of points while the second group 0 1 refers to the points along the outer circle ok and and you can see here the parameter is exactly telling us this so you have a territory with two branches first one is called Cu zero and has eleven values so you don't have any idea of the type of values contained inside this data tree with you the parameter you only have an idea of structure another is branch zero one with another 11 points and by the way this is the graphical representation if you if you want so what happens if I try to connect these points with a polyline okay let's say I want to create a radio connection okay so if I try to connect this the points coming up from this divide curve the polyline will run along the set of points because here we just saw that each group meaning each branch contains the points belonging to one of the circles so the first group of points is actually belonging to the inner circle and when I plug the points output the polyline these is receiving exactly this data tree here so the polyline needs to connect vertices and the set of vertices that is getting from this wire here are two sets of vertices first set is all the points belonging to the first circle and the second set are all the points belonging to the second circle so the polyline will join or will connect the points belonging to the same circle so then the more basic operation that you can do or you can perform on dell'utri is the frequent matrix I'm not going into detail with this but flipping matrix simply inverts lines by rows okay so if we have a territory with two branches each containing 11 values after the flipping matrix we will have a territory with 11 branches each containing 2 values so it means basically that instead of reading the matrix or the table of of values let's say even lines which like which is like this so this is one line okay and this is another line okay it's going to read it by columns so this is a column this is a column this is a column okay so this is what the Flippa metric is doing and eventually if you work with the v matrix and use the polyline the polyline is actually receiving this data tree so it's it's receiving a couple of points per branch and so the polyline is connecting this point with the corresponding point which are the couple of points contained inside this first branch and then second branch is these two points third branch fourth branch and so on so in this case we are creating exactly the radial set of connection between the two circles okay so this is the simplest operation that you can perform on their own data trees and it's called big matrix it inverts the the way that the Edit values are contained inside your your territory and it's one of the more important operations that you might want to do in your with your territories okay and see how the use of the Perim viewer can tell you exactly what the data structure what was the the way that they taught us and values are sorted inside this data structure so if we're using this is it makes it clear to understand what what you are doing and and if you are moving towards the solution of your problem or you are getting away from the solution of the problem okay one nice exercise just to give some interesting the graphic output to this data trees scenario so what i'm doing here i'm reproducing a very iconic graphic that you might know so in this case for example what i did i will move fast along the the first part of the definition I am using a series of numbers to build a series of y-coordinates so I created this series of points along the y-axis and I've used this points here to create a SDL line giving this line a specific length that I can eventually change as you can see I can stretch it however I want and the direction for the SDL line of course is the x-axis okay and then I use a divide curve in order to divide each of these lines into well in this moment I've created 36 divisions so it means 37 points and you know as we already saw that we are getting a territory and the amount of branches depends on the amount of lines which depends on the amount of points which depends on the amount of y-coordinates which depends on this slider here so the amount of horizontal lines depends on this slider India and the amount of points depends on this slider here so here I can change the amount of the visual points along the lines okay and here I can change the amount of lines that I am using to produce this graph okay but anyway this is a grid of points basically and the points are sorted by lines okay so each group of points belong to one horizontal line okay what I want to do I want to take these points here I want to move them vertically which means along the y-axis randomly and then connect all these points together with a NURBS curve in order to be at these random waves and get to the final result the life that I want okay so the thing that I want to do is basically move okay the problem with move is not the geometry I want to do because I already have the tree of the data tree of points I need a territory of motion better and you can already see that my geometry is a territory with 31 branches see the last one is 0 0 30 which mean which means we have 31 branches and each one is containing 21 values which are the points ok and in the motion vector I am getting 31 branches each one with 21 20 21 values which are the vectors okay so basically we are going back to the one-to-one interaction because we have each branch contains 21 points and each branch of the motion contains 21 back vector so the interaction would be 21 with 21 finally so it means there will be no longest list and we will have a one-to-one interaction in the end so this is probably I would say the proper way of working with grasshopper always control the amount of interaction and go back to either either one-to-one or one-to-many try to avoid many too many unless you have the same amount of values because it means that you go back to this situation here okay so in this case what I needed was and and this is somehow important what we are going to see right now so we need one vector per point okay so basically we need to move these points in the Y direction that's why I first placed here a unit Y vector okay the problem is the factor okay and I need one factor per each point okay so basically and this factor must be random okay so that's why I use a random function here and the range will set the maximum displacement of this point along the y axis so I'm using a symmetrical domain by the way this is well those that were that were watching the the webinar yesterday know that I am fond of this plug-in but this is hetero opera working here with this symmetrical domain here so I'm just let's say let's do this so this is header up there in case you want to let's say work with it and also sorry there is a another component here that is from etta doctoral as well which is this random seed generator okay but anyway the symmetrical domain is actually asking for how wide is this domain so if i say that i want the width to be eight point ninety and i say that the base number is zero the resulting domain would be between minus half eight point ninety two plus half eight point ninety so we have minus four forty five to four forty five of course if I set this to 10 I will have minus five to five okay so this is the way I create a symmetrical domain it's very useful component this one so I define the range is in magically because I want this points to move upward and downward along the y axis okay I want these curves to fall to rise up and fall down eventually with the same probability okay so that's why I use a symmetrical domain of course you can always use a constructor main function and set a and B like a the negative of B and have a symmetrical domain it doesn't matter okay it's the same and then the important thing is this one okay so if I use one single seed like this like seed number two okay I will have the same variation the same deformation for each crew okay oh sorry by the way a word on the number of random values the number of random values depends on the number of points that I get from here you could use for example a let's say a list length component like plugging like like the data tree here and fly than the data tree because we want one random value for each point so you must know how many points you have here you see that it's six five one and you have to flatten the tree in order to have this result here if you don't flatten the tree this component will count the amount of values contained in each branch so you would have 21 21 21 21 and you can see if we flatten the output we will see this 21 comes out okay but instead of using this I said okay the amount of points depend on the amount of lines sorry depends on the the number of divisions that I give to this to crease lines okay and I you see here I placed a an expression which is X plus 1 because the amount of random values that I need is basically the same amount of points that I have along the line okay so I need each of these points along one line to move vertically okay so you see that I'm applying 20 division to the divide curve but remember that when you divide a line into this amount of segments you will get this amount plus 1 points okay so you see that each branch contains 1 point more than the amount of divisions so if I need to define random values for D for these points I need this value plus 1 number of random values okay so in this case the random is generating these 21 numbers okay but if I do this as you can see I get the same deformation because I get the same set of random values for each curve so each point of each curve will receive the same vertical displacement depending on this set of values so let's say that in this case for example I have 21 points per branch okay and finally the move is moving 21 points per branch with the same 21 vectors so this set of 21 vectors is acting with in with each of these branches here so we have the first branch of points which which is basically well actually it is this one here is moving using this set of 21 motion vectors okay so you have this displacement here the second branch is using the same set of vectors and so you have the same displacement the same deformation per for each of the curves so how did I differentiate the deformation per branch but basically I create a data tree using a number of random seeds so if I say for example that seed is going to be like let's say 1 2 & 3 okay and I convert this into a a not a multi-line data okay so if I plug this here in the seed I will get first deformation second deformation and third deformation they are different from each other and then longest list remember you see that all the remaining branches are interacting with the last set of random values okay so remember that when you have two data trees or or - yeah - that is interacting the first layer is branch with the first layer of interaction is branch with branch if two data twists have a different amount of branches then you will have the longest list of branches with determining the amount of interactions so as you can see you will have only the first three interaction produce different results all the remaining one they produce the same result okay so in order to have a one variation per branch you need to provide here the same amount of seeds as the amount of lines and who is determining the amount of lines is this value here so I need to generate this amount of seeds in order to have the differentiator variation of these shapes okay so that's why I've used this random seed generator because it only asks for how many random seeds do you need and I need this amount of random seeds and you can see that it generates some random integer numbers with very high values but it doesn't okay so I plug this in to see so what i'm doing here i'm generating let's take a look with a panel here to what happens in this group of values so i am generating these sets of random values and you can see that they are different okay they are totally different so the first branch which is basically the first line or the first line of points will be displaced using these factors along the y axis and then the second branch which is which means the second line of points will use these y factors okay and so on that's why you get this kind of of random deformations here and then i multiplied these random values here by this graph in order to to basically have the lines deforming only in the central part okay so i can decide for example how narrow is the deformation area or if the deformation occurs all along the curves for example just extending this Gaussian graph or i can example it for example let's say that create a more intense deformation or less intense deformation you can do whatever you want basically our i can displace the information along the line like this okay so how what's the important thing the positing is that and now we need to bring all the random values to 0 which corresponds to the start part and the end part of our lines ok so that's why I'm using this caution there basically because it starts with a flat line and then it increases and then decreases and goes back to flat in the end of the graphic okay how many values do we need for this multiplication well actually the same amount of values I think that we have inside each branch who is determining the amount of values inside this branch is the amount of division of each line in this case I don't need a and x plus 1 because range divides the domain 0 to 1 by steps and if we divide a linear domain into 20 steps we will get 21 values and so this is going to emit 21 values between zero and one so when I multiply these random factors here by zero they will basically become zero factor and then when they multiply for the inner part of discussion graph they will be basically more or less equal to the actual random value coming from the random and therefore I have this Gaussian contribution here along the the points displacement along the lines okay so as you can see data manipulation here is has become quite intense simple but quite intense and and and basically it's necessary to obtain this kind of graphic result okay and then finally you get the displaced point as you can see mostly in the in the central part and then you connect them with this NURBS curve okay any question on this oh yeah Leonardo okay I make it I make this public because this is exactly what I'm thinking about Petr after is some it's one of those plug-in that deserves a full explanation so let's say if I do this in gradually that graphed and flattened at the input of a component well basically but let's say that we have this set of curves so let's say that I have this okay so we know that this is a territory we can simply visualize it here well it's it's a whole bunch of curves let me reduce the amount of values here so it's just irrelevant how many buddies do we have so yeah that's it and if you want a graphical representation this is our data trees of final curves okay so for example if I let's say that I want to evaluate these curves okay and therefore I I sorry I was not going to flatten I was going to repair a matter eyes okay so if I say I want to evaluate this curve which means basically extra in some information along the path of these curves you see that now I get a point which is basically the physical plant that you see here the the tangent vector in this point and then we have the angle ingredients basically here you you have a it means it all wrong it only makes sense if you have some some kind of discontinuity but anyway let's not consider this this output I only want to concentrate on the graphical aspect okay so if I do this you see that this evaluate curve is actually evaluating each of the lines okay separately okay actually this is not let's say due to the fact that we have a data tree because either we have a data tree here or we have a simple flat list of values we will always get a relationship between one value here and many values in C so even if I flatten these you see that we get the same exact result okay because we always have a many to one interaction so the only possible things is that the grasshopper evaluates each of these lines using this parameter okay now what happens if I flatten the input and work with two different parameters like this so in this case I'm evaluating a list because I flattened the data tree so flattened means that I eliminate the branches of the data tree and basically if you see here you still have these 0 0 0 0 0 1 up to 0 0 11 each one containing one curve but if I flatten what I get here is a set of the twelve planar curves into one single list you can see it with a panel it's going to be eventually more clear so here you will have your twelve curves separated by branches ok while if you flatten flatten the tree of course using a flatten function then you convert this data structure into this which is a single list okay so flatten you can do it with using the function or you can do using the option in the input or output of functions okay like in this case so what's the problem with these interaction is that if I flatten the curves and I decide to work with two parameters and I decide for example to evaluate with 0.25 and sorry 0.25 and 0.75 so here we have a list of curves containing 12 curves and a list of parameters containing two parameters longest list first curve is evaluated at 0.25 you see this is the point and the second point the second curve and all the remaining curve of the longest list will be evaluated using the second parameter here 0.75 okay so or what's the point here for example if I don't graft I am evaluating now each of the curves using these two parameters here so you see that these two parameters are affecting all of the lines why because having these grafted structure or being data tree which basically means also working with the original data tree okay it doesn't change anything we already have a tree containing one element per branch so there is no need to graft so we are working with a data tree many values interacting with many values okay but these values are contained in two branches and each branch claim one single value okay so let's see what happens in this case so maybe this will make it clearer for you if I take a panel and do exactly what's happening here so I am plugging the the C input inside this panel and the T input I will plug it here exactly like I've done in the T parameter so here's the thing okay so here we have several well one data tree and a list now you can imagine a list as a data tree with one single branch okay so we have one branch here and several branches 12 branches here on the left so the first layer of interaction is branch with branch so we see that the first branch so the first curve is interacting with the first branch so these two values the inter in the end is one too many and not many too many as it might seem okay so if I have a tree here and then list here and the tree contains one value per branch the final interaction will be between one and many so one and many means that this curve will be evaluated at zero point 19 and 0.55 173 okay and then you will have the second interaction would be seven branch with the only branch available longest least this branch here will interact with the first one the second one third one and so on this is the first layer of interaction so these is interacting with all the branches of the tree and each time you consider one branch the in the inner value the planar curve will interact with these many values here okay so that's the difference in this case of flattening or or leaving the data tree intact when it comes into the net evaluate curve component okay so in this case for example you can see that we can evaluate this line into as many parts as we want for example we can take a range component which are balanced between 0 & 1 and then create these series of values of points along our lines just using a list of both parameters here okay because each of this curve will be evaluated using the whole set of parameters T okay so that's the meaning of grafting or flattening the input of a of a data set yes I will share the grasshopper file in in the Files section yes of course yes I will made a vinyasa Thank You Cameron what's the comment the teen and copy and paste that the graphic I I don't know what you mean by t9 Brandon can you further explain what what do you mean with this question please oh thank you what's the comment to copy and paste the graphic you mean eventually copy/paste ctrl-c ctrl-v eventually it's the standard copy paste a shortcut for any Windows application I think that's that's what that's what you meant okay so it's like control C or control B or control X if you want to cut paste but anyway it's the standard thing or if you drag while you're dragging you can hit once the alt button and then you are dragging a copy okay so it's like just one click don't don't keep it down okay just while you're dragging one click on out and you are just copying the the component or the selection okay you can drag whatever you want I think yeah I think that's what you were looking for so okay so this is the the example that I wanted to show the graphical example and then control V so let's turn this off and let's to another quick example in this case I'm using a twin curve from the it was the twin curve from from the standard grasshopper curve to a bar it's not pufferfish in this case but eventually if you want to create some more complex tweening you could for sure use that that Marvel's plugin which is puffer fish okay but this is a very basic set of curves because what I wanted to point out in this case is another way of creating the proper set of data trees so for example let's say that but despite well besides the the the curves here which is basically irrelevant okay it's not that these exercise focuses on on these curves so what I'm what I want to do is basically consider that I have this set of lines here which are six and I am dividing these curves into five segments so in this case you can see that five segments means six points along a curve this is only valid if the curve is open of course if it's closed five segments means also five points but anyway we have six points per line as you can see so five groups each containing six points and what I want to do let's consider that this is 30 people okay and I won't aim let's say what did that place here okay zero point six so 60 percent of these people here we get a free iPhone okay or whatever okay so I need to isolate 60 percent of these points here okay so how can I do this well basically what I did was use the partition list common okay the partition list common takes a list of object and basically subdivide them or dispatch these values here into a data tree branches according to the size of the branches that we want to use okay so the problem is that if I have this data tree of points I need to understand what 60 percent of these points and eventually what's the remaining 40 percent in order to convert this 60% and 40% into how many values I must place inside each of these branches here okay so this is already a data tree okay we can also take the prime Muir in order to have a clearer look at this but this is a a data tree so I have the points grouped by lines okay as you can see and hear what I did was the amount of points is basically the amount of lines you see it's six I'm using the range so I am using a this ladder you see that five steps for these range components determines the amount of lines which is this plus one and the amount of points per line is this plus one so I use an expression to basically create the X plus one which will be the amount of lines plus 1 multiplied by the amount of points plus one so this is giving us the amount of points inside this data tree of course I repeat you can use a list length with a flattened in order to count the amount of points but it's absolutely the same then I multiply the amount of points by 60 percent okay so this is giving us this value and this value is basically the 60 percent of the amount of points so it's twenty one point six the problem is that this is a floating point number and the partition list can only work with integer numbers of course I cannot place one third of a value inside one branch and the remaining two thirds inside another branch eight value is the value you cannot divide it so I need to round this value here I decided to round it to the floor so the smaller integer which best approximates the original value which in this case is 21 and then I basically took the amount of points and subtracted the value that I just found so 21 and then I get basically here the remaining 40% of persons okay so the integers that I want to use are 21 coming from these round and 15 coming from the subtraction this is the list of values and I plug it into the sect of number now partition list asked for a list of values and here I have a data tree so first I flatten the data tree in order to have access to the list of points and then I subdivide I partition the list of points using 21 and 15 okay and then here we get a data tree where here we get a data tree you see the first branch contains 21 values and branch contain 15 values and you can see it here if I for example use the explode tree and eliminate for example the second branch you see that this is the 60% of the points while in the second branch are you have the remaining 40% and you can also see that points are sorted by lines because we were working with the divide curve and the white curve is actually emitting one set of points for each line so 6 plus 6 plus 6 and so on but if we flip the matrix now these points are sorted in in in columns okay so here we have the first six points and no longer sorted along the line they are all the first points of this series and then all the second points and all the third point so if I use this flipped tree then the 60% of the points will be calculated in this orientation so you can see that also very simple operation allow us to create different graphical results okay so yeah this is a very quick example of using these partitions which is another well I would say in a very elegant way this one hell of a function okay so you might run into this partition list quite often in your in your practice let's get rid of these and well it's already a quarter to twelve I wanted to show you these for example which is a very interesting application and I will not discuss the last one I will just share it with you and you will be able to understand what it does okay surprise surprise so this one for example is another very interesting application with data trees based on this function here which is called replace paths so for example I'm using one oh by the way while using this well creating this example for you I place the Voronoi and the famous below my message in Westover appeared if you don't know what I'm talking about you will discover it if you work too much with water on so basically what I have you here is a bottle graph with a variable radius okay so I can decide for example if I can if I can reduce the size of the circles or I can you spank them expand them to the mats sighs okay but anyway let's leave them to the maximum size also I will disconnect these radios here in order to have the standard valla knowing behavioral graph and then what I want to do I want to subdivide these cells by areas okay so I want to group the cells that have the same areas together into one single branch of a data tree okay so you see that what I did here Voronoi normally outputs a list of of cells basically I placed here I graphed to create a data tree structure so each branch contains one cell as you can see it's 100 branches and I also simplified the data tree structure which means I'm using when you when you create a data store you have a data tree basically the amount of indices can also increase very much so if I don't simplify here you see that by default we already get a 0 0 0 0 and then 0 0 0 1 0 0 0 2 but the only index that is changing here is the last one so there is no need to consider the 0 0 0 so that's why I simplify this ok and also for a practical reason that we will see in a while so what i'm doing here i'm creating a data tree a simplified data tree i am creating a tree statistics here that gives us access to the paths of the tree at these parts you see that because we simplified it's just 0 1 2 3 4 etc etc ok now I want to replace the paths of the original data tree so the data is going to be the data tree coming from the pollen on okay search path is going to be the actual paths of these data tree and now as a replaced path I'm going to use something that depends on the areas ok so we have the cells here and we calculate the area with this area common and then I'm going to convert the area which is a floating number a floating point number of course it's never going to be precise as you can see into an integer okay why because I'm going to use the integer value representing the area as the replace path now you can see I placed an a flattened here because we need as we have a list of let's say such mass which are the original paths we also need a list of masks in order to replace the path the corresponding path now what's the deal here is that if I consider the output of this integer these are the areas and as you can see there is a cell which which has an area of 4 then area 2 4 4 once again 5 3 3 months again so when I use for example that these numbers here as path the cell that corresponds to this first index field this first index here has the same area as these as these so basically the set contains in the original path zero and the original path to an original path 3 which is this one this one and this one and so on when they share the same area they will be grouped in the same pot ok so as a result with this replaced path here what I get is that I get the same amount of cells but you can see that I only have five branches ok and these five branches these five branches contain a variable amount of cells because these are only the cells with area two with area 3 4 you know these are the values that that are coming up from this integer here ok so basically I'm grouping these cells by areas ok so if I retrieve for example the 3 branch 3 branch with path basically - you see that only the cells with area to appear and you can double check these by calculating once again the area and placing a text tag you will see that the area of these cells is basically to remember that we are running to the integer ok you see that you were gonna have 156 which is closer to two okay as well as 230 which is closer to two like a floor integer number okay and you can also display the cells with area three sets with area four five six which is just one you see and then if you see this it means that there is no cell with area more or less like seven okay as well as if you go down to one there is no cell with an area or one unless for example I plug this radius here and then I start to decrease the radius and eventually with very small radiuses I'm getting the values that are closer to one and you see that these cells have all basically an area of one okay but anyway you can play around with these and apply it to whatever example you might want to apply it okay so I hope everything was was clear with this explanation I repeat I will I'm going to share this right now so I'm going to share it also with this last editing that I did let me switch back to the window here yeah thank you let me well actually the dotted and continuous means that when it's dotted so this continuous cable it means that it is transmitting a data through your values while continuous well double but continuous means that it is transferring a list of values okay why if you have a simple wire it is not meeting just one body okay so simple obvious nice place panel in Columbia in Columbia the software to demente no idea god or Andhra pero la vamos vladakov Secours Valley in government sake in Los Pinos contactos can quaint Rossini Pacino web okay Batista machinima tae-jong Kazemi Punto home contactors displayed your fancy voice over the hose okay hey tango blaster presents Edison Mexico si pero solamente homegroup was like yo can he starts to platy Comoros siempre con from nice font I gotta top of me of a second Thank You Luis I I don't know what's happening out there perfect it's a kind of dispatch Oh which one probably the the partition list it's a kind of dispatch okay but there is no no pattern in that case you only define the amount of values inside each each branch can I see we mobile oh the webinar I don't know I don't know oh I don't know what but so sorry that you got kicked away but anyway let me share the files you see that it's already shared here so you can download it right now also let me do this mmm I want to go into the file section you will find the the the file ok I will also share it on my website so don't worry if you don't if you if you can't get it now also I wanted to go and share with you this it was product and it was a no it was just rather and it was probably kangaroo reloaded yeah ok it's I'm gonna reload it so I'm going to share also be linked to the kangaroo offer which is basically an online course okay I press ok with data here we're at it if you want to connect twist with the same number of branches but any other ones are no can it be solved yeah if you have null values hope you enjoy this cartoon like the time that you show a fabric meeting yeah this is something that I've found in some university paper or research paper try on on the web and good luck with that because this is something that normally is this research in development so basically there's plenty of material anyway so we would find some some some geometrical model for knitting but anyway that one particularly was from a paper but PadMapper PadMapper is an old way of working with data trees well basically it it's something that has become quite quite useless okay something very very particular things can be done with PadMapper but normally there is no longer the need of using the PadMapper but if you want yes okay I can share an example on on my webpage when I publish the post on this on this webinar okay so you will see what happens with the path mother if you want to connect twist with the same number of branches okay can it be solved yes you must get rid of null values okay it's not because you detect them you must get rid of them so if you have some null values I do recommend that you use these component that is called clean tree where you connect the tree here and then you leave this which is remove nose to true okay then you will eliminate all the null values inside your your data tree okay so yeah you can but you have to to clean the tree okay so any other any other questions well actually as we have sometimes there is 30 more minutes to the duration of this session I'm going to use the bat mapper to replicate one of the things that we have done here in in our one of our exercises for example yeah this one is the easiest way that we can do with the with the PadMapper is to replicate the flipping matrix okay so so just that you have an idea on how the path mapper works if you don't know what we're talking about but Mapple is this one okay so is this let's say pink ish cube that you have been in the tree the group of components inside the sets toolbar okay so let's see for example how we can use this and I will leave it also I will also reshare this definition in case you want to download you get a path mapper but it's I repeat it's something that you no longer seen in a standard workflow okay so for example we have this data tree here I'm going to use a para Muir and place it here in this area so we know what we are going to do and what I want to do I want to replicate the flipping matrix okay so let's also take a look at the result of the fifth matrix so we'll we don't clearly understand what happens during this transformation here so PadMapper you double-click on the path mapper and then you have access to the source and target data structures okay so the PadMapper it converts a data structure in all the data tree in a different data structure so it's used to sort the values in a different way inside the data tree okay so what we have here on the left and what we want to achieve here on the right oh by the way I'm going to change one of these two because else we have a symmetrical structure between the two data trees and we don't understand well as the difference between the two so I'm going to use just three lines there are three divisions of four lines and six points per line okay so you now see that we have four lines with six points each and here we have sixth group with four points inside so we are flipping the tree as you can see four branches would six component six branches with four components okay so what we want to achieve with this transformation here is switching between these data structure to this one now how do we represent these in the PadMapper we use these notations here okay so the branch the generic branch of the initial data tree is parentheses which this one parentheses and then you have 0 second 0 simple and zero and close the parentheses okay so this is the branch and then you have the values okay and the values you indicate them with these the parentheses index parentheses okay well actually you can use whatever type of of letters you want here not necessarily I for example you can use I don't know Z I don't know but the important thing is that you refer to this a scheme here and change it in the target using the same letters okay yes there will be no correspondence between the data trees let's say parameters in the two configurations but I saw what we want to do here is detect that this initial data tree has one changing index okay it's the last one so I keep a name also to the changing index like here so 0 0 are going to be constant okay a is going to change and I of course it's going to change because it is the values contained okay so in order to fit the matrix what we want to do is take a look at this we have basically four branches so a is religion to four and we have six values in in each branch and as a result we want to obtain a data tree with six branches and four elements for each branch so where is the 4 in our initial in our source cream but actually is the a because a is ranging up to 4 branches while 6 which is the amount of branches which is this index here is in the in original scheme is I which is basically this one so the fit matrix can be represented using the path mapper like this I copy paste this and I invert this will be I and this will be a ok so I'm using the amount of values as the volume the the changing index of the object tree branch and the amount of branches as the amount of values that I want inside of the new part of the new branch ok and then I simply click OK this is making this compression you can see that the scheme is represented here and if I substitute the output of this PadMapper to the output of the matrix inside this parameter you will see that I get exactly the same result you can use the PadMapper to do other Affleck know other things for example I want to also at the same time simplify the data tree so I get rid of the first two zeros for example and hit okay and I will get the simplified version of the original data tree so there is no need for example to apply a also I simplify because I can do it by changing the scheme of the target two data tree okay but as you can see all the operation that I'm doing can be done with simple operation in the standard workflow so I can fit the matrix and simplify here and I get exactly the same result that I got with a with a PadMapper without having to type anything and think about the structures and so on okay so that's why I I do not recommend I no longer recommend to go too deep inside the path marker unless you have some very very specific needs okay oh my focus yeah you were talking about the plugin yeah Alice you can see the webinar you will get an email so check your mailbox you will get an email where you will receive the link to the replay of this webinar yeah it's at like at least the the bifocals I think they already replied then if you have complex tree structural fidelity might not be freak metrics doesn't work but actually the data tree structure must be symmetrical you cannot invert a data tree which has two layers of branching okay at least two layers of branching what do you normally useful for that if you do not use them at the PadMapper well in that case you might want to use the PadMapper but keep in mind that normally when you have a data tree with more than one branching for example this has only one branching as you can see when you get another tree with more than one branching normally and I'm not saying that it's always like like this normally you have values are contained in the lat in the leaves basically right and then you have some branching occurring normally there are many many situation in which you can get rid of the double branching by using this thing here which is shift paths okay so it just eliminated the last branching and go back into the first branching and so you can eventually go back into a flippable data tree but this means that your your values here are are basically ordered in in such a way that the second branching is not relevant for your workflow okay but these are very specific situations as you can see but in that case yes you might want to use the PadMapper okay double check if the if the shift path component helps you which allows you to get rid of the subsequent branching that you get inside one dollar tree if if you cannot apply the shift paths because it alters the way your data is ordered inside your data tree then you might want to use the path matter okay but even in that case is going to be well I don't want to be rude but it's going to be very difficult okay bifocals bifocals it is positive net to least a me and one two three four like this instead of a 1 B 2 B 3 B 4 okay let me mentally understand because yeah and I understand the passion so you have a B and one two three four okay let's do it let's see what happens okay so we have these with a B and I'm going to avoid the multi-line guitarra and then you have least with one two three four also remember don't press ENTER after the last value just exit the panel if you want to avoid problems with text and multi-line data okay so you have this here and let's say that we use a data here and plug this let's see what happens in in this case so well they are not mixing together because basically they are on the same level as you can see so basically if you want to bring them into each inside one group you might want to draft graphed this and also graph these so you have separate values here each one is for example in this case 0 0 and you can see that also this is going to obtain one additional index because of the graft operation so see that also the index becomes more and more and more as you move on along your your workflow okay so that's why that's another reason why you might want to simplify the tree from time to time okay so in this case if I merge these data together I'm not using any merge or entwine or whatever because everything is under control here so I don't need any particular additional operation okay so in this case you get this okay so you want it well actually actually okay you were meaning genetic data okay now I get you you are talking about interaction here so you want a to interact with the first value B with the second value a with the third one B with fourth one I would recommend the easiest way is that you eventually let's say use eventually some repeat data or some yeah like this for example or eventually you might want to stack data also which is something that might have been that in that type of situations okay so basically what I'm what I'm saying is that if you want this particular type of interaction what you are saying is that you have one two three four okay and you want a to interact with the third first the third eventually the fifth seventh and so on while B must interact with the second fourth sixth with even value okay so in that case you might want to dispatch the values okay so let me recover these for example because if I dispatch this which is the easiest way to achieve your your result okay like this then you have one and three into a output and two and four into B output and you can easily make a separate a from B and make it interact with the Al output and separately from a and interact with a B okay so in this case people mean graphed these three so you will have a and B like like separate into two branches and then you would have these two lists here that can interact in each with one branch or you can also dispatch this thing here and make a interact with one and three or P interact with two and four it depends on the data structure that you want to get as a result ok so here you are doing with this batch you do it separately with the graph tree you can also get one single data structure and then eventually flatten it and get to this result that you want to achieve here so Alice yes I already told you thank you thank you very much do you have any training for scripting and not yet script courses well actually I don't have any Leonardo as you know in the growth course there is some scripting occurring for D let's say mesh growth so in that case there is some Python going on over there and some particular mesh representation but no I don't have any any scripting course for now online ok Cadman movement nice tennis thanks ok so I think we are done for today and we made it on time just remember you can well you can access the offers and the links that I shared for the kangaroo course and so on thank you Michael so for those of you who are not registered I do recommend it if you participate in the second session of the kangaroo webinar which is happening next Saturday and just stay in touch in in my website okay so we will have plenty of applications to interact please change yesterday webinar link oh of course yeah you're right let me go here my webinars grasshopper data tree simulation your links replay session from yesterday and this is the replay page so if you want to take a look at me yesterday session this is the one shaman whele how many la camisa okay nos vemos pronto thermionic what antenna see no abrazo okay remember this is the link for the replay of yesterday's sessions okay so you can stay up to date and participate in the second session without problems okay so I'm closing the webinar guys see you soon take care and stay home bye guys
Info
Channel: Giancarlo Di Marco
Views: 5,345
Rating: 4.9699249 out of 5
Keywords: giancarlodimarco, digital design, digital fabrication, rhino, grasshopper, kangaroo, vray, tutorial, architecture, design
Id: XW7vlU07q5w
Channel Id: undefined
Length: 99min 37sec (5977 seconds)
Published: Sun Mar 29 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.