Want to master Blender? Click here! and get our E-Book
When you purchase through links on our site, we may earn an affiliate commission. Affiliate Disclosure
Last update: April 27, 2021

How to create grass in Blender: The ultimate guide

There are many ways to create grass in Blender. That is probably because there are over 12.000 different species in the Poaceae family according to Wikipedia. Poaceae being just  another fancy word for grass. Apart from that grass looks complex and is everywhere. We just need a good way to recreate it for many of our 3D projects.

How to create grass in Blender?

  • Find reference & Textures
  • Model the grass
  • Shade the grass
  • Distribute with a particle system

These are the steps we will cover and at the end we will have a section on what makes nature look good. Covering a few tips on distribution, variety, color and light.

If you are looking for a fast, beautiful and reliable way to add grass to your scenes, check out my review on Graswald. It is an awesome grass asset pack that I have used for several years. It does what we are about to get into very well and fast.

Related content: Graswald review

With that said, lets see how we can create our own grass in Blender

Blender grass reference

Before we create grass, we need to talk about reference. Personally, I often skip or forget this part and jump straight into Blender. That is a big mistake. Take your time to prepare and you will save time and headache later.

fence, rural, field

The things we should consider are what kind of grass we want to create. Like we said in the introduction, there are over 12.000 species. So if you have a particular kind in mind, finding out both the common name and the Latin name for your specie is a good start.

If you just start with a general idea that you want to create grass, finding out the names of some grass species is still a good beginning. This is the process we will follow.

Process to find and organize reference

Start by going to Worldfloraonline.org. Then search for “Poaceae” and filter by images. At the time of this writing you will end up with about 1000 images from their database of different grass that you can browse.

Be warned that these images are not taken by professional photographers. But the good thing here is that we get an image and a Latin name of the plant.

We can then go to Google and search for the Latin name and append “common name” to the search and find out what common names there are for this specific grass.

Next, we take the common names and search for them on Pinterest to find a large selection of reference images.

If you want to find out more on how to use Pinterest to find and work with reference effectively, you can read my guide about it here.

Related content: The ultimate reference photos workflow in a nutshell

What kind of reference are we looking for?

What we are looking for is large and small scale properties. With a large scale property, I mean a zoomed out view. This will help us see how a particle system could be set up. Things like distribution and environment. Maybe the grass grows mostly in the shade or in the sun? In patches or spread out. Near or far from a water source. You get the point.

The small scale details are images of a single blade of grass or just a few grass blades together. This is so we can study the details and reference this as we model and shade the individual grass strands.

I created this Pinterest board for you to look at to get some inspiration, or if you think the process above is a bit too drawn out, you can start here instead. But remember that if you take your time with reference, your result will probably become much better.

External content: Grass reference pinterest board

Modeling grass in Blender

To model grass the best way is if you have a reference image of a few specimens spaced apart that you can put in the background and model from. You can learn how to bring in background images in this article.

Related content: How to set up background reference images in Blender

For now, I will use this texture of foliage from cc0textures.com

External content: Grass texture from cc0texture.com

Once we brought in our background, we can begin to model the individual grass strands. 

The process to model grass

Add a plane and position the origin at the bottom of the stem. Then Tab into edit mode, and extrude the two vertices at the top. Aligning them with the texture. Keep an even space between the loop cuts. If you reach an area with more detailed edges, add the extra geometry as you see fit.

Note the origin points and geometry density. We also don't go all the way up on the right most grass strand since it might be a too unique shape that we may see repeat across our grass.

The tools I used to model here are just basic move, scale and rotate along with extrude and an occasional loop cut if I realize I need to add more detail in an area.

Right now we have flat planes extruded into strands. Before we add shape to these strands, let’s select them in object mode, right click and shade smooth.

How to UV map without manual adjustment in UV Editor

Then we will need to UV Unwrap. To avoid repeating the alignment against the texture in the UV Editor I will teach you a little trick.

But first, if you are new to UV Mapping you can find a guide on how to get a texture on your object in the first place right here.

Related content: How to add a texture to an object in Blender

