User Tools

Site Tools

Modeling with Curves


To truly master the art of modeling trees with the SpeedTree Modeler, one must be able to use curves effectively. For instance, to vary property values for nodes based on where they occur along the length of their shared parents, edit the green “parent” curve for that property on the child generator. Within a single generator you can make the base branches longer than the branches near the tip of the parent by using this curve.

With the cyan “profile” curve you can edit how properties are applied along each individual node made by the generator – for example, a profile curve can make the radius decrease along the length of each individual branch to ensure that they all terminate in a point.

These two curve types are available for most properties, but there are a few other types as well. Read on to learn how to master curves… and in the process master SpeedTree modeling in general.

Editing Curves

To edit a curve, click on the curve thumbnail to the right of any property in the 'Property Editor'. The curve will appear in the 'Curve Editor'. See the full page on the curve editor for specifics on how to shape the curve.

Profile Curves

Profile curves are colored cyan and affect each individual node in a generator the same way. This makes them work well with parent curves. Parent curves govern the group, and profile curves are applied the same to each member of that group.

The easiest way to think about this is with the 'Radius' branch property. If the radius of each branch remained constant, they wouldn't look like natural branches, but instead like logs. In real life, branches on a tree taper from base to tip. The way that that branches are told how to taper in the SpeedTree Modeler is with a profile curve. The profile curve in this case is lathed around the center spine with the left side of the curve corresponding to the branch base and the right side of the curve corresponding to the branch tip, like in the example to the right.

The effect of editing the profile curve for the “radius”. Profile curves work down the length of each node. Each node with be affected equally.

Parent Curves

'Parent curves' are the green curves associated with many of the properties. They distribute values based on how far along their parent each node occurs. This lets the user make parts of the tree act or look differently based on where they are growing. This is a simple, yet very powerful mechanism for modeling realistic foliage behavior, since on real trees no two branches are ever exactly alike.

Green curves are special in that they have two extra settings to fine tune their results: “Parent level” and “Cascade”. These settings are both located on the Curve Editor toolbar. While grasping the concepts or importance of “Parent level” and “Cascade” might be hard initially, once they are figured out the process of tree modeling will seem much more intuitive overall.

The effect of editing the parent curve for “length”. Branches near the bottom of the tree are longer than those near the top.

Parent Level

Suppose you had a tree with flowers with more than one branch level between the trunk and the flowers. What if you wanted the flowers at the top of the tree to be larger than the flowers at the bottom of the tree? The normal parent curve behavior wouldn't be enough – by default, parent curves are evaluated on the direct parent of each flower, which might be level 2 branches, instead of the trunk. You'll need to evaluate the parent curve based on a different branch level – the “parent level” – to make the flowers larger at the top of the entire tree.

Setting the parent level
To set the parent level, change the first combobox value on the 'Curve Editor' to a value greater than “1” (“1” translates to the direct parent of each node). Setting the parent level to “2” will evaluate the parent curve based on the position of each node's parent's parent, and so on. If your tree has a trunk, level 1, and level 2 branches, you'll have to set the parent level to “3” for anything growing off of the level 2 branches if you want them to be evaluated based on the height of the total tree, since the trunk best represents the tree height.

Parent level indicator
If a 'parent curve' is set to a parent level greater than 1, an indicator is shown on the curve's thumbnail. It is represented by a small single digit overlaid on the bottom right corner of the curve's thumbnail. In the 'Curve Editor' itself, the parent curve is shown as the parent curve combobox value.

“Cascading” refers to how much the curve is re-evaluated for every branch level between the “parent level” and the node itself. If set to “0.0”, only the parent level is evaluated before a final value is computed. If the cascade value is greater than “0.0”, the curve will be re-evaluated (times the cascade value) iteratively for each subsequent branch level until the node is reached. If the value for cascade is greater than 0.0 but is less than 1.0, the effect will be diminished over each iteration. Similarly, if the value is greater than 1.0, each iteration will be evaluated at increased strength.

Negative cascade values
The value for “Cascade” can be set to a negative value. In this case, the curve is flipped horizontally for each iteration. So, a “linear decay” curve preset would become a “linear growth” curve on the second evaluation, then back to a “linear decay” curve on the third evaluation and so on.

Distribution Curves

For some properties, instead of a parent curve, there may be an orange “distribution” curve. Like parent curves, 'distribution curves' govern over a group of nodes all at once. 'Distribution curves' differ in that they control the spread of a fixed number of nodes.

If you look to the example to the right, you can see the affect of a 'distribution curve'. The curve on the bottom has been set so that the fewest level 1 branches will occur around the middle of the tree, packing most of them near the base and tip of the trunk instead of evenly, as is the case with the top curve.

LOD Curves

Dark blue curves are LOD (level of detail) curves, and only occur in LOD property groups. 'LOD curves' govern the progression of the LOD sequence for each LOD property. In most cases, a linear progression is best suited, so that each LOD step simplifies the tree about the same amount. At times it is beneficial to force a particular LOD state either earlier or later in the sequence than would occur linearly. This is achieved via 'LOD curves'.

With 'LOD curves', the left side of the curve always corresponds to the highest LOD state (1.0), and the right side always corresponds to the lowest LOD state (0.0). This lets you have some play with the results of LOD. If your LOD step is too aggressive, move the right endpoint up a little bit to soften the effect at lower LOD's.

Editing the highest LOD state with LOD curves

Inversely, the left endpoint can be adjusted to alter the highest LOD state. Use this method with care, however, since these kind of edits can easily convolute a tree setup for users who are not familiar with 'LOD curves'.

With that in mind, editing the highest LOD state does hold a great deal of power for advanced users. For instance, to reduce polygon counts, slightly lower the left endpoint of the Branch volume threshold property on the highest branch level. A few of the smallest branches will be removed, but any children (such as leaves) will remain as part of the tree, since the “phantom” branches they were growing from are only hidden via LOD, instead of being hard deleted.

For more info on LOD, please refer to the Level of Detail page in this help manual.

Pruning Curves

The final type of curve found in the SpeedTree Modeler is a purple “pruning” curve. There is exactly one 'pruning curve' per generator. The 'pruning curve' will remove nodes wholesale based on their positions throughout the tree.

Parent Level and Cascade

Much like 'parent curves', 'pruning curves' can utilize the parent level and cascade curve properties to achieve more finely tuned results.