You are here: Homepage /  Tutorials & Tips /  Tutorials / Low-poly Tree Modeling
Low-poly Tree Modeling
Posted: Apr 13, 2010
Published by: the area
Homepage: Visit the page
Software: Autodesk 3ds Max
Category: Modeling, Shaders
Skill: Beginner
Tutorial Steps
1Software used:
2Things I assume you know how to do:
3I) The canopy (leaves)
4II) The trunk

Creating dense, attractive, low-poly (200-300 triangles) trees without the "card" look.

By Andy Zibits

Software used:

-3ds max
-Unreal Editor

Things I assume you know how to do:

-Basic (beginner) 3ds max knowledge (nothing fancy, but you should know how to apply a texture to something, know where the material editor is, know what sub objects are etc.)


One of the things I often see in low poly trees is the "card" look. A 3D artist will often throw a bunch of planes in a jumble and stick it on a trunk and call it a tree. It may even look nice from a couple of angles, but from many angles, it looks like a few intersecting cards.


I see this ugly technique in games that sell, as well as in first year CG students' projects.

My solution came after many failed attempts. Usually, when I got my tree the way I wanted it, it ended up too many polys. This turned out to be because of a couple of issues. First, I was box-modeling the trunk and branches. Second, I was trying to model individual sprigs and leaf clusters with subdivided planes that I would bend and twist until they looked good.

Both of these problems were solved by a couple of facts that I realized while I was out studying trees:

1) A tree's canopy is made up of "basic units", consisting of a cluster of branches and leaves. This is repeated over and over, in succession. Every different species of tree has it's own unique "basic unit"

This is not a defined, "set in stone" kind of thing - you may find a better "basic unit" for a Sugar Maple, or, you may choose to use more, smaller units for a higher poly tree, but there is usually a recognizable pattern in a tree and once you find it, you are creating the tree in the most efficient way possible.

2) You don't usually see all of the branches in the bulk of the canopy, just little hints of bark here and there.

This allows you to be conservative with your branches as well as the amount of polygonal definition you give them.

Knowing these two pieces of information, let's begin.

I) The canopy (leaves)

I start with the leaves because this is the part that really defines the look of the tree. It is the most important, and while most people think it is the easier part, you will soon learn that it isn't, especially once you read my trunk tutorial below.

1) The first step is to get a nice scan or high resolution photo of a single, undamaged leaf from the type of tree you are making. Ideally, there will be no visible lighting on the leaf either, no cast shadows and no shiny spots or highlights. This is why internet photos of leaves are often no good or will require some clean-up in photoshop before proceeding.

Here is the one I am using for this tutorial:

This will be an autumn tree, but we can easily make the tree green after we are done, I'll show you how at the end of the tutorial.

2) Next you want to, either through "Select>Color Range..." or via the lasso tools, select the leaf and put it on it's own layer over the background. The more precise you are the better your tree will look. What you are trying to avoid is *any* white (or whatever you background color is,) around the edges. You may want to "Select>Modify>Contract" 1 or 2 pixels when you are done just to be on the safe side.

3) Once this is done, copy this leaf and paste it onto a larger canvas. You want to make an arrangement of these leaves, creating the kind of "basic unit" cluster I described above. The best way to do this is to make a few different smaller clusters, with different sizes and varied orientations of leaves.

Then, using your layers, lay these mini-clusters over each other the way they would on the real-life tree. Use adjustment layers or Brightness/Contrast settings on each individual layer to make certain layers darker or lighter than others. Try to consider realistically the way the top layers might shadow the bottom layers. The nice thing about using adjustment layers is that the effect will compound, each adjustment layer effecting *all* of those below it. If you simply use Brightness/Contrast through the Image>Adjustments tab it will only effect the active layer, and you will have to keep track of the shadow depth manually with regards to the successive layers below.

See the example:

4) Once you are satisfied, link all of the layers above the background, and select the "Merge Linked" option.

5) Now, CTRL-Click the single layer you have now, and you will have a new selection based on all the leaves you have on that layer:

6) Click the "Channels" tab, and create a new channel.

7) "Fill" the selection with white.

8) "Select All" and copy this black and white image, then create a "New Document, and "Paste" it. "Save As..." and name it leaves_opacity or something indicating that it is the opacity map version of your leaves.

This is not totally necessary but if you want to see your leaves properly in the 3ds max viewport, you will need this in your opacity map slot in the Material Editor. It is hard to compose a nice tree without seeing it properly in 3ds max's realtime viewports.

9) Go back to the Layers tab and, using the eyedropper, select one of the moderately darker colors present on your leaves (not too dark though) "Fill" the background layer with this color.

This is just a little insurance, so that if your Alpha channel is a hair off anywhere or if you resize the texture and the alpha channel is no longer a perfect match, you won't have a white halo around your leaves.

10) Set up the texture as shown below, with the color map in the Diffuse slot and the opacity map you made in the Opacity slot.

Create a 1:1 plane and apply the texture to it. Your leaves should be properly opacity masked as such:

11) Go into Top View and, selecting "Adjust Pivot Only", move the pivot out to the edge of the plane, to the appropriate edge where the leaves would be growing from.

12) Clone this plane until you have about 20 or 30 planes all perfectly overlapped.

13) Take this stack and Clone the whole stack, dragging them off to the side. You now have a backup stack for later, which is a good thing to have in this process, because the method we will use to distribute these leaves is not "undoable".

14) Create two more clones of the original pile, each one 33% smaller than the last.

15) Now we will use a terrific tool called Randerizer, by Matt Rapelje. This is a great tool for randomly distributing objects such as trash, rocks, bullet casings, etc. which would normally require a person to work rather hard at creating a randomly scattered look (this is harder than it sounds)