Center your 3D cursor to the background image with Shift+C, then add a plane. Holding Ctrl will temporarily turn on snapping. Scale the plane to the same size as the background image. Then select the new plane and all grass strands. With the plane and grass strands selected, press Tab to enter edit mode.

In top orthographic view, numpad 7, select everything with A and press U. Then choose “Project from View (bounds)”. This will project the new plane that we added to fit exactly on the UV space and all the grass strands will fit exactly on top of the strands on the texture just like in the 3D viewport. 

This way we need not do any manual transformations of the UV Map. 

If you want a complete guide on how to UV Unwrap you can read this article.

Related content: The definitive tutorial to UV mapping in Blender

Before we continue, make a duplicate of your grass strands and if you haven’t already, don’t forget to save your blendfile.

Related content: Blender, saving and recovering: Don’t lose your work ever again

Shaping the individual grass strands

To shape the strands, we will use proportional editing. Turn it on with “O”. This allows us to transform vertices that are not selected based on a falloff.

Together with proportional editing we will use the regular Move and Rotate tools and the bend tool. We access the bend tool with Shift+W and it bends geometry based on the location of the 3D cursor.

Related content: More than 30 Blender modeling tools explained

You can move the 3D cursor with Shift+Right click. Also try to use trackball rotation by double tapping R.

As you bend the grass strands, make sure you view them from multiple angles. It is easy to miss and only bend on one or two axis leaving the grass flat when viewed from certain angles.

Also use your reference for this stage to see how bent the grass is in your intended look.

As I move around to shape the strands, I select one or two vertices at the top and only bend from there with a falloff on proportional edit that allow me to bend and rotate the grass strand without moving the bottom vertices.

Here I duplicated them for some additional variety

Sometimes I also select one vertex in the middle of the strand and adjust from there when I feel that I don’t get enough control from the top.

Organizing the models for particle distribution

The last thing we will do before concluding the modeling stage is naming and organizing the grass strand. 

Select them all and press Ctrl+F2 then replace “Plane” with “Grass” or similar for all the grass strands. Then press “M” and place them in a new collection that you name appropriately. 

We will use this new collection when we distribute the grass as a particle system later.

Texturing and shading grass

We now have the geometry and UV Map correctly set up, and it is time to focus on the material.

Here I will set up a material with Cycles since it is faster to light.

What makes nature materials different from regular dielectric ones is that we use translucency to fake what subsurface scattering would give us. 

Subsurface scattering is essentially diffuse shading happening inside an object instead of outside. This is common in all organic materials. 

Just take your hand and put it up in front of a light and you will see how it kind of glows red along the edges. This is light passing through your hand. Also known as subsurface scattering.

Translucency help us fake subsurface scattering when we don’t have depth in our object. Such as with our grass strands that's only made up of a plane. We would do the same for other thin organic materials such as leaves, stems or sticks. 

Translucensy is also much faster to compute, and that is good since we will have a lot of grass strands in a scene.

If you are new to materials and nodes in Blender, I suggest that you read this article first.

Related content: The complete beginners guide to Blender nodes, Eevee, Cycles and PBR

Before I set up the material I also loaded an HDRI image to light the scene. You can find good ones at this resource.

External content: HDRIHaven.com

When selecting an HDRI, look at the reflections and the shadows. Especially how sharp the shadow is. In many cases we want a very soft shadow.

Setting up the material

To set up our material, we will need to bring in the textures, In this case I will only bring in the normal map along with the diffuse color map to save memory. We will drive all other inputs with these two maps.

This is the final node setup I came up with in this case.

First, let’s get the normal map out of the way. Essentially, I just plug it into a normal map node and connect it to both the translucent shader and the principled shader. Just dialing back the strength to 0.8 in this case because I thought it was slightly too strong. Also, don’t forget to set the color space to non-color.

The handling of the diffuse texture is more complex. But let’s divide it into pieces. 

First, we plug it into a separate RGB node. This allow us to look at the individual Red, Green and Blue channels as a black and white output. After toggling between and looking at all the outputs, I decided that the red channel would work as a roughness mask.

When determining the roughness map I wanted a relatively even roughness output where you could see the fiber of the strands.

