This tutorial goes over the process I used to create the grass texture in my recent Fantasy Graveyard Scene. It is a process I came up with myself after experimenting with a number of other methods I found online, most of which involved moving sprites of grass around in Photoshop by hand. Being the impatient type, I wanted to have a method I could use to very quickly make an effective texture, while still retaining a level of control. Another plus I have found while using this method is it’s extremely simple to make a good normal map if desired. The reason for using cameras in 3ds Max, is that Max does not like rendering materials with Alpha when using render-to-texture. Maybe this will be fixed in a future version (or if you’re reading this in the future, maybe it already has, go Autodesk!)

1) First up is the painting of our grass blades and their alpha. I worked very fast and loose, as once they are repeated and scaled the lack of definition is hardly noticeable. Include as much colour variation as possible, as this helps the overall texture once you get to duplicating this card all over the place. Too much contrast though and you start getting very repetitive single blades. I added a gradient of yellow to green from left to right, I also included a gradient of dark to light from the base of the blades to their tip that helps with shading.
2) Setting up 3ds Max for rendering your materials. First up I set the background colour to the darkest green at the base of my grass blades texture. I used a tiny texture of the colour instead of setting it in the colour field, the reason for this is, when swapping between rendering the diffuse or the heightmap, it’s much easier to toggle the bitmap off than it is to keep changing the colour value.
3) Next up is setting the output render size, this should be the size you wish your final texture to be.
4) This stage is probably the most crucial to the whole process. Create a square plane 128 units square at 0,0,0 this will be what we draw our grass objects on, it also represents the final texture space. Next create a camera above the plane looking down. Set the camera position to 0,0,128 and it’s target at 0,0,0. After this, adjust the camera FOV so that it perfectly fits the plane and set it to Orthographic Projection to remove distortion. If you set this up correctly and follow the next steps closely too, when we render out our maps later they should tile perfectly with no seams.

5) I use two materials. The first is a straightforward blinn with your diffuse and alpha plugged in. Set self-illumination to 100% so there is no effect from the default Max lighting. Also toggle 2-sided just in case the rear of your texture becomes visible to the camera.
6) The second material is what we will use for our heightmap. Make a copy of the first material, except for the diffuse, now use a gradient of black to white and set this to use the second UV map channel.

7) Create a plane with your grass blades material applied. Add a curve on both the vertical and horizontal axes.
8) Use paint objects to draw this grass plane all over your plane. Try to get as even a cover on the surface as possible.

9) Attach all of your grass planes together in one object, set the origin back to 0,0,0 and delete the overhanging planes on two of the separate parallel edges so that you don't get double thickness areas when you tile this group in the following steps.
10) Apply a new unrap modifier to the grouped planes and set it to use the second map channel. Apply a planar map to the side and stretch it vertically to fit the UV space. Leave some padding at the top and bottom to stop bleeding. This map is for our second material to render the heightmap.
11) Instance your collected grass planes object to surround the center so that your texture will tile properly when rendered. At this point you can move and duplicate some of the planes to fix any tiling issues or large holes left by trimming down the sides in step 9.

12) Render your diffuse from your camera and save it out.
13) Apply the hightmap material and set the render background to black. This is where being able to toggle off the bitmap comes in handy.
14) Render your heightmap from your camera and save it out.

This part goes over how I combine and work with the rendered maps in Photoshop to create the texture.
15) First I multiply the heightmap onto the diffuse with an opacity of around 40% This helps add depth to the grass.
16) Using the hieghtmap I then create a normal map, then from this an Ambient occlusion map and a Cavity map. I used Crazybump for this process.
17) I then multiply the AO map, again using an opacity of around 40%. The cavity map is then blended using overlay with an opacity of around 30%.

18) Doing some slight adjustments using Curves and Hue/Saturation.
19) I add some extra colour variation in a separate layer set to hard light, painting it in with a brush set to a low opacity.
20) Finally I sharpen up my diffuse and create a specular and gloss maps.

Here’s the final texture in Marmoset, and a couple of variations. Just mixing up your object paint settings can produce wildly different results. The right hand texture is using a longer square texture for the grass blades, and slightly less random object paint settings. For the central texture I also created an Alpha map by applying a solid white material after rendering the hieghtmap, then I combined the grass textures with a dirt material using the alpha. Some people may want to fix any intersecting blades in Photoshop, but I find they are usually unnoticeable in the final texture.



Site Design and Content © Mark Foreman