Blender3D 3.0 - Procedural Flower modeling in Blender 3D using Geometry Nodes Fields (PART1)

Decor Design 3D
20 followers
Oct 25, 2025
Hi guys, welcome to my channel. I'm Chong.
Today I'm going to share with you how to create a procedural flower in Blender 3D 3.0 using Geometry Nodes.
So before we dive into Blender, let me go through what we are going to do in this tutorial.
First, we are going to create the petal using Geometry Nodes.
And then we are going to create the points and clone our petal on the points.
Then next, we are going to add the sepal, receptacle, pollen and the pedicel.
Then finally, we are going to add the particles and lighting to finish the scene.
Okay, so without further ado, let's get started.
Okay, first, we are going to start with the petal.
So delete everything and add a plane.
You can add any geometry you want. It doesn't matter at all.
Go to Geometry Nodes tab.
Press New.
Remove the group input.
Then add a curve line.
And connect it to the group output.
Then add a Resample Curve.
I want to add more points on the curve line.
Increase the count to 20.
Then make it longer.
Then now, I want to bend the curve line and make it an S shape.
So to do it, let's add a Set Position.
Add a Curve Parameter.
And connect it to Offset.
Then add a Float Curve.
Then add a Combine XYZ after the Float Curve.
And we only want the Float Curve to affect the X-axis.
So for the Curve Parameter here,
the Curve Parameter gives us range from 0 to 1 on a curve.
So usually, we can use it together with the Float Curve.
And we can add additional points on the curve to manipulate the shape of the geometry.
Okay then, select all these nodes.
Press Ctrl J to frame it.
Then press F2 and name it Curve Line for Petal.
Then next, we can start to convert this curve line to the mesh.
So add a Curve to Mesh node after the Set Position.
Then add a Rectangle and connect it to Profile Curve.
Then remember to Fill Cap.
Then let's make the Rectangle smaller.
And turn on the Wireframe so that we can see everything.
Okay now, we only have segment on Y-axis.
And I want to add segment for Z-axis as well.
So to do it, let's duplicate this Resemble Curve node.
And put it before the Curve to Mesh node.
Press Alt P to unframe it.
And then now, I want to make the top of the mesh here slightly smaller.
So to do it, let's add a Set Curve Radius.
Put it before the Curve to Mesh node.
Then duplicate the Curve parameter and the Float Curve.
Press Alt P to unframe it.
Then connect this Float Curve to the Set Curve Radius.
And now, we can reset the Float Curve.
And adjust the curve to the shape we want.
Okay then, select all these nodes.
Press Ctrl J to frame it.
Then press F2 and name it Pattern Modeling.
Okay now, we need to add some wrinkle to the pattern.
Okay so to do it, add a Set Position and put it after the Curve to Mesh node.
So every time when we need to manipulate the points of the mesh,
we need to use Set Position node.
Then we need to get the normal of the mesh.
Connect it to the Offset.
Then we only want the wrinkles to fall on X-axis.
So let's add a Combine XYZ.
Connect the normal to the X-axis.
And now, we need to take the rectangle that we slot to the Profile Curve just now
and manipulate the points to get the wrinkle we want.
So to do it, let's add a Capture attribute and put it before the Curve to Mesh node.
Then add a Position node.
And connect it to the value.
So by doing this, we are actually store the position of the point of this rectangle in the attribute.
Then we need to manipulate this rectangle after the Curve to Mesh node.
So if you don't know what is Attribute Capture,
Attribute Capture is actually allow you to store the result of the fill in the attribute.
Then we can manipulate the attribute later.
So it is really similar like the attribute in Blender 2.93.
So in Blender 2.93, we need to give the attribute a name
and store the result in the attribute.
But for Blender 3.0, we don't have to give the attribute a name.
But when we add the Capture Attribute node,
we will store our result here in the Capture Attribute node
and we can output this attribute to the node we need later.
Okay then, add a Vector Math node after the normal.
Then connect the attribute to the Vector Math node.
Then add a Math node.
Change the function to Multiply.
Duplicate the Math node.
Change the function to Ping Pong.
Increase the scale to 1.
So the Ping Pong will actually make the shape of the geometry to become up and down like this.
So you can also adjust the scale bigger or smaller depends on the style you want.
And now we can adjust the Multiply to get more winkle.
Let's change this to Multiply.
Okay then, we can also add a Float Curve.
Put it after the Ping Pong so that we have more control over it.
So we can play around with the curve to get the outcome we want.
Okay now, I want to add Displacement Map on the petal.
So to do it, let's duplicate the Set Position node.
Press F2 and name it Set Position for Displacement Map.
Then for this one, press F2 again and name it Set Position for Winkles.
Okay then, add a Position node.
And connect it to the Position.
Then add a Vector Math node.
Then add a Noise Texture.
And connect it to the Vector Math node.
Then adjust the Texture Scale smaller.
Increase the Distortion a little bit.
Then add a Map Range.
Okay now, we have done the petal.
So let's select all these nodes.
Press Ctrl J to frame it.
Press F2 and name it Winkles.
Okay next, we need to create the points and clone the petal onto it.
Okay so to do it, let's add a Joint Geometry.
Put it before the Group Output.
Then add a Curve Spiral.
Connect it to the Joint Geometry.
I think we can disconnect this line.
Then add Instance on Point node after the Spiral.
Then take the Geometry of the Set Position for Displacement Map to the Instance.
Okay now, we need to rotate the petal.
We need to rotate it to facing outside.
So to do it, let's add a Rotate Instance.
Then add a Line Euler to Vector.
Connect it to the Rotation.
Then add a Position node.
And connect it to the Vector.
Change the Pivot to Z-axis.
Okay now, we need to make the scale of the petal transform from big to small following the spiral shape.
So let's add a Curve Parameter.
Connect it to the Scale.
And the reason why the Curve Parameter can make the Instance object scale from big to small
is because if you still remember, just now we have mentioned the Curve Parameter give us range from 0 to 1 on a curve.
And this is the reason it make the Instance object scale from big to small.
And then let's add a Float Curve.
Put it after the Curve Parameter so that we have more control over it.
Then let's adjust the Curve until we get the shape we want.
Okay now, we can start to adjust the position of the Instance object.
So let's go to the Spiral.
Let's reduce the Resolution to 11 maybe.
Change the Rotation to 5.
Then reduce the End Radius to 0.
Then decrease the Height to 0.7 maybe.
And then let's duplicate the Rotate Instance.
Rotate the Y-axis 40 degree.
Let's add a Subdivision Surface.
Put it after the Joint Geometry.
Increase the Level to 2 so it will look nicer.
Okay now, we want each row of the petals to offset the position.
So currently, our spiral spine are look like this.
And we grown our petal on top of it.
So in order to offset the position, we need to delete a point after every one point.
So to do it, let's go back to the Spiral.
Then we need to add a Delete Geometry.
Put it after the Spiral.
And now, it delete everything.
So we need to select only the point we want to delete.
So to select the point we want, let's add an Index Node.
Connect it to the Selection.
So if you don't know what is Index Node,
Index Node is actually refer to this number in the Spreadsheet.
So what is this number means?
This number is actually an Index Number for every vertices on the mesh.
So let me show you some example so you easy to understand what it is.
Let's go into Edit Mode.
Turn on the Indices.
So now you can see every vertices here have a numbers.
Every point have a numbers.
So this numbers is actually refer to this number here in our Spreadsheet.
So let's say if I want to select the vertices number 1 here in the Geometry Node.
So go to Geometry Node.
Let's add a Set Position.
Add an Index Node.
Connect it to Select.
Then add a Math Node.
Change the function to Compare.
So in the Value column, type 1 because we want to select number 1 in the Index.
Then slightly adjust the Offset value so we can see the result.
Then let's say if I want to select point 0 and 1 at the same time.
You can also change the function to Less Than and play with the Threshold value to select the point you want.
So less than 2, that means 0 and 1.
So it will select 2 of the point at the same time.
So this is usually how we work with Index Node.
Okay, now let's go back to the flower.
So to select the vertices we want to delete.
Let's add a Math Node.
Change the function to Ping Pong.
Then change the Scale to 1.
So if you still remember, just now we have mentioned the Ping Pong will actually make the shape to become up and down like this.
So in this case, it will actually select a point after every one point and delete it.
Okay, now we have done the cloning.
Let's select all these nodes.
Press Ctrl J to frame it.
Then press F2 and name it Cloning.
Actually you can put whatever name you like.
It doesn't matter at all as long as you remember what it is.
I think we can increase the Resolution higher so it will look nicer.
So remember, you have to put an Odd Number for the Resolution.
Let's change the Height to 1 maybe.
It looks nicer now.
Okay, next we can start to add the seeper.
So to do it, I want to take the pattern we've done just now and clone it on a ring.
So let's move this beside so we have more space.
Then add a Curve Circle and connect it to the Joint Geometry.
Then add Instant On Point.
Then go back to the Wrinkle section.
I want to take the pattern we've created just now as the Instant Object.
So I want to take it from the Set Position for Wrinkle before the Displacement Map.
Let's take this and connect it to the Instant.
Then we need to rotate it and make it facing outside like the pattern here.
So let's add a Rotate Instant.
Then add Align Euler to Vector node.
Connect it to the Rotation.
Then add a Position node.
And connect it to the Vector.
And then add a Transform node.
Move it lower.
Rotate it 180 degrees.
Then I think we can reduce the Resolution to 5 maybe.
Then duplicate the Rotate Instant again.
Put it after the Transform node.
Then rotate the Y-axis 24 degrees maybe.
I think we can reduce the Radius smaller.
Let's put 0.7.
Okay then, I want to randomize the Scale as well.
So let's add a Random value.
Connect it to the Scale.
Then make it smaller.
Okay now, we have done the zipper.
So let's select all these nodes.
Press Ctrl J to frame it.
Then press F2 and name it Zipper.
Okay next, we can start to make the Receptacle.
So let's move this beside so we have more space.
Then duplicate the Joint Geometry and put it here.
So to make the Receptacle,
we need to make a Cylinder and manipulate the point to get the shape we want.
So the workflow for this is quite similar with what we did for the pattern just now.
So add a Curve Line.
And connect it to the Joint Geometry.
Then add a Curve to Mesh node.
Put it after the Curve Line.
Then add a Curve Circle.
Connect it to Profile Curve.
Then let's add a Transform node.
Move it lower.
Okay now, we can start to manipulate the point.
So let's turn on the Wireframe and mute the Subdivision Surface.
So we are easy to see.
Then now, I want to add some segment to the Y-axis.
So let's add a Resample Curve.
And put it after the Curve Line.
Then add a Set Curve Radius.
Put it after the Resample Curve.
Then add a Curve Parameter.
Connect it to the Radius.
Then add a Float Curve.
Then we can start to adjust the shape we want.
Okay next, I want to add some Wrinkle on the Surface.
Same like what we did for the pattern.
So to do it, let's add a Capture Attribute.
Put it after the Set Curve Radius.
Then duplicate another one and put it after the Curve Circle.
So we are capturing the data of the Curve Line and the data of the Curve Circle.
Then add a Position.
And connect it to the Value.
Because we want to capture the position of the point of the Curve Circle and the Curve Line.
Okay then, move all these nodes beside.
Okay now, add a Set Position node before the Transform node.
Then add a Normal.
Connect it to the Offset.
Add a Combine XYZ.
Put it before the Offset because we only want the effect to fall on X and Y-axis.
Then add a Math node.
Change the function to Multiply.
Then duplicate another one and connect it to the Y-axis.
Then I want to separate the Normal into X and Y-axis as well so that it won't affect the Z-axis.
So let's add a separate XYZ.
Connect the Y-axis to this Multiply.
Then duplicate this Math node.
Connect it to both of these Multiply.
Then duplicate it again.
Change this function to Ping Pong.
Connect it.
Then we can now connect the attribute to this Multiply.
Then now we can increase the Multiply to get more Winkle.
Put 12 maybe.
Increase the Ping Pong Scale to 1.
Then let's add a Float Curve after the Ping Pong.
Drag the Curve to get the shape we want.
Then duplicate the Float Curve.
Put it after the attribute for the Curve Line.
Reset the Curve.
Then again drag the shape you want.
Then go back to the Transform node.
Move this higher.
Ok now we have finished the Receptacle.
So let's select all these nodes.
Press Ctrl J to frame it.
Then press F2 and name it Receptacle.
Next we can start to create the Pollen.
So move this beside.
Then duplicate the Joint Geometry.
Add a UV Sphere.
Connect it to the Joint Geometry.
Add a Transform node.
Move the sphere higher.
And we need to squeeze the sphere a little bit.
Ok now I think we need to delete some of the pattern here.
The pattern that overlap with the Pollen.
So let's go back to the Cloning section.
Let's go to the Instance of Point node.
Add an Index node.
Connect it to the Selection.
Then add a Math node.
Put it after the Index.
Change the function to Less Than.
Then adjust the value until we get the part that we want to select.
Ok this good for me.
Ok now I want to push the center part of the Pollen slightly lower.
So go back to the Pollen section.
Add a Set Position node.
Put it after the Transform node.
Put minus 0.2 for the Z-axis.
Then add an Index node.
Connect it to the Selection.
Then add a Math node again.
Change the function to Less Than.
Then increase the value until we get the part we want.
Put 65 maybe.
Ok now I want to add more details onto the Pollen.
So add a Distribute Point on Face.
Then duplicate this node.
Change the function to Greater Than.
Connect it to the Selection.
Increase the density of the point.
Put 500 maybe.
Increase the value for the Greater Than as well until we get the part we want.
Ok then add Instant On Point node.
Put it after the Distribute Point on Face.
Add a Sphere.
Connect it to Instant On Point node.
Make the Radius smaller.
Ok now we have finished the Pollen.
Let's select all these nodes.
Press Ctrl J to frame it.
Press F2 and name it Pollen.
Ok next I want to rotate the entire flower a little bit.
So let's add a Transform node.
Rotate the Y-axis 40 degrees.
Ok then frame it as well.
Press F2 and name it Rotate.
Ok next we need to create the Petit Cell.
So to do it, move this beside again.
Duplicate the Joint Geometry.
In the 3D viewport, press Numpad 1 to see the side view.
Then in the Geometry nodes, add a Curve Line.
Connect it to the Joint Geometry.
Make it longer.
Then add a Transform node.
Move it lower.
Then add a Resample Curve.
We need to add more points to the line and we need to manipulate it later.
Let's put minus 8.
Ok now again I want to manipulate the point.
I want to make an S shape.
So let's add a Set Position node.
Then add a Curve Parameter.
Connect it to the Offset.
Then add a Combine XYZ.
We only want the effect to fall on X-axis.
Then add a Float Curve.
Put it after the Curve Parameter.
Then we can start make the S shape.
Let's move it higher.
Ok then add a Curve to Mesh node.
Put it after the Set Position.
Then add a Curve Circle.
Connect it to the Curve to Mesh node.
Make the Radius smaller.
Ok now we can unmute Subdivision Surface.
Turn off the Wireframe at the moment.
Then we have done the Pedicel.
So let's select all these nodes.
Frame it.
Then press F2 and name it Pedicel.
Ok next, I want to add some particles around the flower.
So let's turn on the Wireframe.
Disable it.
In the 3D viewport, press Shift A.
Go to Mesh and add a Circle.
Scale it bigger.
Press Tab to go into Edit Mode.
Press E followed by S and extrude it.
Press Tab again to exit Edit Mode.
Go to the Modifier Properties.
Add a Displacement Map.
Click New to add a new texture.
Click this button to go to Texture tab.
Change the Tab to Cloud.
Then go back to the Modifier Properties.
Increase the Strength to 4.
In the 3D viewport, press Shift A.
Go to Empty and add a Plane Axis.
Move it higher.
Make it bigger.
Select the Circle.
Change the Coordinate to Object.
In the Object column, use the Eyedropper to select the Plane Axis.
Then select the Plane Axis.
Press N to toggle the Transform Panel.
In the Rotation for Z-Axis column,
tab Hashtag Frame.
Divide 800 maybe.
You can divide any number you like.
It depends on how fast you want it to be.
This is good for me.
So select the Circle.
Go to the Geometry Node Editor.
Click New.
Add Instant on Point.
Then add a Sphere.
Connect it to the Instant.
Then I want to randomize the Scale.
Add a Random Value.
Connect it to the Scale.
Change the Minimum to 0.02
and the Maximum to 0.06.
Then I want to rotate it.
Add a Transform Node.
Put 20 for the X-Axis.
And for the Z-Axis,
tab Hashtag Frame.
Divide 100.
Again, you can divide any number you like.
Then try to press Spacebar to check the animation.
Okay, next,
you can add Camera, Lighting and Material to the scene.
So in the 3D Viewport,
press Shift A,
add a Camera.
Press Numpad 0 to switch to Camera View.
Then move the Camera further.
Then go to the Camera Properties.
Change the Focal Length to 120.
Then I think we can rotate the flower 30 degrees maybe.
And now, let's add an Area Light.
Move it higher.
Go to Render Properties.
Change the Render Engine to Cycles.
The Device to GPU.
Then turn on the Render Preview.
Press Numpad 0 again.
Switch back to Camera View.
Go to the Light Properties tab.
Increase the Power to 444 maybe.
Then go to World Properties.
Change the Background Color to Black Color.
Okay, now we can start to add Material.
So add a Cube.
We name it Material Cube.
Then hide it.
Then go to the Material tab.
Then add 6 Materials.
Name this Petal.
This one Slipper.
And this one Pollen.
Let's put Pollen 1.
Pollen 2.
Petty Cell.
And this is Particles.
Then select the flower.
Go back to the Geometry Node Editor.
And we can start assign the Material.
Go to the Cloning part.
Here.
Then add a Set Material Node.
Put it here after the Rotate Instant.
Then in the Material column, select Petal.
Then duplicate the Set Material.
Go to after the Slipper.
Put it after the Rotate Instant.
Then in the Material column, select Slipper.
Duplicate it again.
Go to the Receptacle section.
Put it here after the Transform Node.
So for this one, we remain it Slipper.
We can share the same Material for Slipper and Receptacle.
Then duplicate the Set Material again.
Go to the end of the Pollen.
Put it after the Instant on Point.
Then duplicate it.
Put it after the Set Position as well.
Then for this one, we select Pollen1 and this one Pollen2.
Duplicate the Set Material again.
Go to the end of the Pedicel.
Put it after the Curve to Mesh Node.
Change the Material to Pedicel.
Okay, now select the Material Cube.
Go to the Shader Editor.
Now we can start to tweak the Material.
Let's start from the Petal.
Then press Home button to see the node.
Then change the Base Color to Orange Color.
You can put any color you like.
Don't have to follow me.
Okay, I think we can add a few more lights to the scene.
Let's go to 3D Viewport.
Press Numpad 7 to see the top view.
Select the Area Light.
Increase the Size to 5m.
Increase the Power to 1000.
Then duplicate the light.
Move it beside.
Then make the Size bigger so that we have a softer shadow.
Duplicate the light again.
Put it to another side.
Decrease the Power to 600.
Okay, then we can continue to add material.
Select the Material Cube.
Select Seeper.
Change the Base Color to Green Color.
Then for the Pollen 1.
Change the Base Color to Brown Color.
For the Pollen 2.
Change the Base Color to a dark brown color.
Then for the Pedicel.
Let's copy the material from the Seeper.
And paste it here.
Then for the Particles.
Change the Surface to Emission.
Change the Color to Orange Color.
Increase the Strength to 4.
I think I forgot to add Set Material node for the Particles.
So select the Particles.
Go to Geometry Node Editor.
Go to Group Output.
Add a Set Material.
Select Particles.
Okay, then I want to add Depth of Field to the scene.
So select the Camera.
Activate the Depth of Field.
Then use the Eyedropper to select the flower.
Decrease the F-stop to 0.06 maybe.
Okay, now we can start render it.
Go to the Render Properties.
We can decrease the Max Sample to 200.
Then go to the Output Properties.
Select where you want to output the file.
Select the format you want.
Then go to Render and render the animation.
Okay, then finally we done it.
So if you like my video, please subscribe.
And see you in the next video.
Bye.