Then I adjust the brightness with a brighness/Contrast node before we plug it into the Roughness input of the Principled shader.

Next we look at the color. I thought the original color was a bit too blue-green, and I wanted a more yellow green tint while still staying somewhat true to the original color.

Therefore, I opted to mix in some yellow hue with a mix node and combine it with a slightly lit up version of the original using the “hue saturation value” node. 

I then combine these with an adjusted random output from an object info node. This will give us a slightly different gray scale values for each strand that we can use as a mask to combine the two color versions.

We then plug the color into both the translucent and the Principled BSDF shader.

Tweaking the grass strand shader

I dial the mix shader while looking at the strands in rendered preview mode. In the render settings, I also toggled between transparent and opaque background, so I could view the material in isolation and against the background. Our eyes adjust quickly, making it a good idea to at least make some adjustment to the surrounding colors as you dial it in.

You can toggle transparency in the film section under the render tab. There is a “transparent” checkbox.

I continued to tweak different parts of this material until I was happy with it.

Create a second version of the shader

When that material was done, I duplicated the material and created a somewhat simplified version to act as brown, dead grass. We will later combine these strands with the original in two different particle systems. Therefore, create a new collection for these strands so we can distribute them independently.

Particle system settings

Next we setup the particle system. Thanks to what I learned in Rob Tuytels course on Environment creation in Blender, this is done in two stages. You can find his course here.

External content: Environment course, udemy

The first stage is to create grass clumps with a particle system. I will show you how we can do this. The second step is to distribute the grass clumps across a field. 

If you intend to make something more even such as a golf court or a lawn, you can most likely get away without this extra step and just distribute the particles directly. But lets do the extra mile.

Creating grass clumps using a particle system

Add a Plane and subdivide it with about 20 cuts. To do this just Tab into edit mode, select everything with A, right click and choose subdivide. Then in the bottom left corner of the 3D viewport, open the operator panel and type 20 in the “number of cuts” field.

Then create a new vertex group. We can do this by just going into weight paint mode. Paint a dot in the middle of the plane. A little bigger than 9 faces.

Next, add a particle system to the plane and change it from emitter to hair and check “advanced”.

Personally, I like to collapse all the sections except the one I am working with. Just a personal preference to keep my sanity in check. You can do this by just holding Ctrl+Click on a section to open it and collapse all other sections. Very convenient.

Now the settings:

  • Go to the render section and change “Render as” to “collection” Then expand the “collection” sub section and choose the Grass collection we created earlier.
  • While in the render set the scale randomness to a value around 0.3.
  • Open the Vertex group section and select “Group” in the density property to have the particles clump up where we painted.
  • Open velocity and give the Randomize slider a small value between .01 and .10.
  • Enable rotation, set oriental axis to “Normal-Tangent and adjust the three sliders to your liking. Phasing will rotate on each particle local Z axis.
  • Now go to the emission section and adjust the number to something manageable. I like values between 50 and 200 depending on the clump size. For a lower value you may need to make the weight paint area smaller.
  • Adjust the seed to your liking.

Using a second particle system

When you are done, add another particle system with the plus button. This adds both a new particle system slot and a particle system data-set to populate that slot. In the list we see the slots. But in the drop-down just below it we see the data-set. Confusingly with the same name. 

Click the data-set drop-down and change it from “ParticleSettings.001” to “ParticleSystem” if you didn’t rename them. Then press the “2” just to the right. The data-set name will change to “ParticleSettings.003” if you don’t have other particle systems in your blend file.

With this little maneuver we will have two particle system with the same settings but different data-sets. With one exception. The vertex group is removed, so we need to add it back in.

In these two particle systems, make sure the seed is different. Then add our brown grass collection to the second particle system. Then decrease the hair length in the Emission section.

You can also increase the randomize setting in the rotation section to spread the brown particle system more.

This is just a quick and easy way to add some brown/yellow strands that represent the dead or old parts of a grass clump. We can add this portion of the grass clump by making new strands from scratch as well. It is all about weighting time against result. Only you can tell how accurate you want to be.

Creating multiple grass clump variations