Below are the settings I am using for this particular tree. Most temperate deciduous trees will require a similar setting, but depending on the desired height and density of your tree, you will want to do some minor tweaks.

Once you have used the Randerizer a couple times, you will get a feel for how these settings' changes will effect the outcome.

*Other types of trees and bushes may require similar settings but with your "basic units" upright instead of laying flat. An example of this is the Poplar, which is a rather erect tree with branches growing up, against gravity.

16) Run the Randerizer on all 3 piles of planes.

17) Go into Top View and move the mid sized one over to the large one.

Go into side view and raise this grouping so that it is a little higher than the large grouping, giving the tree a natural, tapered look. Repeat with the last, smallest cluster.

*Some species of trees may require the reverse taper, thinning at the lower levels.

18) Clean up any floating units that don't seem to connect to the body of the tree.

19) Now, go into your "Select by Name" view and grab about every third of the planes in the list. Now delete them. This creates random empty areas in your cluster that exist naturally in trees, which the Randerizer doesn't really create.

20) Manually prune any planes that stand out to your eye as "breaking character" - i.e. - making it apparent that this is not a real tree. Rotate the cluster and view it from different angles and prune until it looks OK from all around. Don't overdo it.

21) Now group your leaves for now and hide them.

II) The trunk

Before you begin, you will want to have the bark texture ready. Find a nice, large, evenly lit (as with the leaf image you started with) image of the bark, and open it up in Photoshop. Crop it square, and apply the "Offset" filter to it so that you can make it tileable:

Rubber stamp and cut/paste/feather until the seams are no longer visible. Now hit "Offset" again and you should see no seams at all. This means you did it right, and that the image is completely tileable.

Here is mine:

Now, onto the trunk.

1) The first step is to go into Top View and get you line tool out, set to Bezier. Draw out a simple cross section of a trunk with a couple of upper branches like so:

2) Select the center fine, your trunk, and expand the Rendering dialog in the Modifier column. Check the "Renderable," and "Display Render Mesh" boxes, and set the thickness to an appropriate value so the trunk looks right for your particular tree. For the main trunk you will want to set a slightly higher value for the "Sides" and, under interpolation, "Steps" (keep Optimize checked")

For the base trunk you want 8 sides at least, and the interpolation will decide how many subdivisions there are vertically, so this will depend on how much you want to curve the trunk.

For the upper branches, of which only little "hints" of will be seen through the leaves, you can often get away with 4 "Sides" and 3 or 4 "Steps"

3) Select these 3 renderable lines and "Convert to Editable Poly". Now, you can attach them to each other so you have one object.

*If you try to attach them before converting to Editable Poly, they will all assume the same "Rendering" and "Interpolation" settings as the first one selected - no good since we want the branches smaller and simpler than the trunk.

4) Now rotate it upright 90 degrees, and clone it. Rotate the clone 90 degrees the other direction, and delete the second trunk, leaving the new set of branches. Line them up with the original trunk:

5) Trim off some of the segments so that the tree doesn't look so uniform, and remove all the the endcaps of the tubes (they will not be visible from the ground and it will save you a lot of polys)

You may need to go into vertex mode and do some minor tweaks, such as making sure that your branches are sunk properly into the main shaft of the trunk. Also, make sure smoothing groups are used on the trunk and branches.

Another cool thing to do at this stage is go into Line mode and grab a couple of the lines running up the trunk from the base and push them in towards the heartwood (center) of the tree. This gives that look a tree gets when it is damaged at a young age, or has to grow around something. Shift some of the vertex loops so that the trunk isn't just a straight up-and-down cylinder.

Fully trimmed:

6) Under the Modifiers tab, select "Unwrap UVW". Hit the "Edit..." button, and under Mapping, select "Flatten Mapping..." The default 45 degree setting should be fine. Apply the bark texture to the model.

7) Rotate the UVs and flip any that need to be flipped so that the top parts are at the top and the bottom parts are at the bottom. This should be obvious because the bottom part should be wider. Then scale them large enough until the bark on your tree in the viewport look appropriate. See below:

8) Now unhide the leaves and stick the trunk under them.

Attach all of the planes together into one big Editable Poly. Select all of the polygons and set them to Material ID #1. Select all of the polygons in the trunks/branches model and set the Material ID to #2. Now attach the trunk/branches model to the canopy/leaves model and choose "Do Not Modify Material IDs"

Finally, create a Multi/Sub-Object texture with the leaves and the bark as #1 and #2, and apply it to your model.

In 3ds max:

In Unreal:

That's it. I am including a link to the Randerizer script for anyone who wants it, and a special thanks to Matt Rapelje for making such a useful script.

As always, I hope this was helpful in your 3D modeling endeavors.

-Andy Zibits :)


In order to post any comments, you must be logged in!
Newest users comments View All 12 Comments
Posted by sanjaykarthikeyan on Jul 09, 2011 at 09:56 PM
tutorial was nice!
I am new to 3ds max, I am a maya user, If possible please make one basic tutorial for 3ds max.
Posted by Lylbit on May 02, 2011 at 12:24 AM
Randerizer isn't working for me. Any ideas why?

3ds Max 2011
Win 7 64 bit
Posted by Edwin on Dec 05, 2010 at 09:02 AM
How to get randomizer?
Posted by Thealiyev on May 25, 2010 at 09:23 AM
no bad....
Posted by Legend-one-one-seven on Apr 25, 2010 at 09:06 PM
You can edit the polys to bend down more of a triangular shap, so that it does show more reflective surface from the side and the bottom perspective. I do like the idea of how you design the concept for the game developments.