Creating 3D grass

Jonathan Sanches 2010-05-17 10:31 tutorial  > 3ds MAX  > modeling

Realistic grass has always been a challenge to create in a 3d environment.

Artists have developed many methods to create grass such as post-photoshoping it into the image, using displacement maps to simulate grass strands, or actually modeling 3d grass. It seemed a couple of years ago that displacement mapping was the way to go, but with the recent leaps in processing technology, and the efficiency in high poly rendering of max and renderers such as V-ray, 3d vegetation, including grass, is becoming more and more the prime method for artists worldwide. There are many different ways to go about modeling the grass, and many different ways to go about spreading it. There are recent plug-ins that do the work for you such as "Autograss" by happy digital, ltd. However, as you will see in this tutorial, you might not need to shell out a couple hundred bucks for something you can do yourself once, and re-use on render after render. So I researched various methods taught online, and found an excellent grass tutorial by Peter Guthrie. His method involves creating 3d grass patches and spreading them out as proxies, a method that is creating great results for many.ÂIn this tutorial, we will expand on the method of distribution. Using Groundwiz (free plug-in) we will paint the grass patches (proxies) onto the ground. This tutorial is based on the V-ray renderer, but the concept can be used with any other renderer. The basic steps are as follows:
  • Create Patch of grass
  • Convert to V-ray Proxy
  • Paint proxies onto ground plane
This method allows for viewports to display only v-ray proxies (very light on memory usage), and since you are painting the patches, you can paint more near the camera, and less as you get further into the view where less detail is necessary, allowing for more efficiency. The first part of this tutorial is basically identical to Peter’s and James, and the second half is where I expand a little on the Groundwiz plug-in. Hope you find it useful.



A D V E R T I S E M E N T



FIRST STEP: CREATE A GRASS STRAND CLUTTER

Okay, we will begin by modeling a cluster of 4 or 5 grass strands that we can later use to create a patch.Â
  • Create a plane to represent an individual grass blade. I made mines about 4 (inches) high and about 1/4 wide. Give it multiple segments lengthwise so that you can shape it.
  • Apply a UVW Map to it now before we shape it.
  • Apply an edit mesh modifier
  • Copy this blade over 3 or 4 times so that you can have different shapes of blades. Using soft selection, taper, stretch, and bend each blade as you like to represent the actual curvatures of real grass. Get as creative as you want here.
  • Rotate each blade as you wish to create some variation
  • Collapse the modifier stack and attach all the blades to form one object. Give each blade a different material ID from 1 through 4.
  • Create a multi/sub-object material with 4 material slots (or 5 depending on how many blades you created). Make each material a vray2sided material. This will allow for nice translucency.
For the next step, you can create your own grass blade texture, or use this one which I created:





  • Set the following material settings: reflect = white, fresnel checked, and highlight glossiness at .6 to create more efficient highlights.
  • Create a "Color Correction" type on the diffuse box and apply the grass jpg to the map slot. This will allow you to add variation of tones to each blade.
  • Play with the sliders as you like to create the hues you are looking for. Do this for each of the 4 material ids and apply this material to the cluster of grass we created.
  • Optionally, set the opacity map on the translucency channel of the vray2sided material slot.

 

SECOND STEP: CREATE PATCH OF GRASS

  • Begin by creating a circular patch of grass (circular will blend better then rectangular shape). Create a flat circular plane with about a 2 foot (~600 cm) radius. I just created a circle and extruded with 0 inches. Make sure your normals are pointing up. Should look something like this:
  • Now select the grass clutter and under compound objects, apply a scatter modifier.
  • Set the round plane as the distribution object.
  • Set the following scatter settings: copies=2000, set distribution to area, uncheck perpendicular, hide the distribution object, set the rotation on your z-axis (or y-axis depending on your setup) to 360 degrees, set the scaling range to 25 percent across the board, and make sure your display is at mesh and at 100%.

 

THIRD STEP: CREATE A VRAY PROXY

Now we will convert this patch of grass we created to a v-ray proxy. We can forever use this proxy on all our drawings. If you are not familiar with v-ray proxies, you can find more information here.
  • Start by deleting the circular plane, this was only to create the distribution area.
  • Right click on the grass patch and select "V-ray Mesh Export". The Mesh Export dialogue will come up. Select a folder to save this proxy in. Remember you can to re-use this proxy on all your future drawings so you might want to make it an accessible folder. Select "Export all selected objects in a single file"Â Assign a name to this proxy and hit OK. Now you have your grass patch proxy saved.
  • Make sure you save the material you created into the library for future use.




FOURTH STEP: SCATTER THE VRAY PROXY BY PAINTING