Now duplicate the plane with the particle system as many times as you want variations of this clump. I did between 3 and 10 variations on my different tests.

Then you need to select each plane in turn and make all particle systems single user by clicking the number next to the data-set for each particle system slot.

Once that is done, we can select them in turn and tweak a few numbers to make them unique.

Numbers we can focus on are the seed and number of particles. We can also go into weight paint and slightly change the painting to mix up the distributions.

In the emission section you can find the source subsection and change the “emit from” to “verts”. This will clump together the bottom of the strands if the weight paint area is small enough.

The rest of the values we set earlier can be tweaked as well, but mostly, just slightly. Play around. You have many clumps now, so messing one up is not a problem.

When all grass clumps are created, we need to organize them so that each grass patch is its own object.

To do this, go to the modifier stack and press convert on all particle systems. Then hide the plane in the outliner.

Related content: 10 New or hidden features in Blenders outliner

Next, hide or delete the plane. Then select all the individual grass strands in the patch. You can do this easiest in wireframe view.

In the 3D viewport, find the object menu and go to “Object->Relations->Make Single User->Object and data”. In the window that pops up below the mouse, select “Selected objects”. We can do this operation for all our grass clumps at the same time.

This will make the data in each grass strand unique.

Select all strands in a single clump. Then hold Shift and select one strand. This makes it light orange to make it the active object. 

Press Ctrl+J to join all other strands into the active object.

If needed, you can adjust the origin point to be just at the center of the bottom part of the clump.

Add all of your finished grass patches to their own collection.

Test distribution of grass particles on a plane

Let’s test the particle system:

  • Add a plane and a particle system to it. 
  • Change the type to hair and check advanced
  • In the render section set “render as” to collection and choose the collection with your grass patches. 
  • Adjust the scale and Scale randomness parameters.
  • Enable rotation and play with the parameters.

In these test renders I used a single grass patch. Imagine what you can do if you put effort in and create a variety of 5-10 versions and add some scattered leaves, flowers, mushrooms and other species in there. It could actually look good!

What does nature look like?

What we covered is how to make one type of grass patch with a few variations. To create a full nature scene however, we will need much more. But this is a good foundation to start with.

We probably need trees, rocks and a landscape to put everything in. We also need details such as fallen leaves, rocks, mushrooms and flowers and a whole range of other details.
Learn about creating trees with the sapling add-on here.

Related content: How to create realistic 3D trees with the sapling add-on and Blender

This is just one stepping stone to a nature scene.

In this ending section, I just want to cover a few concepts to keep in mind when going on the longer journey of a full scene.

The first thing is distribution. Different plans gather in different distributions. Some grass types grow in moisture areas near water while others take advantage of more dry areas where other plans can’t grow. 

Mushrooms might grow just below a rock or on a log. Keep the distribution in mind when making up the composition of your scene.

The next thing is color. Nature scenes naturally contain a lot of green. But nature is also yellow. A natural color that is often forgotten. When you sample colors in nature, you will find much more yellow than you first might have thought. 

However, the sky color tint nature more towards blue, especially in darker environments. As a general rule, a sunny day brings more yellow and a darker evening shot is more blue, but they both contain yellow.

Also keep in mind that most nature photos by professional photographers are shot at the golden hour. This is the hour just after sunrise or before sunset. 

The reason for this is that shadows and colors are much smoother and easier for the eye. We naturally think this looks better than the harshness created by daylight.

Final thoughts

We created grass. I hope you learned a thing or two and if you found this article useful, please share it on your social channels so it may help more people.

Also, don't forget to check out the Graswald review.

Related content: Graswald review

Thanks for your time.

Written by: Erik Selin

Editor & Publisher

Erik Selin
3D artist, writer, and owner of artisticrender.com

Recent posts

Free HDRI images for subscribers!

Subscribers to our newsletter enjoy more value! How about a collection of 40 HDRI skies for free!

Subscribe to our E-Mails

Subscribers to our newsletter enjoy more value! How about a collection of 40 HDRI skies for free!
We don’t spam! Read our privacy policy for more info.
Modal newsletter form (#6)