(this manual is also included as a PDF file)
NewGrowth user manual
NewGrowth is a Blender add-on that lets you draw trees interactively. Using brush strokes you can direct the growth of twigs and let them grow into branches. You can prune existing branches as well. NewGrowth gives you full control to create unique trees with real character.
Once a tree is created many aspects of the generated mesh and leaf particle system are parameterized, like the overall thickness of the trunk or the amount of tiny twigs that are pruned, giving you control over your creation even after you have saved the result.
NewGrowth is designed for intuitive drawing and comes with on-screen help as well as a comprehensive manual.
21 December 2018
Initial BlenderMarket release
From interactive tree drawing, to configurable mesh to end result in a few simple steps.
First time installation
Installing NewGrowth for the first time is simple:
Unpack the .zip file
you probably already have done that as it contains this document (NewGrowthUsermanual.pdf) and the add-on itself (another .zip file, newgrowth.zip)
Select File → User Preferences ... → Add-ons from the menu
Click ‘Install from file …’ (at the bottom of the screen) and select the file newgrowth.zip
Click ‘Install from file ...’ (at the top right of the screen)
Check the enable check box to the left of the add-on you just installed
The add-on will add an Add → Add Mesh → NewGrowth entry to the Add menu in the 3D-view.
Several NewGrowth management panels will be available in the ‘NewGrowth’ tab in the tools region of the 3D-view (if the tools are not visible press ctrl-T).
Installing a newer version of NewGrowth
If you want to replace a previous version of NewGrowth you have to remove the old version first. To do this, go to File → User preferences … → Add-ons and either search for NewGrowth or go to the ‘Add mesh’ category where it will be located. Click on the add-on and then on the ‘Remove’ button. After removing the old version follow the instructions above to install the new version.
When creating a tree, the workflow consists of two steps: drawing a tree interactively and then finalizing the result. In this short video this is shown step by step for a simple tree
A new tree can be drawn by selecting Add → Add Mesh → NewGrowth from the menu in the 3d-view. This will position the root of the tree at the location of the 3d cursor.
Drawing the tree consist of painting virtual points of light to which the tree will grow its branches and leaves. The points of light are positioned randomly in a small radius around the cursor when you press the left mouse button while holding the Alt-key.
When the Alt-key is released you can change the view in the usual manner with the middle mouse key and others.
When you are satisfied with the result you can press Enter to produce the final tree. You also press Esc or click the right mouse button to discard the tree.
Positioning the cursor
New light points are painted at the cursor in a plane perpendicular to the view. This plane passes through the 3d cursor. This setup closely resembles the way the grease pencil works. This means that if you paint new light points the growing branches are more or less aligned with this plane. If you rotate the view the plane rotates with it and this will mean that subsequent strokes might result in branches along a plane too far from or too close to the camera.
Now if you want to grow multiple branches from the same point you can position the 3d cursor anywhere on an existing branch by simply left clicking on a branch to snap the 3d cursor. Rotating the camera and painting new light points will then cause new branches to form perpendicular to the camera, a setup that is especially convenient if you lock the view to the 3d cursor (an option always available in Blender’s view options, ctrl-N).
Many trees in real life have a characteristic silhouet because of pruning, either by natural causes like storms or by human intervention. In NewGrowth you can prune a branch by left mouse clicking the point where you want to cut and then removing the branch by pressing K.
Pruning will remove a branch but not affect the thickness of existing branches or the trunk, it acts like you have sawn off a piece. If you want to remove a branch you just added but don’t like, you can press Ctrl-Z to undo your action.
Adding a new root or trunk
When you start drawing a tree interactively, the root of the tree will be positioned at the 3d cursor. You are not limited to a single root however: pressing R will add a new root point at the position of the 3d cursor which makes it easy to create multi-trunk trees or bushes.
Controlling the brush
The way light points are positioned by the brush greatly influences the shape of branches and the overall look of a tree: putting down lots of light points with a wide brush while moving slowly will give you a bushy tree with lots of small branches and many leaves, while a smaller brush with a slower flow rate may result in straighter branches.
While drawing, the shape of brush can be controlled by the following keyboard shortcuts:
Ctrl numpad + - will change the radius or size of your brush
Alt numpad + - will affect the flow rate, i.e. how quickly light points are produced while drawing
Shift numpad + - affects the hardness of the brush
All effects are visualized in the shape and opacity of the brush.
Tip: start with a small brush
In a typical workflow you may want to start with the general shape of the tree by drawing its branch skeleton first. If you choose a wide brush however this will result in many small side twigs and lots of leaves. So in general it might be a good idea to keep the brush size fairly small with a moderate flow to start with to allow for relatively straight branch segments at first. In the final stages you can then widen the brush and maybe increase the flow rate to give bulk to the crown. Remember that after you have finalized your tree it will still be possible to change the particle system used for the leaves so you will have some control still, but you will no longer be able to change the structure of the branches.
Finalizing the result
When you are done drawing the tree and satisfied with the result you can convert your tree to an actual object in the scene by pressing Enter.
This will result in a mesh object that shows just the skeleton of the branches. Don’t worry though, there is a lot of information stored along with this skinny tree: it is in fact a parameterized object. This means it comes with a set of properties that you can keep on tweaking, like the diameter of the trunk, the particle system used for the leaves, etc. Even after you have saved your .blend file these properties can be changed.
The properties of the tree are available in the NewGrowth tab in the toolbar. (Press Ctrl-T if the toolbar isn’t visible).
If you change any of the properties you need to click Update tree to see the effect. This is because generating the mesh for the bark can take quite some time on a slower computer and rapidly changing values may slow down Blender to a halt.
The defaults are chosen to match the interactive look as well as possible. Most properties will not alter the general look and feel of the tree but changing the particle system or the material of the bark will of course have a large visible impact.
The final tree consists of three objects, all grouped together and parented to the tree skeleton: the tree mesh itself, a mesh representing the bark and a mesh of small prism-like objects that acts as the leaf emitter. The latter two will be regenerated/replaced every time you click Update tree. Note that the properties are associated with the tree skeleton mesh and will only be visible if you have selected this object.
Interactive options / keys
once in interactive mode you have several options to change the behavior of your brush and several other things as well. Most common options are shown in a handy on-screen help that can be hidden if you wish by pressing Alt H.
Alt left mouse
Snap cursor to branch
Ctrl numpad + -
Alt numpad + -
Shift numpad + -
Toggle marker visibility
markers are a synonym for lightpoints
Toggle leaf visibility
Toggle on-screen help
After a tree is drawn you can add a bark material and leaves to the generated skeleton. In fact you can keep on changing some parameters even after you have saved the tree. The following options are available in the NewgrowthTreePanel and will affect the look of your tree when you click Update Tree
Controls the overall thickness of the tree trunk and branches.
Controls how fast or slow the thickness of branches tapers towards the tips. The default value of 0.5 often a good starting point because it conforms to the so called pipe model.
The ball-pipe model generates a fast, relatively low poly trunk, while the fork-knee model gives a slightly higher poly count but superior mesh that is somewhat slower to generate for large trees. The fork-knee model also offers some additional options to control the overall appearance of branches and small twigs.
Controls how sharp the joint between a branch and a twig looks.
Lets you select a particle system to be used for the leaves.
Lets you select a material to be used on the trunk.
Auto Pruning removes very small twigs that are attached to very large branches. This can be used to get a clean lower trunk for example if it sprouts some small errant twigs. This behavior can be controlled with the following settings:
Only twigs connected to branches with at least this radius will be considered
Only twigs with a radius less than this will be considered
Twigs where the ratio of their radius to the radius of a bigger branch is smaller will be removed
Sets the number of smoothing iterations for generated branches. Any non-zero value will likely prevent straight angles in twigs; values higher than 1 do not in general give a notable different effect.
Adds a tiny amount of randomness to branch segments to prevent unnaturally looking long straight sections.
The number of branch segments counted from the tip which will have leaves attached. Set to 1, only the very tips will carry leaves.
Once you have clicked Update tree the final result consists of 3 mesh objects:
contains just vertices and an edge for each branch segment. It also contains two custom integer vertex layers: Radius and Parent, and a custom float vertex layer: Distance. They hold the total number of connected branch segments, the index of the parent vertex and the shortest distance to a root respectively. The information in these layers is used to produce the other two mesh objects and their uv-maps and can only be accessed programmatically.
Is generated from and parented to the tree skeleton. It is an all quad mesh that represents the bark of the tree. It is created with two uv-maps, UVBark and UVBark2 and a vertex color layer VColBark that you may use in materials.
UVBark contains the uv coordinates for each branch segment. All branch segments are cylinders that map to these same uv coordinates. This is useful when applying tiled bark materials.
UVBark2 also contains uv coordinates and the u coordinate is the same as in UVbark but the v coordinate is the distance to the root segment. This way you may for example overlay tiled textures with another texture that changes from root to branch tip or you can use this map directly with a tiling bark material.
The VColBark vertex color layer contains information about the mesh in different channels:
Red - holds the radius or thickness of a branch
Green - holds a unique value for regular branches, tips and pruned caps. This makes it possible to let a material switch between textures for example. Regular branch sections have a value 0.0, tips a value of 0.5 and the end of pruned branches a value of 1.0
Blue - reserved for future use.
This mesh is the basis for a leaf particle system. It has no additional layers.
The color and transparency of the on-screen help text that is available when drawing.
Persistent trunk material
When enabled (the default) click Update tree will try to copy a material that is already present on the trunk mesh. This is convenient because adding a material to a mesh object will associate that material to the mesh data by default and not to the object so it will be removed when the mesh data is replaced by another mesh.