Blender 3D: Your First Geometry Nodes Project | Bad Normals | Skillshare

Playback Speed


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Blender 3D: Your First Geometry Nodes Project

teacher avatar Bad Normals

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

    • 1.

      Intro

      0:35

    • 2.

      What are Fields?

      10:15

    • 3.

      Planning the Raspberry

      0:42

    • 4.

      Adding the Drupelets

      8:24

    • 5.

      Shaping The Drupelets

      12:10

    • 6.

      Creating the Leaves

      12:12

    • 7.

      Raspberry Interior

      9:37

    • 8.

      Raspberry Tail

      7:43

    • 9.

      Hair

      6:38

    • 10.

      How to add materials?

      5:13

    • 11.

      Bonus: Cream Animation

      10:47

    • 12.

      Outro

      0:24

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.

2,083

Students

29

Projects

About This Class

In this class, I will teach you the principles of Geometry Nodes in Blender 3.0. Geometry Nodes allow for modelling of things that could be hard otherwise, like nature for example. These techniques and mindset are applicable in pretty much any node based software, like SideFX Houdini or Touch Designer.

I'm a huge fan of practical learning, so there won't be too much theory - instead, we will start with the creation of the raspberry right away. You should ideally know some Blender basics to follow along comfortably. 

Meet Your Teacher

Teacher Profile Image

Bad Normals

Teacher
Level: Beginner

Class Ratings

Expectations Met?
    Exceeded!
  • 0%
  • Yes
  • 0%
  • Somewhat
  • 0%
  • Not really
  • 0%

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.

Transcripts