Alright so now we will expand further on the technique of spreading the grass patch by painting the proxies. For this we will use a very nice piece of software called GroundWiz by Gugila. You can download a free version of this software here. Although GroundWiz has many more uses then the one we are giving it, it serves our purpose nicely and it's very simple to use.
    • Begin by inserting the proxy you created into the drawing. Do this by selecting "v-ray Proxy" under the "V-ray" category of geometry. Click anywhere in the 3d space and when it asks you, select the proxy you created. Set the display to bounding box, and you will see that the patch will display as a simple rectangular box (taking up less memory). However when rendered, it will render as the grass patch.
    • Now go to the "GroundWiz" category of geometry and select "GW Planter". Create a planter anywhere on your drawings.
    • Set the distribution settings as follows: First pick your ground plane to be the ground object, and the proxy (grass patch) to be the planted object.




    • Set the "Uniform Scale Range%" from 70% to 110%. This will fluctuate the size of the grass to create variety. Make sure the "Orientation Range (deg)" Z-axis is set from 0 to 360. This will create random rotation of the grass.




    Now we are ready to plant:
  • Go down to the "Planting Tools" section and expand it.
  • Select "activate" under "Detailed Planting". Set brush size to around 6'³ (the bigger the brush, the more proxies it will spread).
  • Start painting proxies onto your ground object. Paint more near the camera where you need more detail, and less as you get further. Also, stay within the camera's field of vision; there is no need to paint outside of it and use up resources.

 

Once done, keep "Detailed Planting" on to allow you to edit your created proxies;you can erase the ones you don't need and/or move them if need be. Render. You should have something like this:
 

 

If you have bald spots, go back and paint proxies in. Also, make sure to give your ground plane some sort of grass texture so that any areas of it visible through the grass can blend in. As you can see, the grass spreads out very nicely and seamlessly. To create a more realistic carpet of grass, you might want to create different patches, some with longer strands and others with shorter strands maybe even flat-looking. You can use this same technique to scatter falling leaves from nearby plants. You can scatter flowers bending in the wind. You can get as creative as you like. Observe real-world grass and you'll notice that there is great variety of grass styles and shapes. Good thing about this technique is that once you create a patch, you can reuse it however many times you like.

Jonathan Sanchez
CGSketch.com/blog
Author: Jonathan Sanches
Tags: grass v-ray

LEAVE A COMMENT

You need to be logged in to leave a comment. Don't have account? Register now.
sancheuz14:27:07  |  18-05-2010
Helpful tip - Don't forget to reset the xform on the grass patch before converting to Vray proxy. It might help reduce memory use further upon render.
Deloix18:58:18  |  20-05-2010
Good method. btw 2 foots isn't 600cm but 60cm ;-)
remKa12:22:20  |  25-05-2010
I don't understand why you did this tutorial, Peter Guthrie did exactly the same last year http://www.peterguthrie.net/blog/2009/03/vray-grass-tutorial-part-1/
giane01:33:43  |  25-11-2010
GREAT!!! It works fine. Cool way to make grass! Many many thanks.
fkhatri19:20:51  |  09-01-2011
Thanks a lot for introducing me GroundWize!
student666908:15:04  |  26-03-2011
Glad to see if you're writing a tutorial, for which the dispersion of the modifier list this command is not found, does this command is plug it?
mickyx07:03:48  |  01-04-2011
Very Nice , if the tutorial is in detail and precise (its more than the others! , thanks
tay213411:52:05  |  19-04-2011
thx
satriyo21:15:17  |  18-05-2011
wowww...thank you
fernsz07:17:30  |  29-06-2011
nice and easy to understand....thanks...
maiq12:39:30  |  08-09-2011
Perfect one, works nicely and is pretty easy to uderstand. One question: would it be possible, to have dome "bold" spots controlled by a map? Doing a vizualization of children playground and I need to have worn spots around some objects and of course around trees.
maiq14:29:06  |  08-09-2011
Well, found the answer myself. -Convert the scatter object to editable mesh (applying the EditMesh modifier is sufficient) -Apply UVW maping, fit gizmo as needed -Vol.Select modifier: Stack selection model - FACE Selection Method - ADD Select By - Texture map, choose BW map (bitmap, noise...), white is selected, black stays unselected -DeleteMesh modifier et voila: it works!!! P.S.: Not my idea, found a tut here http://www.cgshelf.com/grass_tutorial.php BTW, I like the idea of using simpler geometry + opacity mask for the grass.
dzoes20:16:26  |  26-02-2012
how to put material on painted proxies? The original proxy which I put in 'planted objects' renders with material while new proxies don't...Any ideas?
MuhammadNabih03:45:16  |  29-02-2012
Great Work , i have a question , how can i make this grass in a certain area ??
sdezigner18:48:22  |  08-04-2012
This is a great tutorial, except that every time I try and scatter my little group of grass, it changes the orientation and the base point of my grass on the circular plane. I suspect it has something to do with the normals, however for the life of me I can't figure it out. Can anyone help me out with this?? Thanks
Katerinne14:12:29  |  08-02-2013
Cool tutorial! Thanks Check some [url=http://www.cgtrader.com/3D-models/Plant/Tree/Grass-1.html]Grass 3D models[/url] for inspiration.
khahoi19:41:45  |  08-10-2013
very good
Alex-V1715:02:28  |  14-12-2014
Thanks for the tutorial! One thing though, If I have a place that is an unusual shape, how do I stop my grass from going out of that shape area?

+ ADD A COMMENT

  • ul. Przedzalniana 8, 15-688 Bialystok, POLAND
  • ph.: +48 85 674 50 05