In today’s video, I’m going to guide you through the process of creating anime-style grass in Blender using a tailored workflow specifically designed to mimic the detailed look of nature typically found in grassland with minimal effort.
Intro
A field of grass has always captivated me. There’s something special about being surrounded by it—the vastness, the gentle rustling in the wind—it’s always drawn me in. That’s why grass holds such an important place in my art, and I’ve long been fascinated by the challenge of creating it in anime style.
Replicating the visuals of anime grass in 3D can be quite tricky. To achieve an effect that imitates the hand painted look of nature often requires pushing beyond the conventional limits of 3D space. If you're curious about how I tackle this challenge to create beautiful anime-style grass in Blender, then join me on this exciting journey.
Departure
By the end of this video, you’ll be able to achieve similar results by following clear, step-by-step instructions.
Once your pipeline is set up, it becomes effective for various projects, enabling you to consistently achieve great results.
Alright, Let’s go!
Approach/Planning
Before we start, let me briefly outline our approach:
Step 1: Create a surface for the grass to grow on. You will also need to paint a vertex mask to determine where the grass will grow.
Step 2: Based on the vertex mask, generate grass using a Geometry Node.
Step 3: Transfer Vertex Normal.
Step 4: Create and apply the shader.
Step 5: Add wind animation.
So what makes this workflow great? To my knowledge, there are two.
First, you’ll be able to dynamically paint different types of terrain in real time, and the grass will automatically adjust to it. This is a feature inspired by Unreal Engine that I set out to replicate in Blender. This makes the workflow more artist-friendly, as you can control where and how the grass grows using brush strokes.
Secondly, your grass will have hand-painted style shadows that respond to lighting direction. This distinctive feature, which gives your grass an anime look, comes from the vertex normal baking process—perhaps the most critical part of this tutorial.
Tips before started
Before we dive in, let’s set up a few things to ensure everything runs smoothly.
You will need a simple 3D model of grass. Since this will generate thousands of duplicates, keep the poly count low—mine uses just 16 triangles. Also, make sure the pivot point is placed at the root of the grass model. Place the grass model into separate collections and name them for easy reference.
Next, set Eevee as your renderer. Go to Color Management and switch "View Transform" to Standard to gain full control over the visuals.
Alright, let’s get started!
Step by step
Step 1: Create a surface. Then paint on vertex color to determine where you want your grass to grow.
A color attribute—also known as vertex color—is a way to store color information directly on a model’s geometry. This allows you to paint colors on individual vertices or faces and then use that color data in shaders or modifiers. In our case, we will use this information to mark where the grass will grow.
In Blender, create a plane for the ground. The mesh should have enough density to capture high resolution details.
Now, let’s paint a vertex mask to decide where the grass will grow. With the plane selected, head to the Data tab and create a “Color Attribute” set. Give it a simple, recognizable name, as we’ll use it later. Enter Vertex Paint mode and paint a black-and-white vertex mask. White areas will indicate where the grass will grow.
Step 2: Generate grass using Geometry Node.
At this point, we need to decide how to generate grass on this surface, a technique commonly known as Object Scattering. While the particle system is very capable, Geometry Nodes is a more suitable approach because of its flexibility, allowing us to add adjustments and fine-tune details as needed. This way, we can build up layers of changes or details without starting over.
Now, let’s dive in and follow along with what I do.
First, select your ground plane and add a Geometry Node modifier. In a separate window, switch to Geometry Node mode—this is where we’ll work on our node system.
Here’s a quick overview of the node setup we’ll be creating.
I’ve highlighted important details that might be easy to miss—any small mistake could prevent the system from working correctly, so be sure to double-check if something isn’t behaving as expected.
We’ll start slow, so I’ll break this section down and guide you through each part.
First, generating Grass
Start by adding a Distribute Points on Faces node and an Instance on Points node.
To tell Blender what to instance, select the Collection containing the 3D grass model. Make sure to check the necessary boxes.
This setup is essential for generating multiple instances of the grass model.
To make the ground plane visible again, add a Join Geometry node at the end of the chain.
You’ll also need a “Realize Instance” node—which will turn each blade of grass into a separate object.
You can adjust the Density value to control how much grass grows on the plane. Keep in mind that higher density increases performance demand.
Secondly, adjusting Position, Rotation, and Scale
Add an Align Euler to Vector node to ensure the grass aligns correctly with the ground, especially if your ground isn’t flat.
Next, add a Random Value node and a Rotate Instances node to randomize the rotation of the grass. We only want to randomize the Z-axis, so set the max Z value to 3.14 (which is equivalent to 180 degrees).
For the scaling, do the same to add variation to the size of the grass blades.
Also add a Set Position node. For objects like flowers, you may want to raise them slightly off the ground, making this node helpful.
Lastly, controlling Growth with the Vertex Mask
Finally, we’ll limit where the grass grows using the vertex mask you painted earlier.
Add a Named Attribute node and type in the name of your vertex color set (in my case, it’s “Grass”). Then, use a Math node to multiply this with the scale randomness. This way, any areas where the vertex mask is black will set the grass scale to zero, slowly making it disappear.
To control over how smooth or abrupt the transition is, you can use a Color Ramp node to fine-tune the effect.
Step 3: Transfer Vertex Normal.
In this step, through a Data Transfer modifier, we will bake vertex normal detail to our grass surface from a detailed mesh, which will be created using a displacement map.
At the moment, If you apply the shader and render the grass, the grass surface looks flat and lacks details. We need to have better shading.
Compared to the detailed mesh, there is a big difference in their form. This happens because the shader relies on vertex normals to simulate shading.
Currently, the grass surface’s normals all point in one direction, while the detailed mesh’s normals align with its shape. We need to transfer the normals from the detailed mesh to the grass surface—a process known as Transfer Vertex Normal.
First, we’ll create the displacement map. I’ll use Photoshop’s Cloud filter combined with a Cut Out filter, the detail should be distinctive for this to work.
Creating this texture in an image editor is a quick and straightforward method. If you don’t have image editing software, feel free to use the texture I’ve provided.
Next, we’ll create the detailed mesh in Geometry Node. We will reuse the grass surface, so duplicate it, rename and replace the Geometry Node with a new one.
We will follow this formula.
The displacement will be produced by an “Set Position” node, limited to only the Z axis through a “Combine XYZ” node. The texture will control where the displacement happens. Use a “Vector Math” node to multiply with a “Position” node to control the size of the texture.
To make this displacement only happen on the grass area, use a “Named Attribute” to call in the vertex color. Finally combine everything together using a “Mix Color”. Use a “Color Ramp” and a “Blur Attribute” Node to control the softness. To adjust the intensity, use a “Math” node to multiply the value.
Now, let’s do the vertex normal Data Transfer. Go back to your grass setup and add a Data Transfer modifier. Set the Source to your detailed mesh. check Face Corner Data and select Custom Normals. You should now see a change in the grass mesh shading. From now on you can hide the detailed mesh, but don’t delete it.
Remember to always keep the vertex normal "Data Transfer" modifier at the end of the list to ensure that any generated foliage inherits the baking process.
Here's a pro tip for you: To synchronize the grass surface and the detailed mesh, add a “Data Transfer” on your detailed mesh and move it to first in order. Check “Face Corner Data” and choose “Color”. Select your ground mesh as the source. You might need to refresh the modifiers by turning it on and off. Now whenever you adjust the Vertex Mask on your ground mesh, the detailed mesh will also update accordingly.
This is why I love the “Data Transfer” modifier, it is so convenient.
Step 4: Create & Apply the Shader
Next, open another window and switch to the Shader Editor. While selecting your ground mesh, create a new material and name it. You’ll also need to assign this material in the Geometry Node using a Set Material node.
Now that we’re ready to render, switch to Render Mode by clicking “Viewport Shading.” The first thing we’ll do is turn off the shadow casting and turn on Backface Culling in the shader setting.
We’ll now create a cel shader workflow that allows you to focus on just the two essential elements: color and value.
First, let’s tackle color. We’ll follow this shader formula.
For the grass, use a Mix Color to blend 2 colors. I’ll just use the displacement texture as a mask here since we already have it. You can adjust the pattern’s tiling using a Texture Coordinate and a Mapping node. Choose two green tones for your grass.
Do the same to create another set of colors for the dirt path. To call in the vertex mask, use an Attribute with your vertex color set name, and use it as a mask in another Mix Color node.
Plug in the grass and dirt colors, and now the two are perfectly blended with each other. This is because the grass also inherits the vertex mask, making the transition of the grass perfectly in sync with the ground.
This feature takes inspiration from the Unreal Engine landscape material, and I believe it replicates the effect quite well.
Now that color is done, let’s move on to value.
Mastering value, or shadow, is a powerful skill that can elevate your art significantly. In anime grass, styles may vary, but one consistent feature is a strong focus on shadow contrast and intentional shape and form. Shadows should clearly define the form of the grass, adding depth and allowing artists to control whether the grass appears soft and fluffy or dense and wild. Even on a flat surface, well-placed shadows are essential for making the grass visually compelling.
In our case, we’ve already baked the shape into the grass through vertex normal; now, we just need to bring the shading information into the Shader Editor. So, create a Diffuse BSDF, Shader to RGB, and a Color Ramp, and to bring it all together, use a Mix Color node. We need to reverse the color ramp, this setup allows you to choose the color of your shadows.
And there you have it—your grass field! I think it looks gorgeous, don’t you? The grass shadows now look hand-painted and show clear shape and form; it also responds accurately to the lighting, giving it a polished and complete look.
Step 5: Wind Animation
Your wind effect will be created within your grass geometry node, driven by two main factors: the movement of the grass itself, and a subtle color change to mimic the effect of wind passing through. Both will be synchronized using one procedural texture, ensuring that the animation and the color changes are perfectly in sync.
First let’s create the grass movement.
We’ll follow this formula.
This Geometry Node system will add constant rotation on each of the grass objects, but the intensity, scale and speed is controlled by a noise texture.
You’ll need to input this information into the existing “Instance on Points” node using a “Vector Math” node with “Add” function. To make adjustments, just increase or decrease the number in the fields until you’re happy with the result. By the way, these “fields” are just “Value” nodes that were renamed.
This Geometry Node mimics 2 types of grass movement: The wind wave, which is slow and smooth in motion. The wind noise, which is fast and rapidly. Combine them together and you will get the desired effect.
Now we’ll make the wind affect the color of the grass.
To do this, store the wind wave pattern movement using a Store Named Attribute node. Then, in the Shader Editor, call it out with an Attribute node and input the name you assigned.
Finally, combine the wind pattern with your grass color using a Mix Color node, use a math node to adjust the intensity. Choose a slightly darker color to mimic the shadows cast when the grass is bent by the wind.
And that’s it! You’ve created anime grass with wind animation—Though it’s a simple touch, it breathes soul into your art, making it feel alive.
To make the workflow more efficient, convert important attributes in Geometry Nodes into adjustable properties in the Modifier.
To do this, return to Geometry Node and drag the necessary attributes into the Group Input. Then, name each attribute properly in the sidebar. You’ll see them appear as adjustable values in the modifier. This makes it easy to reuse the setup and add variations, like flowers or other plants.
Retrospective
Now, let’s talk about a few key points to ensure your grass looks good:
Aim for clear, balanced shadows.
Color variations should be distinct but subtle, maintaining an overall sense of uniformity in the grass.
The wind effect should bring your grass to life—keep it gentle enough to appreciate the movement across the whole field, while still noticing the sway of each individual blade.
Remember, grass embodies vastness and calm, elevating the focus on your main subject. The simplest approach is to keep it subtle and delicate—less is often more.
Obviously, this workflow still has room for improvement. Most of these features are workarounds to mimic the grass workflow in Unreal Engine. While it’s convenient in the end, the process of setting it up can be a bit cumbersome.
Also, you may have trouble viewing the animation in real-time due to performance limits. Fortunately, there are ways to optimize this.
You can multiply the grass density with a gradient map. This reduces the grass density as the distance from the camera increases, based on the gradient mask.
You can also replace the 3D grass blades with 2D billboard grass that always faces the camera. From testing, this approach greatly improves performance. Check out my anime tree tutorial to learn more about this technique.
Despite the drawbacks, I’m happy with the result. This workflow makes it easy to add more elements to the scene, and if you’re familiar with Geometry Nodes, the possibilities are even greater.
Ending
Thank you for joining me on this journey to create anime-style grass in Blender. I hope you found this tutorial both helpful and enjoyable. If you have any questions or want to share your creations, feel free to leave a comment below or reach out to me on social media. Don’t forget to like the video, subscribe to the channel, and hit the notification bell so you don’t miss future tutorials. Until next time, keep creating and have fun with your art!