1. Intro: Welcome to the class. My name is Martin and I am a freelance 3D artist. I've been using Blender for five years for about this time being doing some client work, some personal work, and also have a YouTube channel on YouTube. Tutorials and something in-between. This class will teach you how to create the respiratory in Blender treatment 0 using geometry nose. So without further ado, let's start. 2. What are Fields?: Before we actually start creating anything, we should understand what our fields, fields are basically just a bunch of values on an object. For example, if I delete this cube with an x and I shift a add a plane here. I have a plane which has a tap intended node, which has four vertices. Vertex is just a point on a mesh which allows us to create different, different forms. For example, those vertices up, then they are moved up. The mesh is tilted. Now, these vertices have different numbers assigned to them, so they have different data. For example, this vertex here, if you go to the top Mode, top view here, this vertex here has a position of one on the x-axis, one on the x, the red one here, and one on the y-axis. So this vertex here has those numbers for each position. And also it has the height of 0 on the z-axis. It's not moved up or down. This vertex here has the position data of one for the x, one for the y, and 0 for the in z. If you would move this up by one. So rubbers g, z and one, this now has the location data of 111. This is one type of data is point could have, this could also have some other properties. For example, we might create a vertex group on this plane. I'm going to go into the vertex group object data here I'm gonna add vertex group called only 1, and I'm going to assign this vertex group. Do this vertex. Here. You do this, I'm going to click Assign. And now we have another block of data which is a vertex group. And this has added East part of the vertex groups. So it has the value of 11 means true, 0 means false. For all of those other vertices. This is of course 0 because they are not part of this vertex group about kind of other data that we have for these points. Well, we could have an index. What is an index? An index is just the number of a vertex. So this one here has one, this one here has two, this one here has three, and this one here has four. We can do different things with using those numbers. So let me show an example. I'm going to open up a new site panel here I'm going to go to Geometry node editor and add a new node tree. Now this is for an example purpose. I'm not gonna name this. Now we have the inputs and the outputs, right? So if you wanted to do something with our object, we have to do this on the way of these mesh data flowing from this node to this node. Let's say we want to delete the vertex that is part of our only 1 vertex group here, or that we would have to add the delete geometry node. So let's take a delete geometry note and plug this here. Very simple. Now everything has been deleted. And this is something we don't want. We only want this to happen on this point here that is part of our vertex group. Now the other inputs we have here is a selection. This means that we can select different parts of the mesh that can be deleted. In this case, delete it because it's a deleting node. If you wanted to input the vertex group here, you would be tempted to search for a vertex group. And to be honest in my opinion, this would be a very logical thing and blender should have this functionality, but it doesn't. Instead, we have to plug from here to there. Now we have a different input. How can I access this? Go to this modifier at happier, if you have the selection here, I mean, you can make this one which means selected everything gets deleted or 0, which means everything will be kept. But there is also another functionality which is this little spreadsheet or this plus sign here, which means that we can use a vertex group as an input. So I'm going to click here. Now we have those drop-down menu here. And we have this selection called point only 1, which is our vertex group. I'm going to click this one here. Now we have deleted this point and we have kept all of the other ones, which is logical because our vertex group only has this point as the input. Let's say we want to delete the inverse of this thing. Are you going to add a new vertex group with the universe? No, we don't have to do this and this is the power of notes. We can just inverse this selection here. And we can do this by using a Boolean math nodes, which is, which is, which is, which is looking like that. Well, you're asking what is a Boolean? Boolean is just that either a true or false in case of this delete geometry node, I mean these other can be true or false. There is no second guessing gets either didn't point has been deleted or it has not been deleted, it's kept. It's a simpler we have different operation here AND, OR and NOT. Now, if you plot this here, the end operation needs both of these inputs to be true. If I tick box here, then this vertex group is true. And I mean it has been deleted, or means that both of these inputs are taken into account. So right now we're deleting this point and because of this tick box or so all the other points. But there is also the third option not, and this deletes, basically inverts everything that we have. So it is giving us what's not input here. So in this case, these three points, and if you enable this, we have gotten rid of all of those tree a point here. And this is looking pretty nice right now as the last example before we go on and moving to our Raspberry. But I'm gonna show you is how for example, if you have more of 0, I'm gonna move this one down by exactly one meter. And I'm going to select all of those with a and we want to right-click and subdivided, subdivided, subdivided, subdivided. And now we have like a massive amount of points, not very massive in case of a tree software about a large reasonable amount. We can, for example, to do so that we delete only all of the indices that are higher in value than seven. For example, each of those points has an index of 12345 and we can delete according to the indices. So let's add the delete geometry back here. And let's also add an index node just to have the input of indices. Now let's plot this here. And visor see, we have everything disappearing. Well, that's pretty logical because only the first one has the index of 0, which means it's not going to be deleted. Or the other ones have the value of one or larger. So this means they are gonna be deleted because there are one or roger. Now let's use, for example, a compare node, which gives us a very nice way to control this. As you see, this outputs a Boolean, which means a true or false. We can make so that every point that is less in value than ten is going to have a value of true. And every point that is larger than ten is going to have the value of false. Now if you do that, rarely see all of those points that have the value of ten, less than ten are removed. We can track this value and remove even more of those and you make something like that. The reason where they are placed so strangely is that we have subdivided the plane. If you do this once more, like subdivided once more, then this pattern is going to change up like that. And yeah, this is looking pretty cool to be honest. This is how the fields work. Basically, we have a data block for each point or for a mesh. And we can manipulate this and do different stuff with this. We can also move, move those, move those things up. For example, if you have a set position, this means we can set position of certain points. We can, for example, move up all the points that are having an index less than ten. So let's do this. First, you have to isolate our index less than ten, right? So I'm gonna take a compare floats. This is called a compare node in Blender 3.1. So don't be discouraged if you don't find the compare floats node. Let's make sure that all the floats less than ten are selected or the indices, sorry, I'm going to move this over here. Now we have to move those up. Now, moving things up is moving them on the z axis. And the z there is the offset X, Y, and Z. We're going to move this up on the z-axis. But we only wanted to move a certain amount of those are certain, less than ten indices, less than ten. So we have to somehow input this into the Z here. But how did you do this? Because there is only one input, whereas for that we have a node which is called the combine XYZ, because this is an XYZ, XYZ, XYZ. And we can do that as, I mean, just notice that this note is pretty self-explanatory. You just have X, Y, and Z here. And we can input, for example, this here. Now this has moved up all the notes by that are larger or smaller than ten. Let's do something like that. And now here's the question to you. How much do you think they have been moved up? They are moved up by exactly one unit, which is because the Boolean here, which comes from here, outputs 0 or one. As I told you. This means there are also being moved up by exactly one unit. And this is very true as you see, if I take this ruler from here or measure, and I measure, I get exactly one meter or so here it is exactly one meter of distance up, right? So another thing to have gotten a good idea of how these things work with notes. And we can start by creating our respiratory. 3. Planning the Raspberry: Now before we actually do any like noting stuff and this we should actually plan what we want to create. Because things are a lot easier if you know what we are going to do. We don't want to create an animated transparency because this is a bit too complex. So we just want a shape like that, some bars on the shape, and then we need a leaf part and then also a little tail. Also, if we look at the respiratory, you see it has some little hair on it. So we can add those little things here. I know there are spurious looking, not like something you would like to eat right now. We have four things that we need to create something. Hopefully, I bid more beautiful than this one here. Yes, Let's continue now. 4. Adding the Drupelets: Now we're finally in the stage of making a respirator, which is exciting. Do you do this? Well, you have two options to either started working in right here or to go to this geometry nodes of workspace. Now, I don't particularly enjoy this geometry. Notice workspace for two reasons. One of the reasons is that this spreadsheet here, which in the idea should be to show you what you're working with. Show you the different fields, different data blocks for each point. In my opinion, this don't just work. It almost never shows me what I actually wanted to see. Probably just close this. So let's start As you, as I told you, we need the object at this raspberry onto. So let's add this to this QPR. Now, to create a respiratory, we need some points on this cube. As I remember, this was how this respirate looked like. It has to have a U-shaped interior. So let's first create an U-shaped interior. I mean, we could create this with notes, but this is just very, not very intelligent because this is a lot faster to do manually. You should use notes when this gives you an advantage over manual work. In manual work is faster. Use this when notes are foster, use that. I mean, it's always a question of what is faster for you. So let's create this respiratory for that. Let's right-click sub-divide and subdivide this a bit more like fat. And let's turn up the smoothness. So we have a, like a ball. Let's maybe even subdivide this a little bit more. So we have things like that. Now this is our raspberry and you're saying no, this isn't the respiratory. It's more like a sphere. More like droplets of raspberry. Yeah, this is okay, but we can later procedurally change the scale and all of those things with this respiratory. So we can keep this right now. This is looking nice. Now let's add some droplets on this raspberry. For that we just need a amount of points on this surface. And on those points we can copy a droplet. This is how this logic works in pretty much every software Houdini, Maya B first, and also blenders, Geometry notes. This is just how the logic is. We can take a surface, we can add, for example, two points and ontos points. We can add a cube and a cube. And this here are instances which means they are actually the children of a same, of the same cube. They share exactly the same functionalities, shapes, all that stuff. The only thing that can be changed is the size and rotation until location. Let's add a bunch of points on the surface. For that we have a distribute points on phases node, right? If you put this here and we have a lot of points. Now these are just like temporary. They don't mean anything. They're just here to show us where our future droplets are gonna be. Now we can increase the density and we have a lot of those. And as you see, we also have here our friend from the introduction, which is the selection. So this means vary, want to have those points. Now, you might be thinking, this is nice because I definitely don't want to have points on the top of this thing. And you are making the right choice because the Raspberry doesn't have points there. So how do you vet remove this? Well, as you remember, how can we do this with vertex groups? We can go to Edit Mode of this mesh with tab. I'm going to disable this note here with M key. So this is now unmuted, unmute it muted. And what I'm gonna do is I'm going to go to the extra remote, is select the points up here. If I select just without the X-ray mode by dragging, I only select the half of the mesh. But if I use the X-Ray mode by Alt Z, clicking old C, then I can select a larger portion or I can go through diminish, as you see here. Now I can do so that I go through the vertex groups here and I enable, I click on this plus sign and I'll have this group here. I'm going to call this no, true. Let's, alright, I'm going to assign this. Nothing has happened, but now we can add a, drag the selection to the selection and go to the Modify tab and click on this little thing there. And we can select our no droplets and oh no, we have droplets now on the only this area. Mean it's a it's a problem, but not a huge one because this is notes. I mean, we can just add a Boolean math and inward this switch system not and now we don't have those things there. We just have this looking like that and we have way too many points as you might be thinking. So let's instead. To visualize this a bit better, like how much do we want and how, what is the size? Let's add an instance on points node. Now this node does it so that it adds an object on those points. So for example, we can use a cube. I'm going to search for a cube. We can track the cube to the instance. And now we have a really large amount of cubes which are seeing. And this creates this kind of cool effect as you see here. But we don't find as much. So let's decrease the density for Baldwin. And notice you have, well, quite a lot of points and quite a lot of cubes. We don't want this to happen. First, of course, we don't find cubes. So let's delete this and let's add an icon sphere instead. So I ecosphere is just a sphere which has, which is like triangular, has triangular faces. And you're saying this is not a sphere? Well, technically, no, But if you add some subdivisions, we have things that look pretty much like a sphere. This also, I mean, ordered it looks like a pretty discussing raspberry that is growing in the backyard of your grandma and those respiratory bushes that haven't been taken care of in the last 15 years? I don't know even why did say that. This is how it looks and what we need is to decrease the density, decrease the size of those. The radius is the size of the individual droplet, and we can do something like that. And I think you have noticed a problem that we can change the side but change the density here, but some of those droplets are intersecting and this is not very nice. So we can do steal things in Blender. Do you combat this? The first one is adding the Poisson disk distribution motor, which is just basically the same thing as before, but you now have the minimum distance between points, which is very useful. So if I increase this, you see we have increased the density between the points. Now we have those respirators here looking pretty nice and small respiratory I like this but they are still intersecting. Not as hard as before, but not very nice either. There should be more like in this location, there should be curving, more in like, more like that. Now the proper means that in Blender, blender is a very this feature or there is no feature in Blender is quite a new one. For example, if you were using like a really like an industry professional software, I'm not saying that vendor is not the professional software. I mean, you can make some really great work with this, but there's notes section isn't as developed as most of the industry standard notes softwares in Houdini would make this so that you convert those triplets into volume. And then you have two droplets and you're going to make them expand. And they are going to expand and basically create like a thing like that. They are not intersecting. Blender is not 2D. And if we cannot do this, but we can fake this in some nice ways. And although we cannot do this in Blender, we can make a similar thing and we just have to use logic for this one. 5. Shaping The Drupelets: Instead of this sphere shape, which they are right now, we need to make this droplets, you know, more like, more like that. We need to scale those facing outwards. How do we do this? Well, we need to scale them, like make them larger. So for that, let's use a set position note. We have also a scaling notes, so scale instances, and now we can scale those instances and it works pretty well. But in our case, we want to have some more elaborate scaling. So for this one we need a set position node. And you're asking a case, elaborate, what does this mean? This means something a bit more complex than new venue might just get by just scaling these things up, right? This means that we are going to start scaling these triplets. At this point. We are scaling this area here further from the center of the raspberry. This can be done by first calculating the distance from the center. Just creating like a basically calculating the distance here. And then based on the distance I basically using like the selection thing here, only select the outer area of this triplet and moving this further from the center of the object. This is pretty nice, should work. So how do we do this? Well, first let's deal with the, with the scaling of the mesh, right? So for that, what do we need? Easter scale along the normals? If you just plot this here right now, this is doing nothing. And to make this work, what do we need to do is to realize the instances. Now you're asking, well, this is a bit too much for me. I cannot understand what the normals and realizing instances, what is this? Well, first, steel width, what is the normal? The normal is basically, for example, if I have a, I can actually do this that way. Let's decrease the subdivisions of our droplets. For example, this phase here has the normal of like that. For example, for this face here, the normal would be pointing in this direction. This is just showing us in which direction the face is pointing at. If you'd like to use this information, we need to use the normal. Now if you scale those instances based on the normals, well, this means every phase is going to be scaled in the direction that it's facing to, which basically means we are making the mesh bigger. We are making the droplet bigger. I'm going to add one to three levels. But we only wanted to make the droplet bigger when it is at a certain distance from the center of the Raspberry. This sounds complex. Well, this maybe is, but I'm going to explain how this works. We have to use a mix RGB. Note. Now, what is that? Well, this means you have to have in some places, some scaling alongside the normal and some places not. So this means we have a mixed, mixed node here, which can mix between nothing and the normal displacement. Displacement means moving things outwards. Now, the question is, well, it's an RGB, it's a mixed RGB. How can you use colors to display something? Um, well, the thing is that actually colors are just three values. I mean, it's R, G, and B. I'll revert also happens to be a three-dimensional space. So sometimes in the 3D pipeline, colors are used to transfer vector information. So for example, if you have something, let's say we have a value of just a blue value. This looks like that. Blue value of one. If you use this thing here as the offset of our mesh, then what do you think would happen? The mesh would move up because the blue here, the RGB is like x, y, and z. So if I add this mixed note, these things move up like that. I'm sorry, this first one has to be black. Like that. Nothing is black. Nothing is going to happen with this mixed node. Now this moves up. And if you use the normal as the second thing in order moving outwards instead, this is how these things work. This is just the chlorides are just vectors, are vectors can be expressed as Chlorus, actually another they can control between nothing and some abnormal displacement. We should be able to use a factor here. That is based on the distance from the center of the raspberry. Well, how do we do this? We need to calculate the distance from the center of the raspberry. For that, we have a position node, which is giving us the position of each point in a mesh. Well, if you plug this here like that, this is very weird things happening here based on the position. And this is happening because this is the positive direction on the x-axis. This is the positive direction on the y-axis and on the z-axis, and the opposite directions are negative. This means here, nothing is happening but here, oh yes, we have some pretty, pretty bad displacement happening. So if I move this for example here, I mean you see these are getting bigger and bigger and bigger or the factories are actually kept at one. So it cannot go bigger than one. And this actually looks kind of nice. I think this is looking pretty good. But we are interested in having the length of each point from the center distance to each point from the center. For that, we can use vector math because we are dealing with vectors. A purple thing means vector. Yellow is color. Float is this crazy thing, which means just a single floating point value like floating-point means with decimals, so 0, this is a float. Also we have the purple thing, which Boolean, which means just true or false. There is actually one more type, which is an integer. And an integer is this green thing here, which means just a whole number. It is either 01237,007, and all of those things are integers. Now we can use this vector math here, connecting to position into this thing and then taking this length operation here we have a lot of different things here. I didn't even I think use like a third of those. For example, refract, I have never used, but length I have used. This is a very useful runs. So as you see, this takes a vector and calculate some stuff with this and outputs a float. Now this float here is just a single value at each point. It doesn't mean it outputs only one value. It outputs one value per each element of our mesh. A vector outputs three values per element and float outputs one value. Now if you plot this here, well, you say, well, they're telling us this is exactly what it was before. Let's fix this. Fixed this because we should actually create the larger contrast because right now, if this is like, I'm gonna delete actually all of those blue things. This can be a bit distracting. So if in the center here we have the distance of 0, Let's say here we have, let's measure homeostasis. Do we have here three meters? This means like the one meter is going to be somewhere around here. I mean, it's already full size here so we cannot see the difference. It should reach the fourth side somewhere here. For that we have a color ramp, right? A color ramp and put it here. Now, you still cannot see too much. The reason is that the color ramp. If you spend there before, you know what the colorRamp is, if haven't been doing too much stuff with it, It's basically just a contrast thing. Let's make sure that the range actually, let's make sure that one is not here, but it's here. So we have to we have to trick the color ramp, you have to fool it to think that the one is here. How did we get from tree? One where we have to divide by three? So let's use ordinary math notes. Put it here, and let's divide by tree or with three. Now we should have like a reasonable thing there. Let's see if those things work. Yes, they work. As you see. We can scale based on the distance from the center. We can increase the contrast and stuff. This is the maximum thing and I'll just looks pretty gross and we don't want this. Let's fix this with first, let's add some subdivisions like four maybe to make this a bit more detailed. And let's see what we can do here. Basically, it's just like the play with the colorRamp right now. This one here as the value of one. By the way, as you see hue saturation value. This has a value of one. And if it is 0, this means nothing. This means that the full blast. So let's do so that we like fat. Now I'm going to decrease this. I want them to be a little bit like flattened on the edges. And also you see this thing here. It looks a bit like jagged, like you can see like a seam here. Let's make this a bit more smooth by using a different algorithm like a B-spline. Now this made is a bit more smooth. Let's see this from the top. Yeah, I think, okay, this actually isn't as smooth as maybe it should be. We're going to add another colorRamp thing here and we can change its value to see to make things a bit more, even more smooth. Now these look a lot more like your respiratory droplets bacteria intersecting. So let's do so that we decrease, decrease their size a bit like 0.7. Well, something like fat, maybe even like 0.66. And now let's just, yeah, These are looking pretty okay. Maybe we can just add some more contrast here. I can increase the value a little bit. Okay? Okay, These are looking pretty nice. So this is how our nodes are looking right now. Look at those, see if you have some maybe differences that you may be like maybe we don't like. So you can see what I used. Now let's go back to the geometry notes tab. And if you feel like the holes here, I mean this just something you have to play with, care for it. So, for example, decrease the distance, minimum distance. Now this looks a bit better. Maybe you can decrease this a bit even more. And I think now this respirate looks rather okay. It doesn't have the perfect appeal on those things here, but you can also change the seed and see if we can eliminate those problems or the droplets are ready and the next top is leaves. 6. Creating the Leaves: The model that leaf, I'm just going to add a plane, shift a plane. And then I'm gonna go to Edit Mode tab. And I'm going to move this thing here. Right? Now. I'm going to with G and I'm going to press Control R at some luke cuts and drag like maybe that doesn't matter how many actually, just some nice detail. And I'm going to try to like that, tried to have Squarespace. And I'm going to select the last row of those vertices. Press O, which enables the proportional editing up here. Which means that for example, if I scale now with S, then I have this little circle appearing. When I drive with my mouse wheel, I can scale this thing up. And now I have a lot of different ways to shape the slave. I want to scale on the y-axis lie. That. This looks pretty nice in my opinion, like a nice leaf, sharp in the edge. And I'm going to also shape this in a nice way. So I'm going to rotate this. Maybe. How we're actually respire leaves positioned. Let's see the reference, something like that. I'm rotating with R by the way, something. Yeah, now we have a leaf like that. I think a bit to start again, doesn't like this. Our respiratory is kind of like a small cute parity, but we don't want such a rich leaves to it. So let's delete those things here with x, delete faces, and maybe even your faces like that. Okay, This is nice. But I'm going to add a solidify modifier. Solidify to make this a bit more thick, you don't see anything. Well, let's apply the scale with control. A apply scale. You don't still see anything well, let's increase the thickness. Something like that. This is a bit too thick for a leaf. I think. Let's do something like fat. And let's, let's add a subdivision surface modifier. And now I think the leaf is looking pretty. Maybe we don't even need subdivision. Well, yeah, we do actually need, I'm going to also scale the last row here down so that we can attorney off the proportional like that. And now we have a leaf of air respirator looking pretty okay. Let's enable those. Let's actually keep those modifiers. And let's add some geometry notes that you make this leaf a bit better by using a noise texture. So I'm going to add a new set of Geometry notes. I can do this here. I can also add a geometry notes modifier, like fat into the end. And now I can set the position of a relief using a noise texture. Let's add a noise texture, whereas it here, and let's plug this into the offset. Now this looks like that. We don't want this. Let's just decrease the scale like a little bit like fat. Now this leaf has been randomized and I think we should also scale this on the y-axis just a little bit. Yeah, this, this looks like an acceptable leaf. In my opinion. I want to call this a leaf. Now let's take this raspberry and let's start adding these leaves here. These are respiratory part. Notice go forward and let's add those leaves. We can add those by adding a circle. And then on the circle we are going to instance those leaves. So for example, if you have a circular five points, we can add five leaves if you have a circuit with 7.7 leaves and so on. So to do that, we need of course, a circle, a meshed circle. I'm going to use this as the input or the output right now, it looks like that. Now we can instance on this thing here. And you're asking photography instance on this thing here. Instance some points if you even haven't distributed the points yet, like we did with respire here. I mean, first you had to distribute, then we had an instance. Well, I'm just doing this because this circle has points, right? It has those little vertices here In the edge of the edges, in the ends of the edges. So basically if I now drag in our leaf here to denote data instance this, well then we have a lot of those. And if you change the vertices, then we can, for example, only have three. For a triangle. If you make this like a pentagon, like pentagon, then we have five of those and so on. They are way too big, right? So let's change the radius for a moment to see how this works. There are way too big. So how do we fix this? Well, we can just decrease the scale from here. So do something like that. And then let's make the radius again one meter. This isn't very nice because they're not pointing in the right direction. In which direction should the point at each one of those should point in their position direction. And this sounds crazy, right? What is the position direction? Well, this one here is positioned here, so it has a vector pointing here. This one has a vector pointing here. As I told you remember, we calculated. And we used to positional before. We can use the position node now as the rotation, right? Plug this here and this, well, this isn't very nice because we actually don't want to use this directly, but rather to align our current rotation, which comes from the leaf to the position of those circle points. For that we have an align. Note that we can use to align an euler vector or there is just a, was a scientist and we use his name for some mathematical stuff. Now we can, for example, align this to the vector pointing upwards, which is not what we want. But for example, for kras, this might work, but we want to align the deposition like that. Now they are all pointing in the right direction with the factor we can change this. There are also some other cool ways you can use this for this one here it seems to work. The best way. You have to see which things work for you. If you don't find anything that works here, you just have to take the marries or leaf, leaf and rotate 30 in the edit mode to find an angle that works for you. Now this is working. But there are also, we'd like This circulates bit too big, so let's make this smaller like that. This looks pretty nice for Asperger. I think. Let's join those together. So now we have the respiratory we can drag here. We have the leaves that we can drag here, but we would like to join those for you guys to try it. We have a joint geometry node. You take the joint geometry and your plot, this and this here and now they are joined, although it's a bit like two small layer in the middle. So let's move this up first. Let's take all those notes and put them here. And you might be tempted to just, I mean, let's move this leaf up here. And you might be tempted to just take this thing here and select this and move this up. But it actually selects the whole object because they are in the same node tree. Do this, we have to add a transform node after the leaves and move this up by the among that we want. For example, this. Now let's just use the magic of node-based stuff and let's just make it have the scale that we want, for example, something like that. Then the scale should be larger but also like smaller. Do we run something like this? I think the leaves are a bit too to a uniform or there doesn't look very nice. So actually I don't like the geometry notice modifier here. So I'm gonna delete this geometry on welfare and delivers now looked like that. And I'm going to scale the leaves on the edit mode like that. This looks like that now. And also don't like how they are rotates. So I feel this could be a little bit more smooth. I'm going to crap this area here with the X-ray mode turned on from here or with old C. And with proportional editing, I'm going to grab this immodest smaller like that, I think now the leaves are looking pretty cute and nice on this raspberry. And also they are a bit, a bit too cute and nice. I mean, they don't look too natural, so we should scan them a bit more randomly. For that we need a random value. Let's take a random value and put this here and plug this into the scale. Now we have those different options here. For example, float, boolean for example, this means the scale of either 0 or one which we don't want. Probably. Boolean isn't very useful in this case, we have vector, which means we can use different scales on x, y, and z. We don't want this either, or actually we can use this. So let's put this here. And this creates something very, very weird. Like things are a bit distorted. So let's make sure our minimum value is 0.6 or whatever works for you. This is not a number you should definitely use. It just works in my case, let's maximum 65. Minimum could be maybe 0.5. And other leaves are a bit more different, and I pretty much like this. Let's also use a different different font. Let's also make them a bit different in the sense that if they are rotated to the sky or not, what we should do now, he said we should rotate. They are aligned a rotation to the z-axis to the sky and then variably changed with a random value if they are appointed there or not. Let's use another align Euler to vector. If you just do this like fat, we have vector pointing up x, y, and z, and the factor of one, then they are pointing up right? Like that. And we don't want this. We want just a random value that is telling us if they're there or not. I'd say the maximum should be around like maybe Sherman's journal seven. The minimum properly 0 knowledge you have to see if the minimum, because the minimum is the currently the minimum we can have if this is enough for us, I think there should be a rotated a little bit more down so we can change this in our leaf here. I'm gonna wrote it this turning off the proportional. And I'm going to rotate this a little bit like that and also move this to the origin point. Actually this will shift it a little bit. Now this probably looks a bit different, yet. We have to scale down the circle like that and also make the rotation here, right? So I'm gonna plot this to the factor. Now this is randomly up and down. We don't want this to be like that. We want this to be 0.1 maximum. Now the leaves, I think, a bit better than the variable before. Look a lot more cute. And I think they are finished now. 7. Raspberry Interior: Now let's deal with the respiratory interior and you're probably thinking this respiratory doesn't look too good because it's very, very like sphere-like. It's not like oval as the respiration of B. That's right. We should actually make this a bit more scaled like that, but we cannot see in this vat on the z-axis because this is scaling the whole mesh, we should probably use notes. We can use denote as the input here in the beginning of our tree because the notes are currently looking like that. This is their desperate parts and this is the or leaf part. They are joined to the joint geometry. Now if you go here, if you go here and we take a transform node, this means we can scale things using a, using a node-based systems. For example, we can scale this like that and we have basically like a corn plant think whatever. As scalar for 0.1.2 works nicely. Let's ignore the leaves that they are like Miss fitting right now. No indexes that this should be like me. Okay. This is probably a bit too. Yes. I think this is like fitting and all. But as you say, these things are not looking very nice, right? They are a bit our system that we created for making those look a bit better, like scaling them is not working properly. The reason is that we have scaled diminish. If disabled the scaling, it is working properly. If we enable the scaling with M key, I mean, it's not working nicely anymore. It's like shifting and stuff. What do we need to do is to also scale the position that we have here in the inverse way. If you have scaled our mesh, for example, I'm just going to do this very easily. If you have scale this by two, for example, then the things down here are not obeying to our system of normal scaling at all. What we need to do is to modify this vector that is coming in from here. For that we have vector math and we don't have a knot vector. We have vector math. And for that we don't need a, what is this called? We don't need a transform load or we even don't have a transform node for a vector. We just need to scale this, which is, which is essentially a multiplication. So let's take a multiplication node. Now everything gets multiplied by 0. So this means it's not working anymore. Let's put here one. This is now the same thing as before. It doesn't matter if this is enabled or not. You might be thinking, let's scale this by two. Well, this is not a good idea. If this doesn't work, It's actually has to be scaled with the inverse value of 0.5. Now, with the inverse value of 05, this is working a lot better than you see. It's working like that. 0.58 actually seems to work better. But the idea is this. And the idea is because before you had a mesh, our system, our system is based on a way that you have this mesh. And it, I mean, the colorRamp only accepts or needs like the system works if you have a distance of 12 here, this fixed distance now, and also down here. Now if you scale the mesh, what happens is that we have maybe like a longer the original one was here. So another color ramp has some different values. It doesn't know what to do. I'll put some crap, and this is not a good idea. What we need to do is make the colorRamp think that these values actually are the same. We have already done this here. But this was 40, like the whole gradient, like this is like just scaling the whole vector as it's a float value. And it's multiplying everything with the same number or in this case dividing. But we need to do this only on the z-axis that we are scaling this on, right? Let's make this work more automatically by scaling them from the same location and adjusting them automatically. Let the machine do the work for us. Instead, let's use a vector as an input, three values, I'm going to put one here. Scaling with 111 is essentially the same size. If you're doing this larger like that, I think. Yeah, this looks nice. Like 0.32. And then we input here. This doesn't work. Instead of what you need to use is to basically get the inverse value of this vector. This means we have to divide one by this value. Because in case of two, this what we needed was 0.51 divided by two is 0.5. If this is, for example three, then we need one divided by three, we need 0.33. And this works with everything. Switched us to division. And switch to the inputs and put one here. So this is one divided by this vector. And as I say, this is, I think currently working pretty nicely. Maybe this should be scaled even a bit more. So I'm going to increase this on the Colorado non-zero point five. Let's make that 0.4. Okay, I think this is looking, okay. Maybe, maybe, maybe let's just decrease the distance between those just a little bit more. So 0.6 to maybe just six right? Now this is looking a lot better. At least that's what I think it is. The leaves are shifted a little bit. Let's also move those leaves up by using the translation node. And now we have this one thing here. We don't like this. So let's go to the raspberry and let's change the seed of this play of those things until we don't have anything like that. And now let's just move this up a tiny, tiny bit more. The fix what we have here. Nice, this is looking okay. Now let's add the interior of the raspberry. For that we just doesn't, doesn't matter too much actually. Let's just take a cylinder like fat. Whereas our cylinder seal in there. Take the cylinder and plug this into the joint geometry that you see we have something in the inside of the respiratory. Didn't know if you can see this we already available. So let's change this by using courageous making this not as big, but it should be more like, and now, I mean, it doesn't matter. It's just there to give the impression that something is inside of the respiratory like that. And this doesn't I mean, it does look a bit too sharp. So let's add a subdivision surface anode. And notice up-to-date subdivision surface node to basically make this a bit more smooth and adjust not a philosopher's at the site segments to have just a sysadmins? No. Okay. Let's fishes the triangles. A switch does to triangles. And now this is working better. I'm actually going to disable those other things by first shift dragging over this. Now we have this readout here and also actually don't need this spot. And I'm going to just control drag over this one. And now we don't have anything inside here. This is the interior of the respiratory, not looking to gray. Let's add some sites segments like fat. And this is the inside. Let's move this up with a transform node like that and move this through here. Now let's reconnect the respiratory around this. And now we have a pretty nice interior. Maybe it is a bit too to strange errors. So I'm adding another subdivision surface. We're gonna hide this by using H to make this smaller. Now we have pretty nice photo respire here. I think. Maybe we should also move this leaves down just a little bit. Again. You see this one here is still a bit. Doesn't want you obey. So let's wrote it this on the z axis like that. And this is looking at the raspberry is pretty much ready. We just need a fruit on the top of the Raspberry. 8. Raspberry Tail: And now let's add the tip of the raspberry, which is like the root, I believe in some respiratory hover over this is called the, let me know in the discussion of this class. But mostly we already going to use curves for this one. So for that we are going to use a quadratic Bezier. Yes, this is a very beginner friendly name for a curve, of course, well done vendor. But anyways, this looks like that if a connected to the output, this is a bit too much share. This looks like that. Now we don't want this shape right? So let's make sure to start is in 000 right here, and the end is in zeros 01. So up here, the middle can be something like that and the n, Let's move this also. This was a bit, no, no, no. What am I doing here? Shortly? Modes on the y-axis instead or something like that. Then maybe moving up just a tiny bit. Now this is a nice tip for the, for the respiratory rate. Let's make this a mesh because right now this is a curve. For that we need a node called curve to mesh. Curve to mesh, put it here. And a profile curve, we need a profile curve because we have to have another curve to put around this curve and turn this into a tip of the respiratory we need. For that. Let's just use a circle. There is a cool technique where you can the curves circle my circle and turn down the radius like that. Now this is looking like that. I think you've got to understand how days circular pleasure own here. For example, if I were to use a star, I will plug this here. Then, now this is like this. A star looks like that. Maybe this is actually, maybe this actually might be a good thing for the respiratory. I don't know. It doesn't. Probably not. So let's use a curved circle and put this here. This should be thinner at the top and smarter down here. Basically, we need to change the radius of this thing dynamically for that because we cannot do this here. I mean, this is actually just a circle looking like that. We cannot change the radius of an object like that. I mean, this is just one object. How can you make different radiuses in different positions of the circle? Value cannot, because it's only one position. Instead, let's do so that they use the thing here. And we have a node called set curve radius. Set curve radius, it put it here. And the radius is getting bigger or smaller. Exactly the same thing as before, but now we have this little diamond here, which means we can input fields. Remember, a field is something that is different depending on the position or the element of the mesh. So we can use a thing called the curved parameter. Now, implant or treatment 0. This is called a spline treatment one. This is called spline parameter. So don't be afraid if you don't find this. But the current parameter is basically giving us a gradient from 0 down here on a curve to one in the end of the curve, we use this as the radius, and this creates something like that. It doesn't look too goods because it's exactly the inverse of what we want. And we have used the colorRamp. As you remember. We can take the colorRamp and put this here. Now, SEC, things have shifted around and I don't personally, personally for the pronunciation, I didn't personally like this. Instead, Let's go to View and turn off the auto offset feature right here. Now this turns off the fact that they are moving around and around and around. What was this called? Ramp colorRamp. Notice blocks here. And we can move this thing up like that. Now we can just, I mean, contrasts like that. It looks nice. Or we can invert this like that and we have a thing for the respiration. Now, the tip of the respirate isn't as thin, of course. So let's make sure that the black thing here isn't actually black, but it has a stronger value or something like that. It looks nice. And you see there is an empty thing here. We can use the fill gaps to fill this and that's it. Notice this one is also a Boolean because it is either filled or not. So this is another example of where Booleans are used. Now this is filled and is looking pretty, pretty, pretty. Let's do so that we know group this with a Command J. Have a look at those notes. Those notes. If you want to. Just to recap, it looks nice, right? Let's now connect this to the respiratory. So let's connect this to the join geometry. And we'll just do the output. And this doesn't look for a nice. We have to move this up with a transform node, transform translation and move this up on the z-axis and move this and right now down, this is, I think a bit too small for our raspberries. So maybe let's make something like that. I'm going to actually make this value bit larger. So 1.3 maybe, maybe even treat, know, this looks pretty cartoonish and actually like to look, but I'm gonna have two here. And this I think is pretty okay. Now the leaves are themselves a bit, bit your regular still afield. Let's add one final finishing touch before we touch the materials. Now, to do that, what do we need to just use a noise texture are due September position. I'm going to use a set position right here. Moving these things here. Use a noise texture and connect a nice texture to the offset. Now these are offsetting. And if I change the scale, they done anything. That's because there's instances haven't been realized. So instead I'm going to use a realise instances node and put it here. This creates those instances, makes, makes them into real geometry. And now we can displace them into all those crazy stuff here. And maybe we can do something like that with those things. That's just see if they have shifting, they are shifting and that's because the noise texture has values in between 01. But this means it gets shifted because they don't have any negative values. To compensate for that, we have to subtract something from this noise texture. And we're going to subtract exactly 0.5 like that. And now this is basically in the same location. This looks pretty okay. Maybe we just have to move this up a little bit and we have made the raspberry. There is one little detail left. And the detail is about those little hair that are growing out from the respirate itself. So let's make those and then we can call the respirate finished. 9. Hair: That those little hair as the last part of the respiratory itself, we must use basically the same curves setup that we did before. Let's do so that we first modeled this little hair which looks, which looks a little bit like that. Okay, so let's disconnect this group outward from the geometry. And let's use, again quadratic. Sorry, Let's use again a quadratic Bezier. Let's use a quadratic Bezier. Let's connect this into the output and we are using pretty much the same techniques as before. Let's make this stand up. Let's make this a nice and straight that Bezier. Zeros 00. Those things in the right place. Let's maybe make this a little bit curved like this on the x-axis and move the, make this like fat. Maybe this is even a little bit too curved like that. Now let's make this a mesh. Mesh, curved mesh here. And let's use a, you can use the same curve circle as the input. Actually we don't need it. It's not the correlation actually because this one has a lot of resolution and we're gonna have a lot of these little hair so we don't want to over, basically overuse the poly count. We don't want to make this too extreme on our computer. Let's use a curved circle. Put this here, and connect curved circle to the profile curve. Now the same story as before. We're going to set the radius. Put it here like that, and let's use the curve parameter as the thickness for this thing doesn't look too good. So let's decrease this here. Let's use a colorRamp to make this have the shape that we wanted to have. First, of course it has to be inverted like that. First thing shouldn't be as thick. In the end it has a little bit of a thicker thicker think there. So let's make the ramp look like that. But let's basically just throw this into the curves. And this one here should be white. So this one should be like that. This is the little thing that we are going to add on our respiratory, looks like that. And we don't need 32 for the resolution. This can be something even I think even three works pretty well here. Maybe you get some close-ups, Let's make next six. And I think this is more than enough for the spring. Okay, now we need to instance this thing on the respirator, but the problem is that it shouldn't intersect with the little droplets and we can avoid this 70%. Let's see. Let's connect the output to the here. And let's now do so that we take the same points, the same distribute points on phases to basically have like that. And we add an instance on points on those same points. So now we have basically, we will have hair growing out from each of those triplets. So we get taken instance on points. And we plug points here into the points. Plugged the hair that we created into the instance. And as you see, they're all pointing off course, this is not very nice, so we can luckily use the rotation of the distributed points to faces. And we can connect this into the rotation of those things. Now they're like, you know, there are way too many of those. So let's first remove some of those by using a random value into the selection that we are already very familiar with. So let's use a random value, which has to be, of course, a random value. Oh no. You can hold down Alt and track if you want to. For example, put this here and then remove this by holding off too, so nothing gets broken. And we're going to use the Boolean thing here and put this to selection. Now we can select either all of those are none of those. I think for about something like maybe that looks okay. Now we're going to rotate them on the z-axis to basically shift those all into the places that are between the triplets. Let's use a rotate instances like that and we're gonna wrote it on the z-axis. Now this doesn't do anything right now. Okay, this is the point, of course it doesn't do. It does something like fat. This was my point. The reason is it's in the local space. So every instance is going to have its own z-axis, which is not what we want. Instead, we want to rotate them on the global z-axis like that. This is going to get the most of those into the edges or between those triplets. Um, I mean, you cannot do this perfectly. There are always gonna be some things are not aligned, but it's going to look better than without the fist thing. Let's turn also down the scale by using a random value. Random value into this scale. Maybe maximum would be like fat, minimum, let's say 0. For this, I feel it's a bit too much. I mean, I feel they are a bit too thick. So we should make tip they're not as thick. And also a bit smaller. Think darryl, so it's smaller. And let's make this also. Move this a bit down on the z-axis, something like that. This is probably also a bit too thick, so I'm going to just take a Math note and multiply the radius of those things with 0.5. Now they are a bit thinner and this looks more acceptable in my opinion, maybe even the scale down to, and now this is, this is pretty nice in my opinion. 10. How to add materials?: A couple of things before we start to material, or actually just the one thing is that they think doesn't look very good. It looks like jagged, so we need to shade smooth and you can select this and right-click Shade Smooth, nothing happens. That's because it only shade smooth, the base geometry that the thing is based on. Oh sorry. The, the thing that we added in the middle here, this is the core of the respirate. But we need just to note for this thing to happen and we're going to go to the end and use a shade smooth Note, Set Shade Smooth. Now as Z it has a Boolean, true or false shaded or not shaded, smooth. And not just looks a bit better, I think, like Shade smooth or not yet. To be honest, I am not a huge fan of those noises up there. I'm going to turn down the detail during the two. And now this looks a lot better. Now the respirator is ready to being materialized. The material, well, we have three different materials here. We also have a node for this purpose. We wanted to add a different material for the droplets. Let's add a material for a droplets. Let's add a Set, Matte set material here. And let's select the respiratory and other material. The only ordered you have one, let's call this the Drupal triplets. And let's select the triplets material from here. Now, let's add the material for the, what is this? Let's turn this off. This interior. Let's take the news slot here and let's call this the interior. Let's add a set of material and let's sit theme interior material. Then we have the leaves. The leaves are gonna have its whole. Another material, leaves like fat, and then select the leaves from here. What else do we have here? We have the, which was actually the little tail. Let's add the thing here and let's add a new material. And your little material called is actually can be a little tail. It's actually a little, a little tape. This is not looking very nice. I think we have covered all the materials that we want. And this is a geometric class and not the shading class. We won't be discussing the creation of the actual materials in too much detail. Instead, I'm gonna show you how you can append to materials I have created in the project file under this course. Your respiratory is here and we have some materialists added here. Okay, but I mean, these are just the materials that we have here in the notes. Now if you went to replace those with ones I created while, then you are going to code the file, then append. Then we're going to go to Downloads. Very probably have the file to download it right from the description of this class. And click on this raspberry append and then you are going to do the various materials. Materials. And here we have like all of those materials. So hold down control and click on this material. You don't need this or you can deselect the materials that didn't need. I didn't need to dot stroke, I just need those here. And I'm going to append those. Now nothing has happened, but they are in your blend file right now. So you can do so that for example, this one here, select the care that I created 0 here. Then for the droplets we have, I believe, a material called raspberry. For the interior. We can give this as it is. For the leaves. We also have 0 leaves. 0 means no objects are using this material. And for the little tail, we can use also the ellipse material. So this should look pretty nice shirt. Now let's see how this looks. Also use an HDR. So from here, disabled to see in Word and it seems like maybe something like that. Okay, this is a rather okay, I think, I think actually this HDR might be better for the respire like, Yeah, this looks better. And also the materials are pretty okay. I mean, you obviously have to tweak the materials were not created for this specific respiratory. So what you have to do is to just rotate this thing. Now this was a wrong thing. Sorry. So you have to rotate this like if you want and also maybe erase this up a little bit. Where is our alignment? Like that? You just have to tweak the settings and see if things work like you want them to work. And this is how you can get materialists on your Raspberry. Now let's do the bonus part of the cream animation. 11. Bonus: Cream Animation: For the cream animation, let's just hide our respiratory and our leaf right now. And also let's delete all of those things here. Now this is a little bit more advanced thing, but I think that you might like that because if you're into learning Geometry notes, sometimes seeing some advanced stuff is also good. For that. I just added a circle where like in the middle of this thing, like standard 64 points. Now this has this model of vertices. Let's go to the edge mode with number two. Just pressing number two and press Control F or Command F or Mac using agreed fill. Now this is filled as a grid, which is very important because if you want to displace this mesh in some ways, this has to look goods and have a square faces. Unlike an ordinary circle which has just, where are you? Here? I want to fill in the original circle. This one has a large face-like, which has, I don't know how many sides. This is not working very well for us. Let's add the geometry nodes and let's add also a set position node because we want to move this thing up. Now this isn't meant to be a math lesson because it uses quite a lot of this. But just like a general way of showing what is possible with Geometry notes. Let's make so that we first add some for the cream. Let's, let's not add some twisted cream first. Let's add some, sorry. Let's add some sun rays like that and that, and that, Let's say like five of those metaphors that we have to use. Basically a principle of sine waves. Well, I'm going to show you how this works as I can discuss, explain afterwards when it has on this, I'm going to take a position and then we're gonna separate the position of each point into x, y, and z. Now I have the x gradient, the white gradient, and the z gradient. And if you want to see those, well, what you need to do is to add a material to this thing here. Then also add a material. The notes part like that, sit material. Select. Let's call this visualizer bizarre. Even for the autocratic part visualizer. The visualizer. And let's select the visualizer material. Now, let's turn this into the render view like that. And let's open a new shader editor from this side here. Now let's track this x gradient into the group outputs. And under the Modify tab, you can see output attributes X. And let's just, let's just call this preview. This is an output attribute called preview. We can input this into the shader by using an attribute nodes and just writing here. Review, I know there are no drop-down menus here, which can be frightening, but it actually should work if you use the right words. Now this looks like that. The y gradient looks like that, and the z gradient looks like that. Obviously we cannot see because this is a, probably if you move this thing up on the z-axis to go more, right? Yeah, because it's more up on the z-axis. Now we take those things and views in math nodes and math, and the math operation called arc Arkose tank engines to take the x and y and this gives us a gradient angle. And basically you're saying, I don't see any angles there. Well, yes, maybe not, but this basically gives us the angle from let me show you how we have already a set position. I'm going to use a combining extra z. I'm going to use the angle as a way to displace the circle. This looks currently like that. As you see, this is a negative angle. So I'm going to turn this off. So this is basically from this area here. It's going to make a full 360. So it starts from minus 80 degrees, minus 180 degrees, and it goes to plus 108 degrees like that. This is why it's getting displaced like so much. And you're thinking, okay, why isn't the displaced like 180 meters then? That's because spender is radians, not degrees like humans like to use mostly in radians. This is like tree plus something exactly actually one Pi. So it should be like one squared, two squared, three squares, and 3.140. This is a pi here. So we don't want this, we want to actually make something very nice in a way that we calculate a sign of this crazy, crazy thing here right now. So it puts this into a sine. Which means it's going to convert this into sine wave. And before we make this into sine wave, we multiply this to get a larger range out of this. And now you see we have basically, well, what is it? It's like Sandra is sinewave outputs minus one to plus one arranged like that. We cannot see this because I'm going to output this. We cannot see this because, I mean, those things are black, It's negative stellar. If you clamp this, you see it cuts away the negative part. But this is not important for us. We can just fix this range by using the map range. So we take the map branch and then map from minus one. Our original smallest value is minus one, or original largest value is one. The new smallest value is 0, and the new biggest value is one. Then actually wanted to displace it by as much. I'm going to just keep it like this. Well, as you see, we have like some things here. I'm going to add a subdivided, subdivided subdivision surface here just to get some more resolution of this. And to see, I mean, we can add more of those things and you're thinking, well, this is how I made to cream. Yes, this is how I made this like that. And now we also have to make this twisted. Twisting basically means we have to add something to this gradient from the center. Basically, you have to make things rotated more and more and more and more. Let's do so that we take this input here is position vector. We take a vector rotate nodes and the rotate this vector like that, and then it rotates, right? But you have to rotate it more on the edges of this thing. So do that. What do we have to do is to take a vector math nodes and plug this into the thing here. Calculate the length. As you remember, the length gives us a gradient. I have to visualize this. Length gives us a gradient like that. So it's small and large in the borders. And we can input this right into the angle here and look at that. This looks like some twisting, which is pretty nice and all. And if you want to twist this even more, what you can do is to add a multiplication here and twist this like fat, or you can add something to it. This is also moving to surround. So middle Montero did buy as much, maybe something like fat. And as you see, the edges are as high as the borders here. Let's use the same gradient to basically multiply the edges with the smaller value than we are multiplying the center. So by doing the project file is in the under the class. So I mean, if you're maybe feeling this is a bit too fast, maybe we wanted to recap on something. You can always download this and everything is there. So let's multiply our reposition setting here with the same gradient. So I'm going to multiply this. If we multiply with 0, it becomes flattened different multiplied a large number becomes large. I'm gonna use the same gradient from here and multiply with this and doesn't know the inside becomes smaller because this is how the gradient looked like that it's dark here, it's small, but the borders are white. So we just invert this using either a map range or a colorRamp. Let's use a color ramp this time. Well, actually, let's use a map range still, but let's just call her I'm still it seems like an easier thing. With a color. I'm figuring control like the thing here. This only works if the mesh has a size of one and volume on both sides. Using the measurement tape you can measure okay, from the center. 11 works fine. We can do something like that. Now the edges are very flat and this ugly seam here we can get rid of disposing, could be supplying something like that. I think works pretty well. We wanted to have more resolution. You can have more resolution, and this is how it works. Just add the set shade smooth in the end. Let's move this here. All right, it looks very nice. Although it doesn't look in the center here, we have some veered things. So let's use a smooth modifier after the geometry notice modifier to make this a little bit better, Let's use the factor of two. Unless it was like maybe five repetitions. Now this is something like that. Very smooth. Let's select the geometry. Notice again, and maybe, maybe just maybe make this a bit stronger. And this is how the cream animation was made. I mean, just by rotating this and doing all sorts of different stuff there. This is how this worked. And now let's get back to me. 12. Outro: Thank you for taking this class. I hope this was useful for you. This cleared up the geometry notes. Mr. Robot, if you have any questions, any thoughts, you can always let me know in the discussion page under this class. Make her respiratory, make the fine tune. It may be the best possible and share it with others under the projects of this class, I'm eager to see your expertise. Maybe either fruits. This was me. See you next time.