low poly trees

How to model a low poly stylised pine tree in Blender

Aug 4, 2020

Tutorials GameDev 3D Graphics

More in this series

Pine trees are perhaps the most widely used tree in role-playing games, they are also one of the easiest tree shapes to model, particularly the Christmas tree-like pine commonly found in alpine scenes. So this is where we will begin.

Open Blender and select the default cube. We are going to model a very low poly version first, this allows us to form the basic shape of the tree before going back and adding detail. We can also use this low poly version later for one of our LOD levels. Press TAB to enter edit mode then select the bottom face and delete by pressing the X keyand selecting DELETE FACE.

With ALT+Z you can enter semi x-ray mode making it easier to see vertices on the other side of the cube. Select the top four vertices and press E then Z to extrude along the z-axis, then press the S key and scale the face down slightly. Continue doing this two or three times to form the basic trunk of your tree. You can select the base of the tree with ALT+RIGHT-CLICK

And press the S key to scale it up slightly. Continue adjusting until you are happy with the basic shape.

Next, with the tree trunk selected and in object mode create a subdivision surface modifier. The modifier menu is found under the spanner icon in the properties panel. Feel free to use as many levels of subdivision as you want, however, one level is all you really need for a low poly pine tree. Make sure you are in object mode then click apply in the modifier tab.

subdivision surface modifier menu

Press TAB to change back to object mode. RIGHT-CLICK and select shade smooth from the menu. At this point, we want to preserve this low poly version so press SHIFT+D to duplicate the model then press H to hide it. We will be coming back to this low poly version later.

Extrude and subdivide the trunk

Adding a bark texture

Find a seamless bark texture online or create one yourself from photographs using Krita or Gimp. The process of creating textures will be covered in another tutorial.

Bark textures

Head over to the shading tab to create a material for the trunk. In the material properties panel, click new then make sure use nodes is selected. Click the circle icon next to base colour and chose image texture. You can load your image from within the node in the node editor.

For simplicity, I will not be doing a complex UV layout. After switching to the UV editor tab select the tree trunk hit TAB to enter edit mode, press the U key to open the unwrap context menu and select cylinder projection. Scale the UV’s to your liking.

Creating branches and leaves

Find or create a branch texture similar to the one below, be sure to use an image that has a transparent background.

branch texture

Press SHIFT+A and create a plane. Move it away from your trunk, then enter edit mode with the TAB key and scale it up by pressing S then X to constrain to the x-axis. You want a roughly rectangular shape for your branch. In the shading tab, create a new material for the branch. To make the gaps between leaves transparent, connect the alpha channel from the image node to the alpha channel on the PrincipalBSDF node. Then in the Material properties panel under settings, select alpha clip.

Blender node set up for transparent branches

Next, create a loop cut to divide the branch down the centre. This can be achieved by pressing SHIFT+SPACE and selecting loop cut from the context menu, or by using the shortcut CTRL+R .With the loop cut in place, click the outer four corners of the mesh and move them down on the z-axis to create a tent-like shape.

I am once again going to save this as a very low poly version of the branch by pressing SHIFT+D then hiding it with the H key.

Back to the detail version of our branch create three more loop cuts on the opposite axis, dividing the length of the branch into quarters. Move these new vertices on the z-axis to create a curve in the branch.

Curved branch mesh with texture

Now attach the branch to the trunk of your tree positioning it as desired. Duplicate the branch with SHIFT+D rotate it 180 degrees and attach it to the opposite side of the trunk. Select both these branches and duplicate them, then rotate 90 degrees. This will form the bottom layer of your branches. After this duplicate all four branches and move them up the trunk, resize them down a little then continue working all the way up the tree. Try and add a little variation to the rotation, spacing and size of the branches to add character to the tree.

Adding branches to the trunk

Once done select all the branches and combine them into a single object, RIGHT-CLICK and select join. If an error occurs "active object is not a selected mesh" you need to select one of the branches as the active mesh with SHIFT+LEFT-CLICK, The active branch will display in a lighter shade of yellow as below.

Combine the branch mesh into a single object

Once the mesh is combined, RIGHT-CLICK and select snap 3D cursor to world origin.Then RIGHT-CLICK again and select set origin to 3D cursor.This should ensure both the tree trunk object and branch object are correctly aligned to each other when importing into a game engine.

And here we are with our finished pine tree!

Pine tree modeled in Blender

A lower poly version and LOD

So what was with that ugly blocky version of the trunk and branch that we duplicated and hid? Well in video games drawing lots of trees to the screen is computationally expensive for the graphics card. Our previous model clocks in at 744 triangles which while very low poly for modern graphics cards, is still unnecessary for distant trees. When a tree is in the distance we can switch it out for a lower poly version. After all, we don’t need to have as much detail as the player won’t see it anyway. This technique is known as LOD (Level Of Detail) and is used extensively in 3D games.

Let’s follow a similar process as above to create the low poly version using the two objects that we saved away earlier. For the branches add one additional loop cut to add a slight curve and more natural shape. For the trunk, the square shape is a little sharp so add a subdivision modifier as per the full poly version. This makes the trunk nice and cylindrical but creates too many edge loops up the trunk. To fix this select two vertices that are vertically adjacent to each other, RIGHT-CLICK and select merge > merge at centre.

This version of our tree should be around half the amount of triangles as the full polly version.

The lowest poly version an imposter

We can go even one step further for trees that are really far away. To do this simply create a render of your detailed tree model, save the image, and use it as a texture on a rectangular plane. This technique is known as an “imposter”. In your game, you can set this ‘flat’ version of the tree to always face the player and they should hardly be able to tell the difference.

Position your camera and pressF12to render your scene. You may wish to arrange some lights to ensure the imposter tree is evenly lit in a similar fashion to the fully rendered version. Ensure only your detailed tree is visible to the renderer by clicking the filter button at the top of the outliner panel. In the render properties panel under film check the transparent box. This will cause your rendered image to save the alpha channel which is needed to create your imposter tree.

Rendering a transparent background in Blender

In your favourite image editing program open the saved render and resize it to 256x256 pixels. The reason I am making such a low res version is that this tree will only be shown in the far distance and will never take up more than 256 pixels on the screen. Back in Blender create a plane and scale it to match your tree model. Then create a new material and apply the rendered tree image as a texture. This version of our tree clocks in at a whopping 2 triangles!

Our final result

And here we have our final result of a simple pine tree with three stages of LOD. In future parts of this series, we will create some more variations of the pine tree as well as more complex shaped trees. We will also learn how to create textures for our trees in GIMP and import the model into the Godot game engine for use in our game projects.

Pine tree with 3 levels of LOD in Blender

More in this series

Latest Games

Sentinals of Cyrux
Sentinals of Cyrux

A short rogulelike game

Play Now

Hive Mind
Hive Mind

A dystopian stealth game

Play Now

Minotaur Madness
Minotaur Madness

Medieval wave shooter

Play Now

Wizards Treasure
Wizards Treasure

A short rogulelike game

Play Now

The Flight of Ajax

Cyberpunk Stealth Mahem

Sign up to be a Beta tester