NewGrowth Interactive Trees

by Michel's add-ons & more in Scripts and Addons

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.

(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.


Changelog


Version

Date

Comments

201812201055

21 December 2018

Initial BlenderMarket release


From interactive tree drawing, to configurable mesh to end result in a few simple steps.


Installation

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.

Workflow

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

https://www.youtube.com/watch?v=BGHNn0DWuvE&feature=youtu.be

Interactive drawing

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).

Pruning

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.


Draw

Alt left mouse


Snap cursor to branch

left mouse


Flow radius

Ctrl numpad + -


Flow rate

Alt numpad + -


Flow hardness

Shift numpad + -


Prune

K


New root

R


Undo

Ctrl-Z


Toggle marker visibility

Alt-M

markers are a synonym for lightpoints

Toggle leaf visibility

Alt-L


Toggle on-screen help

Alt-H




Tree options

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

Radius

Controls the overall thickness of the tree trunk and branches.

Taper

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.

Skinning method

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.

Tightness

Controls how sharp the joint between a branch and a twig looks.

Leaves

Lets you select a particle system to be used for the leaves. 

Bark

Lets you select a material to be used on the trunk.

Autoprune options

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:

Larger radius

Only twigs connected to branches with at least this radius will be considered

Smaller radius

Only twigs with a radius less than this will be considered

Ratio

Twigs where the ratio of their radius to the radius of a bigger branch is smaller will be removed

Smooth

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.

Wiggle

Adds a tiny amount of randomness to branch segments to prevent unnaturally looking long straight sections.

Leaf density

The number of branch segments counted from the tip which will have leaves attached. Set to 1, only the very tips will carry leaves.


Mesh details

Once you have clicked Update tree the final result consists of 3 mesh objects:

Tree skeleton

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.

Tree skin

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.

Leaves emitter

This mesh is the basis for a leaf particle system. It has no additional layers.


Add-on preferences

Help color

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. 


When I press left alt and left mouse, nothing is drawn. Why?

You might have enabled emulate 3 button mouse in File → User preferences → Input. This causes left alt + left mouse to be interpreted as a middle mouse button action. Either disable this option or you might try the right alt button (although that might not work on all keyboard layouts / operating systems)

How do I use my own textures for the leaves or the bark?

For leaves the simplest way is to create your leaves in a particle system on an object in a separate .blend file and link or append this particle system to the file that contains your tree. After this the new particle system should be available in the particle settings drop down in the particles tab of the leaves object (this is an object parent to the tree skeleton and separate from the trunk object as well). When you click Update tree the appropriate number of leaves will be set.

Any material can be applied to the mesh that represents the bark. The mesh is uv-unwrapped, see technical details section on which uv-maps and vertex color layers are available.

Is NewGrowth compatible with SpaceTree Pro?

No. Although it shares the same algorithm to generate the branches the resulting tree object is different.

What hardware is recommended?

Interactively drawing lots of branches and leaves requires a decent video card. Performance tends to be less dependent on the CPU. NewGrowth should work with any video card that is supported by Blender but to get a decent performance a GTX 970 or better is recommended.

Purchase this item to leave a review!