To create a wavy facade, extrude a NURBS curve vertically to create a surface. The curve can be divided into panels using the divide surface component. The parametric domain of the curve affects the panel sizes - curves with more control points create more uniform panel divisions. Rebuilding the curve with more control points can create more regular panel topologies.
Deep Dive
Voraussetzung
- Keine Daten verfügbar.
Nächste Schritte
- Keine Daten verfügbar.
Deep Dive
Grasshopper Ephemeral Architecture - Session 2Indiziert:
This video course is meant to cover all the basic aspects of designing an ephemeral architecture project. Session 2 - Attractors: concentrated, diffused and vector attractors Video course Grasshopper definitions: - Session 1, https://mega.nz/#!XllHTaoQ!3BV9XQgGfGG6qxBHOTJCMyUmv-FaodNLb3h9vhqSe78 - Session 2, https://mega.nz/#!LssxBKwC!mf7qT4C48PrLkPRWZFCkpfrxyMe4WuFOyrcHQXYQ-Es
second topic of this video choruses are basically the attractors theory in grasshopper now I personally identified three different types of attractors there are several criteria for determining this this type of classification I will simply describe them here in order to have a written reference so I normally identified three types first one is concentrated attractors second type are diffused attractors and third type are vector or 3d attractors okay so basically let's start with with the first type of course and by concentrated I mean that the his type of attractors consists of physical geometry okay so mainly we are talking about points and curves but in 3d we can also talk about surfaces and and so on so let's create a very simple example I will start with a populated 2d and with a point container like this with set one point and set one single point inside this point cloud concentrate attractors are based on distance okay so first thing you might want to do is calculate the distance between the point cloud and the attractor point now it doesn't matter in which order you connect you plug these cables inside the distance component because distance is a scalar value so it's not affected by the by orientation so basically it's the same if you calculate the distance between this point and this one or between this point and this one you get exactly the same value so there is no difference in doing like this so once we have the distance there are mainly two way of creating the attraction Rule okay so first rule or first interaction we can call it like total interaction in this case what we are going to implement is that the presence of this attractor point will effect some geometry which is created around or from all these cloud of off points okay so what I'm going to do I'm going to create the very simple geometry like a circle using all these points and defining the radius of the circles based on the distance so this way what we are doing what we are saying is that basically the position of this attractor point will affect the radius of the circles if I plug the distance directly to the radius I get this which is a mess in terms of design just a collection of intersection in intersecting circles which is interesting from a graphical point of view or artistic point of view but in terms of design is a total mess but by the way you can see that if we take this point here and move it around we already have this kind of interaction between the attractor point and the geometry derived by from the point cloud here basically what we are saying is that we are creating circles with with a center in the point cloud points and the radius is basically equal to the distance so all these circles have a center are centered in one of the points of the point cloud and have the radius which is equal to the distance of salty circles are passing through the attractor point that's why we see this kind of of star or circles okay but normally we don't want these we want to have a control design so I will remap these distances from their original range of variation to a new domain for now I will leave 0 to 1 0 to 1 so basically the smaller distance will be converted into zero and the larger distance will be converted into one so if I use this I will have circles with a radius between 0 & 1 so the attractor is this point the closest point which is this one will have a circle with radius 0 so it's a no circle and you can see that this is the second closest point this is the third one and you see that radius of this circle is increasing with the distance okay and this way back we can also control for example the minimum radius and the maximum radius for these circles I can use a natural slider here so I can define what's the smaller value for for this radius and I can also define what's the the biggest value for the radius okay this way we can see how this the presence or the position of this attractor point is affecting the radius like determining the the size of these bubbles of course this is a very simple relationship between the attractor point and the nd and the geometry of this point cloud but it's just to implement a an interaction which is involving all the geometry in our scene now let's try and build a second type of interaction which is selective interaction ok so I want to I want this this attractor point to interact with some of the points of the populated 2d ok now everything is always based on distance okay so remember that when you work with concentrated attractors the critérium is distance so I will copy this first set here let me group and disable this first definition and what I'm going to do now I just want to implement a new interaction selecting only those points of the point cloud that are close enough to our attractor point so I want something to happen only using the closest point to my attractor point so once we know the distance what we can do is compare this this distance value with a reference value that can be a slider between 0 and according to the size of this rectangle that we are using which measures 20 by 10 I would say 0 to 30 as a maximum okay so what happens if this distance is smaller than the value plugged into being then the result will be true if the distance is larger than this value then the result would be false okay and I will dispatch the points of the point cloud according to this pattern okay so none of the distance is smaller than 0 so this is a list of false so all the points of the point cloud are actually going into the list B as you can see 100 values here and 0 values here so there is no closest point in this case closest point will appear in a ok so if I try for example to connect with a line the closest points with the attractor point you see that no line is being created right now but as I start increasing this value you see that I start to create lines a a star basically of lines only around the attractor point ok and so in this way I can create this kind of nice interaction control interaction only with those points which are closer to the attractor point ok so this is a selective interaction because we only make this attractor point interact with some of of the geometry of course the criteria for creating this interaction are whatever okay so for example I can simply split this set of points and Ameri into subsets each 4 with 50 points so I can create 50 random lines starting from this attractor point with 50 random points inside this cloud ok so it's another Rule four creating a selective interaction but anyway you can come up with whatever rule you might want to implement in your in your definition according to the desired design okay so basically I will just group and disable call so this definition here and the second type of a concentrated attractor is the curb okay so now what we are going to do we are going to create a NURBS curve and this NURBS curve will be based on a series of of control points so I create this sequence of points here and I want to use this curve as attractor concentrated attractor I always need a point cloud here and just to implement some kind of interaction okay so now what I want is to create an interaction between these points and this curve always based on distance the problem is that the distance component that we have used so far calculate the distance between two points and now we have points and a curve so we cannot do this we must use another common which is called the curve closest point so I want to basically what this component this function does is project each point on to the curve but then declare it to the curve and define this as the distance between the point and its projected version okay so I would project all these points onto this curve as you can see we have 100 projections okay this is the parameter of the curve where each point is being projected but this is something that we will not use in this course and here is the distance okay so we have the points and we have the distance coming out from from this output here so we already are in the same situation as before we can implement total interaction or selective interaction exactly that we did before so from now on is like using exactly the same criteria that we have used here after the distance component okay so simply for example if I want to make circles only around the path of this curve I can use the circle common and then what I want to do I want to evaluate if the distance is smaller than a reference distance I will use exactly the same values as the previous as in the previous definition okay and then I will eventually in this case I will not dispatcher will call with pattern all these points here with this pattern here okay and then I will use them in order to create a circle and of course you can see that this is an empty set of points because none of the distance is smaller than zero but if I start to increase this value you see that circles appear only around the given curve okay so you can create interesting designs for example using these simple interactions with with the attractors being beat curves or points it doesn't matter so for example what I can do here is like a region Union joining all these curves here into one single or let's say some some addition of the existing circles so we have this interesting design along the part of the curve which depends by the way also on the shape of the curve itself so as you can see if I drag this I am changing the graphic aspect of this of this circle Theory here okay so as you can see very nice results that you can get with concentrated attractors let's group and disable also this definition and let's switch to the second type of of course the applications of these of these attractors here are infinite basically so there is no way for me to cover all the possible scenarios these are the general principles behind the concentrated attractors okay so it's up to you to play with them and make experiments and and see what interesting outputs you can get using these these concepts okay now to switch to defuse the tractor of course when it comes to very complex attraction rules it's impossible to keep on working with with concentrated attractors okay so for example what if we want to create a wavy pattern on the surface for example of the facade of a building okay now in that case we can simply use the concentrated attractors but the output will be limited to a mathematical function that we can implement for example let's let's make a a quick example okay I want to create a rectangular facade like plain surface doesn't matter if it is lying on the XY plane instead of the X Z plane or whatsoever vertical plane just think about this as a vertical facade rectangular facade like like this okay so this is the main facade of a building and what I want to do I want to subdivide this facade into panels first so I will use the standard grasshopper method which is dividing main square plus I so trim and I will use this set of standard default panels that come out from this paneling script which are by the way a 10 by 10 so 100 panels and what I want to do I want to create some kind of movement of this facade according to an attractor so every one for example these panels here to scale up or down in a wavy fashion so for example I want the first panels to maintain the original aspect and then I want this panel to get smaller and then once again bigger and then smaller and bigger in a periodic way okay so what I want to do now I need an attractor and what I can do I can take the edges like let's go into here analysis and be web edges so in this case I have four naked HS which are the four sides and I only need one of them so I will list item the naked edges and you see that here we are we have the bottom edge right top and left so let's start with the left edge okay and what I want to do so let's take these as the attractor okay what I need to do I need to define the distance of each panel from the attractor here so I can take the center for of each panel as the reference point to identify each of these panels here and I can use the curve closest point projecting the Centers of the panel on to the edge curve here on the left so this is giving us the distance of each panel from the left side of the facade okay and once we know the distance what we need to do is to scale each of these panels here using their respective centers as Center of scale as you can see now the scale factor depends from the distance the fact is that the distance increases going from left to right and increases constantly okay but what I want is the scale factor to behave like in a periodic way like this so I need to perform some kind of operation here in order to convert the increasing value of distances into a wedding scale factor which by the way cannot exceed the value of one because I don't want two adjacent panels to to overlap okay so maximum scale factor should be one minimum scale factor also cannot be zero for example because scale gets angry when you feed the F input with zero so I want to cover these distances in two values that are oscillating between a positive value larger than zero of course and smaller than one okay so what I want to do now is take these distances here and use a graph mapper with a sine function which would give us as a result values between zero and one in a periodic fashion okay so this would be the scale factors but we need one scale factor per each panel so we must base everything on the distance because we have one decent for each panel okay so what I'm going to do now I'm going to remap these numbers here from the start source domain which is calculated with the bounce component and I will convert these distances into the new target domain is 0 to 1 Y is 0 to 1 because the graph mapper needs to receive values between 0 and 1 in the x axis and then associate to each of these values the correspondent values on the y axis defined by the graph of this function okay so once I have this I will use these results here and plug the graph mapper and you see that we start to have our result because there is a problem here because the graph mapper if the graph of the curve touches the horizontal axis here it means it is outputting 0 as a result but if we increase this a little or move this up a bit come we are excluding the 0 value and if we take the second handle here and drag it to the left you see that we start to have this kind of weighting behavior and we can also define the minimum scale by moving up the other handle of this function okay so of course things become more and more visible if we use more subdivision for our surface okay so for example if I increase the amount of vertical subdivisions you see that we start to get this kind of nice and smooth and in between several columns of of panels okay so as you can see it's possible to create complex paneling over surfaces using our surface using simply a concentrated attractor okay but what if for example I want the smaller panel to appear in some kind of customized shape or customized areas on this surface then in this case it's almost impossible to work with concentrated attractors in this case we must switch necessary switch to diffused attractor okay so I will keep this as an example of concentrated ejectment attractors as well and we will switch now to diffuse attractor now how can we let's say make our panels scale up or down according to a custom rule based on each panel position when we must use another type of attractor that acts at the same time over all the the extension of the surface okay so it's not physically placed in one position let's say on the corner of a surface or on one side or at the center and so on it is acting at the same time all over the surface okay so what I'm going to do now I'm going to use the standard plane surface with our 11 slider as well as the previous one and use these as the main surface and I'm going to divide the main square and I'm going to I so trim this surface once again okay so we have our panels okay what we want to do right now is take this this panels here scale them up or down according to a custom rule using a diffused attractor now the fuse attractor are basically the simplest way to create them is using images so what we can do is create a image and use it as an attractor I'm going to hide a grasshopper for a while I'm going to use this window here maximize this window and what I'm going to do I'm going to capture these two a two people and I'm going to use a twice the size of the actual viewport so it's going to be quite a huge image in in resolution and let's copy this to the clipboard and I'm going to open Photoshop for example or any other photo editing editing software let's wait for a while and I'm going to create a new file as soon as it as it's possible yeah here it is create a new file you know that clipboard is already set to the dimension of the clipped data and so I will paste my image here now what I need is actually to crop this image using this red rectangle as a reference so I will select all the surrounding area ctrl shift ctrl shift E sorry ctrl shift I invert the selection and then image crop okay so everything I do inside this area here as the same proportion as the original surface that we are using which is quite important if you want to use an image that corresponds exactly to the proportions of our image of our surface okay so what I'm going to do right now I'm going to create a new layer okay and I'm going to let's say paint this layer with a uniform black color and then I'm going to take a brush I'm going to take a brush with let's say quite a big size like this and then I'm going to make this brush very soft like this and I'm inverting the color so I have white here okay and I set opacity to 100 so I have this kind of nice behavior here for the brush now this is basically everything is already set what I'm going to do I'm going to implement a quite an extreme strategy in order to have a very interesting result not an obvious result I'm going to apply a render filter like clouds in order to have this kind of very fine variation between black and white and gray scale okay Tom's and then I'm going to create a new layer and I'm going to create a gradient this gradient will be let's say we can use it's it's irrelevant if we use white or black and we'll use just black in this case and I will create a gradient like it's it's reverse I don't want it to be rivers I want black to be on the left and then I want this gradient to reach half the width of our sorry one third of this image and then reach two turns like this okay so we have total black here and then we start to see this cloud pattern here and then it's fully cloud here and now that we have these I will create a new layer and take the white brush that we have prepared before and I will do something like this and this okay so full white in two spots okay now let's save this image I will save it in our folder here as a JPEG image so it's going to be 2001 and today is 18 and it's GHP and it is defused attractor example like these yeah okay and I will minimize this and we are ready to go now let's go into into grasshopper we already have our surface and panels which are this one and I'm going to use the image sample image sampler if you double-click on this component you see there are a bunch of settings here first of all you might want to define a file path so I'm going to look for our image which is this one and you see very important you see that this image is actually being represented like in a deformed way okay and this is totally irrelevant because as you can see the grasshopper is actually the image sampler is actually considering the size of the image in a parametric way so X domain is set to 0 to 1 Y domain is set to 0 to 1/2 so this image measures 1 by 1 as you can see it's totally irrelevant what's it what's the actual size of our JPEG file ok and leave it like this don't ever touch the Mona Lisa here because this will use the pick the image pixel dimensions and you will have problems because each image has its own dimensions and they do not generally correspond to any parameter of our surface while working in a parametric weight line like this allows us to simplify many processes ok so don't ever touch the Mona Lisa unless you know exactly what you are doing and build this image a grayscale image there is no reason of using or interpreting the agpa colors or whatever here I will use exactly the color brightness channel which is the only interesting information we have in this image so ok that's it we have the image sampler here now how does the image sample work well em it works like any pixel of this image the image sample will read the brightness information of the correspondent pizza okay so the the trick now is to identify those pixels that corresponds to the center of each of our panels okay so what I'm going to do right now is I up the ISO trim so I can simply calculate the area in order to have the Centers of our panels and now I need to understand what are the coordinates of these points not with with relation to the coordinate system origin but related to the actual width and height of our surface okay so in order to do this we can use a it is called the surface closest point okay so I have these points here and I am if it's like the creme closest point okay this component projects the points onto the surface and this is the surface okay so it looks like a total nonsense because we are projecting points that already lie on the surface onto the same surface so we get exactly the same points but the difference or the reason why we do this is because in this case we have the UPP or meaning the coordinates of the points in UV coordinates on the surface so you see that here we have two point eight one point four two point eight four point two and so on and here we have the same value that's because we are not considering the parameterised version of the parametric version of our surface but we can simply take the surface here repair matter eyes it and now we can see that UV p is expressed in parametric cubic coordinates which are between zero and one now these values here can be plugged into the image sampler because this can be used as the coordinates of the Centers of our panel in parametric coordinate between zero and one Horizonte and zero and one vertically so if I do this now the image sampler is giving me exactly the brightness corresponding to each of these points that we have here and the brightness of the image is expressed in boost that range between zero and one as well as you can see when we have white we have one okay so it corresponds to these two - these two spots here okay now we can therefore use these these values here as a scale factor okay so if I want to scale these panels here using their Center as a center of scale and now I'm going to use these values as a scale factor of course this is going to to get angry because many values here corresponds to zero because there is this area which is totally black then there is some black-ish point here pixel here that might result into a zero value I don't know but anyway this this is because this is why this scale is becoming red okay so there is an arrow here kind of scale with with factor zero but you already know how to handle this you can simply remap numbers now these values here are already in a source domain 0 to 1 so there is no need to plug anything in the s input what we want to do is customize the target domain with a constructor main and one is it's okay actually what we need to do is define a minimum value for the domain range which is larger than 0 so I will use eventually zero point ten to zero 50 okay so if we do this and we use this remapped values as scale factor everything will work just fine so you can see that where the image is black we have the smallest panel then the panel starts to behave like randomly because we have this cloud rendered layer in the image and we have these two black to white spots that corresponds to the larger panels in our in our facade okay and you can define what is the minimum value for the scaling of these of these panels okay so as you can see diffused attractor allow creating more complex more complex interaction so the interaction in this case is between the surface panels like the geometry that we want to use and the attractor itself it's the image okay so that's why I call it diffuse attractor because each pixel of the image is acting in its local area on the surface let me group and disable this so we have diffuser tractor already covered it's it's very simple so there is no particular things to discuss here and let's switch to 2 vector attractors which are a little more what I wouldn't say complex is basically always the same concept but applied with two to three dimensional geometry and therefore using vectors now for example let's take any scenario that we already know like a populate 2d and a an attractor point one singular tractor point in this area okay so for example if I define a circle all around this point and the radio is radius is based on the distance between this this point cloud and this attractor point we have this thing here we already know that if we move the the point in the XY plane the circles react accordingly okay but what happens if I go let's leave this live here what happens if I go into the front viewport and move this point up okay you see that there is some kind of pop interaction but it's it's not under control of course now the problem is a little less let's see a little less obvious than this let's consider that for example with remap these values between from the actual range of distances we we map them to 0 to 1 okay so let's leave it like this so the closest point will have a radius of 0 and circle with radius of 0 and the farthest point will have a circle with radius 1 okay so what happens if I take this point here and move it up now you see that distances are are basically reacting okay but the closest circle will always be the closest circle and the line of the first circle will always be the same for a circle what happens is here we have a different transition between the smallest circle a circle and the larger circle okay so in this case interaction is not exactly under control okay and also in this case for example what happens if I want to determine the interaction between this set of points and more than one point one more more than one attractor point okay so let's jump to a totally different situation here and let's try to use a more complex scenario and what I want to do I want to create a three dimensional deformation of one existing surface like this one I'm going to use the standard rectangular surface that we already know but this time I'm not going to use it for paneling what I'm going to do I'm going to deform it using attractor points okay but in 3d so what I'm going to do I need a at least a couple of points that will be my attractor so set one point and place one here set one point and place one here and what I want to do I want these two points to lie at a certain height like this okay now what I want to do I want this point to pull the surface towards him and I want this point to push the surface far from him okay so in order to do this we need to apply a force or a displacement and displacement mean means a vector vector means Direction orientation and magnitude okay so in this case for example if I want to pull the surface - at this point I need vectors that point towards the attractor point with a certain magnitude so orientation would be from the surface to the attractor point in this case I want this put this point to push the surface away so the vectors will start from the attractor point and reach the surface and move the surface points away from the attractor points okay so that's the general theory now the problem is that how many points do we have on one surface like this it's infinite points by infinite points okay so it's the infinite square and we cannot calculate infinite interactions okay so the first thing that we might want to do is create a point grid onto this surface and we can create this by using the divide surface common which basically create it's like a little like the the panelling tools common that we already saw in the panelling section this is actually doing exactly the same so we define the amount of division of spans that we want to consider for our surface and we will have the corresponding point grid here okay so now we have the puller and the pusher okay well it came out weird but anyway this will pull the surface and this will push the surface okay so what we need to do right now is not calculate just the distance because distance is calories there's no orientation so if we work with distance with scale of distance nobody will tell this surface to go to once a point or to move away from a point because distance as norian tation so we will create vectors like two-point vectors so if we want the one point to pull the surface this point must be the target for our vector so we will have vectors coming out of the surface so the surface points will be a and target point will be the attractor points first attractor point okay so if we want to take a look at this vector here you know that vectors are invisible in in grasshopper they are the so-called free vectors which are free orientation in space so you must use a vector display in order to visualize these vectors applied to a specific point and you can see that now these vectors become visible and their tips are pointing all towards the attractor point so we really have the correct direction and orientation okay we just miss the magnitude for these factors but we will take this we will take into account magnitude in a while okay so important thing we we already have the pulling Forks here now we need the pushing force I will take another vector to point now the starting point for our vector will be exactly the attractor point and the target point will be the surface points okay and so in this case for example we have vectors that start from the surface and move away from the attractor point as you can see okay even in this case we must take into account magnitude okay but any everything is working just fine now in order to give magnitude to to the design amplitude or method to a vector we can use the amplitude component so I will take these vectors here and give all of them one single value one single amplitude and this sample that will be actually the strength of this attractor point so let's say that we want this attractor point to add a strength between 0 and 10 okay so here it is so if we give 0 as a value for amplitude we have null vectors of course if we start to increase this we will have vectors moving towards our attractor point okay so now all the vectors have a constant magnitude okay that's why you see this kind of nice behavior for for this vector all these lines have the same length because the length doesn't depend on the distance any okay it is not connecting one point to the attractor point is only using the direction orientation but the magnitude is given by this slider here and we will do exactly the same with the other vectors okay so for example if I do this I will have let's take another vector display and use it for this other vectors here and I will have a second set of vector moving away from the second attractor point now this means that for each point of the surface we will have two different actions one determined by the first attractor point and the second attraction action is is determined by the second attractor point okay what we want to do is to come up with one single action performed by both the attractor points at the same time so it's very easy we just need to let's get rid of one vector this plane we just need to make the addition of the two contribution in order to add one single vector per point and you can see that this is the final result okay so points that are let's say closer to the second attractor are moving away and then there is this attractor here that is pulling the vector towards M of course there is a interference between the two attractor okay so you see that this is the final result of this of this interaction of course if one of the attractor is set to zero we will see only the contribution of the other attractor point okay if the second attractor point start to be very very strong its contribution start to be prevalent with respect to the contribution of the first one okay so let's give this these attractor points more or less the same strength okay like three and three okay and now we have these vectors here we have 144 vectors per 1 under the 44 points okay let's simplify this this twist just to have things more clear you see that there are 12 branches each one containing 12 points and 12 branches each one containing 12 vectors okay so if I move these points here using these vectors what I'm doing that right now I am let's hide the e vector display I am creating a new grid of point deformed according to the position and strength of the two attractor points okay so once we have these we can use a surface from points comment in order to rebuild a new surface starting from this new deformed grid now it has for a list of points so we can flatten these remember that these points appear in a tree structure so I will use this and it only asks for how many points do we have in the U direction okay now in the U direction we have this amount of points will actually not be some other point because this is actually the amount of of segments of spans in the U direction so if we divide a surface a length into two spans we will have three division points so if we divide it into eleven spans we will have 12 points per line so if I use this slider and plug it into you this will give us a an error because basically the the value 11 does not correspond to any value possible for this grid of point but if we say that in you we will have the value that is coming in plus 1 then this command is actually capable of building the deformed surface so let's hide the original surface and let's see how this two attractor point are affecting our original surface so I will turn off also the grid points and you see that this point starts to pull more if I increase its strength T start to push more if I increase its strength okay as you can see if this start to pull way too much the surface start to have some kind of weird self-intersection in this area okay so pay attention to this phenomenon here and not so it's very important because if I take this point and move it in another position yeah the correspondent action is going to being transferred to the new area of the surface okay as well as the second point so as you can see we have this kind of of very nice result and in any moment you can bake this surface and have the correspondent three-dimensional object waiting in inside your vinyl interface okay so as you can see vector attractors are way more powerful because you can work not only with the distance between the tractor point and the object that you want to this point to interact with but you can also consider the orientation and magnitude of the of the vectors okay so you can create very complex interaction by using vector vector or 3d attractors okay now how can we use this vector attractors in a real-life scenario for example well for example let's take a NURBS curve let's take a set of points like set multiple points and create something like this okay this curve here and we are going to extrude this curve vertically using a specific height of let's say slider eleven so we can create this kind of wavy building facade okay now what we want to do with this is basically you already know we can divide the main square and we can either trim this facade in order to create these panels now one tip centric let's call them so you see that we are dividing the surface into 10 by 10 panels okay and you see that that if you consider the horizontal stripes you see that their height is constant but if you take a look at the horizontal division like this one this pan this planet is pan here you see that this is way larger than this one which is way shorter than this one once again so why is this happening because dividing squared use a parametric domain for our our curve and surface okay and the parametric domain depends on the distribution of control point of our initially our curve and then our surface here so if we want to get rid of this what you must do in order to have a more regular domain subdivision and I so trim cuts what you need to do is to create a more uniform topology for your for your geometry in this case it's enough to create a more regular topology for our starting curve so I will rebuild this curve actually this curve has 11 control points I am rebuilding it with 10 control points so you see that there is some deviation but actually it's almost irrelevant ok so you can also create a slider here and define how many control points you want and and let's say push this value very very high in order to to have no difference between the repeat curb and the original one because in the end the only important thing is how many division you will have in the U and V direction okay so if I use this rebuild curve as the curve that I want to extrude just take a look at these panels in this area if I do this you see that the panel start to be to behave more regularly okay so there is no evidence difference in the size horizontal size of this panel these these these these and these okay so they're all more or less the same width just by rebuilding the original curve that we were using so pay attention to these details they're all depend on the on NURBS apology of the involved geometry now if you want to go deeper into topology problems in in Rhino and therefore also in grasshopper I do recommend that you have a look at my book simplified complexity which is almost all about NURBS geometry and topology and also all tips and tricks like this one that I already explained but anyway we now have our our panels here and let's say I want much more than this so I want more panels like this like if it was a curtain wall facade on over this this this building okay now what I want to do I want to define this as a lower system in order to have this facade interacting with with the Sun for example so I will take a point of course there are more intelligent way of creating a Sun system in grasshopper you can also use a default Sun system provided by plugins like ladybug and and so on but anyway I will rely only on one single point that I can move around in our scene freely okay now what happens if I use this kind of of geometry this is a concentrated attractor okay so if I use it I will have a different orientation of this facade with respect to let's say the Sun so at this point is the Sun it means that this sun rays will be illuminating the heating this facade from this direction while this facade will be hit from sun rays from this direction which is different from this one but you know that the Sun are parallel because son is considered to have an infinite distance from any object on on earth okay so we must let's say provide our model with this particular situation so what I will do I will create a bounding box for our original facade which is this one and then I will create the I will calculate the centroid of our volume here which is this and I will connect with a vector to point this son with the centroid of our volume okay so this object here is going to be the son I'm going to change its color to a yellowish color so this is let's call it son let's add this to the group and here we have our fantastic son and so we have the main vector which is basically indicating the direction of the sun rays defined by this vector connecting the Sun with the centroid of our facade system okay so basically what we need is to take the son move it up slightly and then let's say give it some kind of position here on left of our of our facade okay so basically if we take a look at this vector with vector display like this I will apply this vector to the Sun in order to know it's the sunrays orientation so basically what we have here is that the Sun will hit this part of the facade in almost directly then the incidence the angle will start to to to increase basically here this facade will not be hit by by sunrise and then once again the facade this area will be hit almost directly and then also this part will start run away from the Sun light direction okay and so we want the panels to interact with this with this situation here so how can we do this well first of all we need to know the inclination between the sunrays and the orientation of the each panel okay so we can evaluate the surface of our panels remember that if you work with parametric coordinates you must repair ammeter eyes the the surface that you are evaluating and what we need we need just one point on the surface of the panel let's say the center point so I will use a setup coordinate like zero point 5 comma zero point 5 comma zero and here we have the surface frames at the centre of each panel now I don't care about the surface frames what I what I need here are the is the orientation of each panel and this is given by the normal direction which is the N vector now the N vector is represented by this blue axis which is the W axis followed for the panel and you see that it's pointing in the wrong direction okay so we already discussed this what I'm going to do I'm going to take this NURBS curve the problem is is that the the surface is pointing on the wrong direction but as I told you you can try to switch the surface orientation to flip the orientation but this normally doesn't work it is not just like flipping the normal direction of one surface you should need you should have to change the whole parametric coordinate system of the surface okay so the easiest thing that you can do is work with the geometry that has generated the original surface like this curve for example so I will use the flipped curve because there is only one parametric direction for a curve is the width it's different than a surface which has three parametric Direction UB and one curve is only one parametric direction which is T so if you flip T then you will let the inverse of the original or the actual curve so if I do this and use the new curve we should note that all the z axes are now pointing in the in the right direction okay so just another tip and trick for our grasshopper definition so here we have the normal vector now what we need to do is understand is calculate what's the inclination or the angle between these normal vectors here and our sun rays direction so this will give us the orientation of the panels with respect to the position of the Sun okay so if we go into inside vector toolbar vector you will have the angle component here and we can calculate the angle between the normal vectors and the sunrays vectors now this angle is in radians okay and nobody likes to work with radians so I will use a decrease component that converts angles in radius into angles in degrees and you can see that now we have nice angles expressed in in degrees okay okay then so basically if we go from the top viewport we will see that first panels are are here on the on the left eventually so the first angles that we have here refer to the panels that are here so basically what we have is some vector is directed like this and the normal vectors here are in this direction okay so if you consider this vector applied here this is the angle that's being measured okay so it's less than than 180 but it's more than the 90 okay so if we take a look at once again at these values you will see that there is 132 water before and etcetera etc etc okay so it means that when this angle tends to be 180 it means that the Sun is hitting the surface of our facade more or less perpendicularly okay so when this angle is close to 180 eventually what we want we want these panels here to shut down and close in order to have less sunlight entering the rooms behind this facade while if the angle tends to be let's say 90 degree we are already certain that the sunlight is not hitting the surface not even not even hitting the surface actually so the surface is not being hit by sunlight okay so 108 we want the panel to close what and 90 we want the panels to to open wide okay so if we remap these values here which have a range defined by bounds so we know that the range is between 66 degree and 162 okay we could also take into account that we don't want to consider angles that are smaller than 90 but anyway this is something that that eventually requires some data manipulation and we don't want to deal with this at the moment so I will not get rid of of angles which are less than 90 degree I do recommend eventually that you take a look at my grasshopper data manipulation web course on my web page in order to to face this kind of situation as well so I will remap these numbers in a new a new range what I want to do is that you see that this is this 10 well actually what we can do is when I am let's not consider this at the moment eventually if you want in in the future and you have if you have this curiosity we can discuss this after the course I don't want to waste time with this particular thing right now so what I want to do I want these pin panels to scale up or down okay so the target domain is going to be the scale factor so I'm going to use a constructor main just because I don't want any zero scale factor where we can say as one and a will be the smaller scale factor for our panels okay like this and what I need to do now is scale our panels which are this high so trim here the center of scale is going to be the centroid of this panel we have it here it's this point here okay so let's do like this you see that we already have half the size of our panels because scale factor is set to 0.5 and I will use the remapped values as the scale factor okay and you can see that for example in this case what's happening is that the panel are becoming smaller where there is no direct sunlight and larger when there is direct sunlight hitting the facade I want this to be the opposite okay so if I want this to be the opposite what we have right now is that let's move this a little like here this vector here is irrelevant what what I need to do right now is invert this domain okay so this domain ranges between zero point ten and one and I want instead a domain that ranges between one point zero and zero point ten so it's the opposite and you see that basically the patterns are getting larger in the area where there is not exposed to direct sunlight and they are getting smaller in the area that is exposed to direct sunlight and of course if I start to take the Sun and move it in a different position you see that now this this part of the facade is starting to be hit by direct light what this part is being not hit by direct sunlight okay so you can see that according to the Sun position you have this little system or facade system interacting with the Sun position which is something that you can also create in real life architecture simply by using for example light intensity detectors or sensors and use some some motors to to manipulate or to determine the orientation of lower system on your facade okay so it's very nice let's see paneling application to a real life scenario okay so we are basically using an attractor a point attractor in order to determine the variation of a paneling system onto an organic facade okay so that's it for the attractor actually working with attractor is this is something that goes much more deeper into into the theory than these simple examples but I wanted to give you just a glimpse at the whole range of possibilities that you have with paneling and attractors and a combination of the two things of course the potential of these two workflows combined together is infinite okay so you must as always try and experiment and and discover new new features with with practice so next thing that we are going to examine are the so called catenary structures okay and for this we will be using the kangaroo plugin for physics simulation in grasshopper
Ähnliche Videos
How Persia Made Ice Without Electricity #HistoryShorts
theshadowofempires
936 views•2026-05-15
How Ancient Japan Defies Earthquakes Without A Single Nail ⛩️⚡ #shorts
JapanBeyond_History
860 views•2026-05-17
Boeing C-17 Globemaster III | The World's Most Advantage #military #militarytechnology #shorts
Miltechidn
847 views•2026-05-15
Jeff Lutz's Drag and Drive Pro Mod is BACK with a Noonan HEMI and FT700PLUS! | FuelTech USA
FuelTechUSA
163 views•2026-05-15
The Brake Temperature Explained
PositiveAttitudeAviation
833 views•2026-05-18
Corebooting The Last Great ThinkPad
theradlectures
324 views•2026-05-22
NC750X DCT 2026 - Shock Therapy - Little links, Big difference
Adventures_NC750X
185 views•2026-05-22
The Most Expensive Commercial Airplane in the World | Worth $445 Million!
AeroMonitor
108 views•2026-05-20











