Here is a tutorial on how to make grass within Max, based of Peter Guthrie’s excellent example (www.peterguthrie.net/blog/2009/03/vray-grass-tutorial-part-1/), but taking it a little further and applying this idea in bulk with Max’s built in tools.
The basic work flow is to model a very simple grass blade, make a cluster of grass and scatter across any object. Here is a example we (www.squintopera.com)used this technique in to give you an idea of the finished effect; www.jamesshaw.co.nz/#/content/Film/Cairo.flv/
Here is a couple of base CG beauty passes to give you an idea of the raw result before any post work has been done on it;
MAKING GRASS STRANDS
As previously mentioned this is based off Peter Guthrie’s tutorial with a few variations or notes to expand on this idea.
Firstly make a plane with 1 segment across and several in the length direction. Then add a length-ways UVW mapping, taper and using an edit mesh above this with soft select on vertex warp to a shape you like or several variations you can make into a group.
MATERIALS
Collapse the stack into an edit mesh. Then rotate the 4 strands into different directions by selecting and rotating the different elements. Then randomly set 4 id’s for them. This is so you can subtly change the colour with a colour correction within you multi-sub material.
Then make a multi-sub object material with 4 vray materials.
And within each multi sub make a VRay2SidedMtl like the following. You can also use the following grass textures by clicking on them and right click and save image. There’s a black and white one that you can use as an option for the translucency channel. But you can just leave this blank if the grass is at a distance and leave it grey.
The VRay2SidedMtl really is one of the most important things to use to get the light illuminating through the blades. Otherwise your grass will tend to look very flat.
Inside this VRay2SidedMtl sits a pretty simple vray material with the above grass blade in the diffuse channel (thank you Peter Guthrie for originally making this), with reflect set to white and Fresnel checked so it doesn’t look like chrome. Then adjust the Hilight glossiness to 0.6 which will help to spread the specular light you get off the grass. Again this is another very important part to make the grass look convincing. And unlike Refl. glossiness it will not be costly in render time and look almost identical, especially at typical grass distance.
To get variation in the grass tone change the bitmap diffuse channel to “Colour Correction” with the grass blade jpeg as the map, then shift the hue and saturation as follows differently for each of the 4 material id’s.
MAKING AN AREA OF GRASS
Now you have your clump of grass you can use this to populate surface. I found using individual strands was difficult, as the scatter we will use only really does up to around 70,000 instances before becoming a bit unstable. So if you use a clump of grass then you can spread further with less. Other options of scattering grass include pFlow and vray scatter; which I’ll go over later.
So now make a plane or use splines to create a free form extruded shape, or even detach a polygon from a surface to make a start. Remember when you extrude though to extrude 0 amount and only cap one end otherwise the grass will go underground as well. Also watch with way your normals go.
To make a scatter object of grass do the following:
- Make a compound object (on the create tab) with the grass selected and choose scatter.
- Then pick the plane as the distribution object.
- Change the duplicates to 1000
- Distribute using area
- Change rotation to 360 in the Z to mix up the direction. You can just limit this to 180 or 90 to simulate wind in a particular direction depending on the way your grass clump faces.
- Change scaling to 25% for all XYZ to give some variation
- Show Mesh with 100% to see exactly what will render, and when happy with the result change this to 10% and proxy to speed up your viewport.
Now you have a grass patch. The following is an example of how you can change the grass size on the sub-object scale and even add other simple plane flowers etc to add detail (click on it to enlarge). You can even mix grasses and flowers by using the same distribution object. Simple and no money spent… apart from Max of course.
ALTERNATIVES TO SCATTER
There are other ways of distributing grass. Peter Guthrie mentions the excellent VRay Scatter (www.rendering.ru/index.php/plugins/vrayscatter/), which has the advantage of varying colours more randomly then a multi-sub will do, and also varies the scale by a greyscale bitmap. The scatter method above has no method like this for varying and blending heights. The only problem is it’s a bit buggy (as if Max isn’t!), and it costs.
You could also use PFlow. I’ve had a quick go with this, but haven’t managed to vary the scale by a bitmap yet like VRay Scatter will do, just done density by material.
You will need a group of different grasses and some type of mesh as a distribution object. And obviously create a PF source and click on Particle View to get the following image.
Here’s how you might do this…
- Birth 3000
- Add a Position object, and add distribution object and you can use a greyscale image on a standard material to drive the density of the plants. You will have to view this standard material in a shaded viewport then activate. Weird I know.
- Rotation random horizontal, divergence at 180 and tick restrict diverg. to axis Z (1.0)
- Add Shape Instance and pick the group and tick “group members”. Scale variation 50%, and if animated tick animated shape and offset the timing by random 7 frames or whatever suits your animation.
Hope that may help someone out there! Enjoy.
September 12th, 2009 at 3:12 pm
Great in depth tutorial, thanks. You could also mention Forest by itoo software that makes a great job, even with the free version of their plugin :)
September 14th, 2009 at 3:20 am
Thanks Very nice tutorial, with too much datail
September 15th, 2009 at 12:22 am
Great tutorial, nice to see my work being improved on!
1 question re: highlight glossiness, is using highlight glossiness instead of reflect glossiness the same as using reflect glossiness with ‘trace reflections’ turned off? I’m not sure of the answer, but in my tests I found that turning off trace reflections made minimal difference to render times (due to vray being awesome and handling anything you throw at it!) So I now leave trace reflections on as it means the grass takes on the subtle hues of whatever environment it is in. eg. reflecting an intense blue dusk sky.
1 other thing, I found advanced painter gave me much more control over making the initial clumps of grass, but to be honest I haven’t touched the max scatter for a couple of releases now as it used to crash all the time.
September 15th, 2009 at 10:46 am
Re: Peter Guthrie, When you did your test with trace reflections turned on, did you have many objects in the background for vray to trace reflections?
I have noticed reduced render times when I turn off trace reflections. But it only makes a difference when your object (grass in this case) is surrounded by other geometry such as buildings, walls, etc. Especially if those objects have reflections as well.
September 15th, 2009 at 12:05 pm
Hi Peter,
To answer your questions:
1. I did try turning off trace reflections as you suggested, but found it made little difference to render times, and the grass looked rubbish as it didn’t pick up any of the GI around it properly. Plus we don’t tend to do that in the office as it’s very difficult to trace (excuse the pun) when someone turns this type of check box on and off.
Highlight glossiness is just a fake way of doing reflection glossiness. Same look in the specular highlight but just does a straight reflection which is way quicker to calculate.
2. I found I didn’t have as much control with advanced painter, so didn’t end up using it. The scatter is just fine as long as you don’t go above around 65,000 instances. This is why it’s better to make a clump and scatter that, rather than individual blades; it reduces the instances and is more staple.
September 15th, 2009 at 12:08 pm
Eldridge, I reckon there’s better ways of saving render time than turning off trace reflections, as the cost seems too high in that object not inheriting the surrounding objects coloring and brightness.
September 15th, 2009 at 12:12 pm
I should probably also mention I only used this technique in the foreground and actually ran the grass underground towards the midground to blend it with the surrounding grass plane.
After everything looks mint I converted it to a vray proxy to speed things up, of course saving it out first just in case I need to change anything.
September 15th, 2009 at 2:56 pm
How do you make it a vray proxy? do you convert the full grass object into one proxy, or the clump? i tried to make a scatter with a vrayproxy and the scatter button is grayed out in max 9/vray 1.5.
September 15th, 2009 at 3:39 pm
Max Scatter cannot scatter proxies, only VRay Scatter can do that (bought seperately at http://www.rendering.ru). I just turned the whole grass into a VRay proxy after finalizing the look yes.
September 16th, 2009 at 2:37 am
Strange how you used a Model that I made, and gave to MIR to use, as a professional courtesy. Perhaps you should use another project?
September 16th, 2009 at 2:41 am
As well as Squint Opera. Either way, a shout out would be nice, as you gave Peter one.
September 16th, 2009 at 2:52 am
Hmm, not sure what you are referring to Diizgroup? Do you mean the architectural model? If so our client made the basis of this and we used it as a reference to remodel. Do you mean you were involved in this? And the trees I made from scratch in Onyx tree builder, so sorry not sure what you’re referencing??
Let me know though if I’ve missed any credits and I can pop you in for sure! Cheers.
September 16th, 2009 at 6:40 am
Your Client being Snøhetta? Yeah, we actually made it.
September 16th, 2009 at 7:18 am
Of right, well we didn’t know that. ;-) I assume you mean the building itself. I can put your name in the credits at the top if you like? As I said though we did re-model from scratch like we do with all client models to suit our pipeline, but for the original model I can certainly credit you in.
September 17th, 2009 at 6:36 am
[...] Miralo Aqui [...]
September 21st, 2009 at 8:04 am
nice job i learn a lot more from you guys hope you can continue to your work..
September 23rd, 2009 at 12:51 pm
Great tutorial Shaw. Can I get credited too, preferably ‘Sir John’? I’m sure all those back rubs must count for something…
September 23rd, 2009 at 12:57 pm
[...] interessante criado por um artista chamado James Shaw. O tutorial detalha o procedimento para criar vegetação e grama usando apenas as ferramentas padrão do 3ds Max para renderização com o V-Ray, sem em momento algum recorrer a tecnologias mais recentes como o V-Ray Scatter ou mesmo plugins de [...]
September 24th, 2009 at 9:08 am
I’m still waiting for that back rub little John!
September 25th, 2009 at 6:36 pm
is this faster than just simply vray displacement..or is it just about making things look a bit more realistic?
September 26th, 2009 at 2:32 am
Well it generally does look better yes, and that was really our aim with this project to create more realistic looking grass. In the end I only used this technique in the foreground of shots then blended it into a bump mapped texture. I then collapsed, once happy, into a vray proxy so the inital overhead of loading the scene wasn’t there, and it was instead a rendering overhead. In the end I would probably say this might be quicker than displacement, but I haven’t tested this back to back to say for sure.
I do generally find displacement slow though although it is dependent to a large degree on the “dynamic memory limit” as set through the vray render dialog which is default of 400MB. With 4G of RAM we find 2500 is a good compromise, which will allocate more RAM to displacement, and quicken it up. Test both methods and see which you find quicker.
Hope that helps.
November 7th, 2009 at 12:28 am
great tutorial it helps other newbie like…..
mabuhay ka!!!
December 9th, 2009 at 6:32 am
you sir, are a hero! this tutorial was very easy to follow and gave me seriously realistic results. i can’t even help but to keep looking at my render over and over thinking, is it real? thank you so much for breaking it down like this in an easy to understand way for newcomers like me!
January 3rd, 2010 at 7:06 am
Great tutorial, every things works great but for some reason when I choose the plane object to distribute the scatter the blades of grass do not attach to the top of the plane. They for some reason bisect it…….any help is greatly appreciated..thanks in advance.
January 3rd, 2010 at 11:06 am
Hi Chris,
If you’re using a plane, convert it to an editable mesh and tick “show normals” in the modifer stack and see which way the blue arrow is pointing; it should be pointing the way your grass will go. There should be only 1 poly and it must be pointing the right direction (correct normals).
Common problems are extruding a spline and capping the top and bottom, which means you’ll have 2 polys pointing up and down and the grass will do the same. Or having poly normals pointing the wrong direction.
Hope that helps.
January 5th, 2010 at 3:20 am
Thanks…worked like a charm!
January 13th, 2010 at 11:00 am
Hi James,
I’m pretty new to 3DS Max and am trying this technique for my architectural renders, however I’m not a v-ray user (mental ray here) and therefore don’t have/use v-ray proxy. Though this tutorial says to use the scatter under compound objects it doesn’t seem to work for me…
When I have my four blades of grass selected the “scatter” command in the compound objects rollout is greyed out – it only works when a single blade is selected. Am I doing something wrong?
January 13th, 2010 at 12:05 pm
That’s because you can only scatter 1 mesh at a time, not multiple objects. Try either selecting one object at once and scattering or attach the 4 blades you have together (under the modify tab on editable meshes there is an attach button).
You also mentioned scattering VRay proxies; remember you can’t do that with this technique you would have to use VRay Scatter (www.rendering.ru).
Hope that helps.
January 13th, 2010 at 3:26 pm
Right, got that sorted… Next issue is that I can’t seem to get the Scatter plugin by Peter Watje working. It shows up as being loaded in my max plugin manager but I can’t find it anywhere else within max?
January 13th, 2010 at 3:34 pm
Ignore that ^ I found it! Sorry
March 29th, 2010 at 3:08 pm
For those ho don’t have VrayScatter, and ar searching a replacement of it, i can share a MaxScript that do scatter proxys or other kind of objects on surface, taking in account the Z position on surface and to avoid intersections between objects (and proxys) it have a simple method of calculation position by boundingBox size of the object with some control like offset inside or outside the range of boundingBox. But this is not a plugin, it runs with 3dsMax resources, and will take some time to do the job :).
Just e-mail me on. slazzo@gmail.com
April 6th, 2010 at 5:33 am
nice & thanks…………………….
April 7th, 2010 at 6:34 am
wow who cares who gets credit for what.. quit being babies about it.. its a tutorial to teach people not a place to show off how great you are at connection vertices together.. seriously grow up.. credit lol.. u got to be kidding please put my name its my piece of grass i can tell because my vertices are different then yours there better man they have sharper dots then your polygons so gimme credit man lol.. why dont you concentrate on something like work or another tutorial do something productive instead of whining about a piece of grass that may or may not be modeled by you
April 7th, 2010 at 8:49 am
LOL. I assume you’re refering to DiizGroup’s comments James? I think that was to do with the building in this image and animation; not the grass. ;-)
July 4th, 2010 at 9:33 pm
Thanks for the tutorial. This is great and is a huge help!!!
However, I am new to modeling in 3ds and I can not seem to get the blades to scatter properly on the plane. Everytime I use scatter, the planes either flip in a alternate axis, or I work that out but the center of the blade is centered within the plane (half of the blade is above and the other is below). I can not for the life of me figure what I am doing wrong. I feel that is has something to with since the blades are made of planes, and the axis point is located in the center of the plane, the scatter is using this a reference.
I would love to know how to scatter the grass blades so that the bottom of the blade is the reference point and stays on top of the distribution plane.
Any help would be appreciated!!
July 26th, 2010 at 10:21 pm
Have the sam problem…
July 26th, 2010 at 10:56 pm
Yeah, you need to check the pivot point is at the base, or slightly above it. There are some great pivot placers on http://www.scriptspot.com if you want to automate this, but it shouldn’t be necessary with a single blade.
The other problem you might have is double faces. To check, convert your plane to an edit mesh and delete the polys after selecting them individually. If you have any double faces a poly will remain after deletion. This shouldn’t really be the case with a plane though as this is always single sided, but is a common problem with extruded splines, as the extrude modifier has cap start AND end.
I hope that helps!