Products  Features  Sales  What's New  Download  Support  Tutorials  Newsletter  DOTM  About - Home

The Foliage System

How to paint with the rules based particle system

tutorials on our youtube channel Tweet woof howl waffle!
PD Pro 8 Broomhead | more of what's new | Showcase | PD Artist |PD Howler | v7 | v6      

Foliage:      Introduction   -    Images    -    Features    -    Videos   -   User Notes 

Introducing Optipustics Gen 2

a growing generation of 3D Particle brushes

We've had particle brushes for a long time, going back to even before version 1.6. They're also known as Optipustics, or Optipuss. See them back here with the Age Decrement feature, added in v4.1. Waving them in the wind became a breeze. Plus, we occasionally released free particle presets, from us and other users. Painting with particle brushes is the key focus in PD Particles. And even the free version has already amazing Particle brushes.


Now we've added yet another type of particle brush. In addition to the Particles panel, the Bristles brushes, and the recently added Orbicles (3D orbiting particle brushes) as introduced in v7, Project Dogwaffle Professional v8 (Broomhead) now also has a 4th category of particle brushes: Foliage.

fol;iage system interface

<<< Click image to enlarge

Way back in the 90's, we made something of a splash with Optipustics, our particle drawing tool. While the name covers a variety of technologies including animatable particles and bristle brushes, it is best known for its particle foliage drawing tool.

The original particle drawing is still there. Optipustics 2 is an addiction to, not replacement for particle foliage, and exits in a new foliage tab on the particle panel.

The new Foliage tab is a dedicated foliage drawing tool, while the original could double as a particle system for animation. Here are a few of the design concepts that were integrated into the new tool:

The new system is based on a library of rules, to allow for each branch to have its own rule including dynamics such as velocity and gravity. This makes branching structures much more flexible.

It is a fully 3D gag, internally speaking. Transformations such as rotation and scaling should thus be possible in the future, along with more complex dynamics. Stay tuned for updates.

The new system is able to generate depth and alpha channels. Other channels may be possible in the future.

There is a real-time preview.  Final rendering has been moved to a post process to allow for more complex rendering gags to be accomplished than were previously possible, or to account for information that isn't initially known at draw-time, such as final volume.


Rules library: 

Here's a quick look at the secondary interface, i.e. the Foliage Rules Library:

In the top left you see the current Rule, namely rule number 2. Essentially, the system offers a list of several rules. The more rules you define, the more sophisticated the foliage system can become. But it also depends a lot on what exactly each of the rules say. You can specify the color, whether the branch will split and how, at what speed it grows and which way, and which way gravity changes it. It's not just up-down or left-right anymore, such as it is in the original particle brush system. This is now a fully 3D environment, so you see such things like the velocity, damping, or the gravity vectors defined as full 3D values, x, y AND z!

Like in the original particle brush system, you can still also indicate how strongly to follow the mouse, which is great for manually 'painting' the wind-blown reshaping of bushes and trees (such as for Torrey pines or tall tufts of weeds).

Don't worry though, if this seems a little bit overwhelmingly too complex, we have included some nice Presets to get you started.


The Rules library is for those whopresets of foliage want to explore and take an adventure into the math side of the foliage system, and experiment with new rules of their own and thus create definitions for new foliage types.

For all artists who just want to paint, we have included a collection of presets. You can simply click "Load" at the bottom of the panel, and find a great preset to start from.

Then you can also further fine-tune and modify the parameters in the rules, or add more rules, and save your changes as a new preset.

<<< click the image to enlarge


Animating a growth via the stroke player's “Hancock” mode is now a reality as you can see in the first video at the top (scrub towards the end of the video). We'll have examples here shortly.

Here are just a few pictures to give you an idea. Some contain combinations of Particle and Foliage system. Scroll further below for sample videos as well.


Basic Tree foliage:

Basic Tree using foliage system

Comic book trees  

comic book trees

Dry stuff:

dry stuff

Foliage painting, on basic netbook:

foliage painting on basic netbook

Features, Options & Parameters

The Time scale option enables size reduction of features towards the top and tips.

effect of time scale

Post-render pass (secondary rendering): here's a comparison of what you might get immediately at the end of a single(!) brush stroke, and shortly thereafter, when you wait for the final secondary render that ensues.

before final pass
after the final render pass

click images to enlarge either one of them


How to draw a tree in seconds, wish just one brush stroke

The Language of the Trees

User Notes

Most of the time we just recommend this: try it, find out, make mistakes. But sometimes, we need an explanation.

The Foliage system is a non-recursive particle system that uses a library of Newtonian rules. There. Not sure if that helped.

There can be just one rule or there can be more. Rules are there to tell the particles what they can do next: what color they can assume, where they move to, if they're on their own or affected by gravity or even follow your mouse motion, if they keep going or split, branch alternatingly, or die etc...

Note that the main panel has some significant parameters too, such as the Rule count. You may have defined a certain number of rules, but the global rule count value will limit how many are actually usable at the moment.

Also note that most parameters have a tool tip when you hover and rest over their input items.

----- Globals   (in the main panel):  -----

Max parameters:
the maximum number of particles to process at one time. Reduce this value if you're on a very old/slow system or gasping for RAM. Or just to test things a little faster as you play and explore, before going back to final settings.

Rule count:
the number of rules currently in effect. Even if you have more defined (there is room for more), this is how many it will attempt to use. When a particle branches, the next rule is installed.

Max lifespan: 
the maximum number of steps to be taken to process all particles.

Tint color:
click this box to select a color that will multiply (thereby creating a tint) to the RGB values of the particles. Unlike with the color cue option, the effect is the same regardless of whether you use the left or right mouse to draw. This is a great way to quickly assign a more lush and fresh look (greenish) or dry and old (reddish).

Fog color & Fog amount: 
You can use it to make plants come close to the selected color. The value slider below it sets the intensity of the fog. If you draw multiple plants, this trick can be used to convey 'distance perspective' that makes the objects fade to the far distant color such as blue haze, or perhaps to black at night. The farther away you want the tree to appear, the stronger the fog effect should be. It's also called a depth cueing trick.

sets the lightness of the overall plant. From 0 to 1, generally, but can also be greater than 1, in which case it'll be really bright.

Pen size:
this value is in pixels and affects the size of the particles that are rendered as they go on their journey.

Time scale:
you want this. Well, most of us do. Branches are getting smaller and thinner towards the end and near the top of trees, don't they? In the older particle brush system, there's an "age decrement" parameter (since v4.1). think of something like that.

Shading: This enabled a lighting effect, by darkening the particles that grow down. The idea is that the ones up above are exposed to more sunlight (and even just sky light), whereas the branches down below are in their shade.

Color cue:
instead of taking the color cue from the above-mentioned Fog and Tint color boxes, use the primary and secondary colors, i.e. colorize one or the other way depending on whether you use the left or mouse button to paint it.

Create alpha:
we can do more than set the color of all pixels where particles are rendered. We also set the selection mask, in the alpha channel. At the end of it all, you'll have a beautifully anti-aliased selection mask that contains the plant. Use control-B for example to pick it up as a custom brush (or use the option at the top of the Brush menu - use selected as brush). The sky's the limit, the alpha channel is the means to it.

Seed and Rnd:
things need to look somewhat randomized, and a random nuymber generate likes some seed value to start from. Click the button to get a new one, so the next plan will look even more different. You don't want that however if re-rendering (with Ctrl-A) and you want the exact same shape (just perhaps different colors). You also don't want that when doing a re-render in the stroke player for an animation to show up consistent with the way you saw it initially.

keep it enabled. You really will want that. It doesn't affect the seed when using the stroke player to re-render. But you'll be happy it does it for you when doing normal brush strokes. Then again, who knows?

Rules library: 
edit the rules library used to control the growth and evolution of the particles, and blame it on this little button when it's past 3 am and your significant other is asking why you're still at the computer. Be warned, this is a point of no return. 

----- Parameters in the Rules library panel:  -----

Emmit count
:  The number of particles that are emitted when the current rule (branch) is started.

Branch lifespan:  The number of steps that the current branch is processed.

Repeat rule:  The number of times the current rule is repeated for the current branch (starting at 0 repeats) before a new rule is started, or the branch ends.

Red/Green/Blue:  The color of the current branch (may be above 255)

Follow mouse:  Usually used for the first rule but may be used for others.  This causes the branch to gravitate toward the current mouse coordinates. Sometimes it can yield a "wind blown" appearance. Try drawing a half circle with or without a significant value in this parameter to see the difference.   Values are usually between 0 and 1, and something like 0.5 works well.  Very low values (0.001) can give a smoothing effect, while still roughly following the mouse motion.

Gravity x,y,z:  This is a negative vector that is added to the particle at each step. In other words, this is the incremental change. For example, a value of y=1 would add -1 to the velocity at each step. And yes, this is a fully 3D system.

Velocity x,y,z:  In contrast to "Vector x,y,z" mentioned below, this is a range setting for initial velocity.  The value may be any value in-between its positive and negative.  For example, a value of 1 for any of these parameters would cause a random value anywhere between -1 and 1 to be generated.  The initial velocity is then set to this value.

Vector x,y,z.  Adds this value to the initial velocity.  For example, use -1 for y to cause a branch to start growing upward.

Split type:  This is the type of branch to create when the particle lifespan has been reached, and it has completed any repetition of its rule. Basically answering the question: what now, what's next?   The type can be no-branch, branch, branch even/odd, split, and end. 
  • "No branch" causes nothing to happen. That's it, you're done.... "You" means the current rule.  It just continues on with the next rule, if there is one. 
  • "Branch" causes the next rule to start, and the current rule may continue at the same time if its "repeat rule" value is greater than 0. 
  • "Branch even/odd" alternates a positive and negative branch. 
  • "Split" causes the current particle to end (even if the branch is set to repeat) and starts the next rule. 
  • "End" means that this is the last rule to execute.  This also depends on the "Rule count" value on the main panel.

Damping x,y,z:  This value is usually between 0-1.  The velocity of the current particle is multiplied by this value before the next rule is started.  This can be used to reduce velocity as a new particle is emitted.

Oh yes and there may be a few more, in time.