As audiences
become more and more sophisticated about computer graphics, fractal noise
and procedural woodgrain textures can no longer guarantee gushing reviews.
Darkling Simulations’ Darktree 2 is the latest edition of the popular
tool for artists who want to develop complex, multilayered shaders that
transcend the commonplace of current CG. Darktree 2 offers users a broad
palette of procedural textures, many of which will already be familiar
to 3D artists. The program’s main virtue, however, is the ability to drive
the parameters of one procedure with the output of another. By feeding
the results of these chains of procedures to the texture channels and
shading parameters of an object, Darktree 2 can create sophisticated and
sometimes startling effects ranging from highly realistic natural surfaces
to animated pyrotechnics to flatshaded cartoon renderings.
Darkling refers to networks of shading procedures as Darktrees. Darktrees
can be exported as plugin materials, which Darkling calls Simbionts, and
used in any of several 3D packages. Simbionts act as rendering proxies,
representing Darktree shading networks to the host programs as custom
materials. Simbiont plugins are available for 3DS Max (3.x and 4.x), Lightwave
(6.5 and 7), Animation Master 8.5, and Truespace 5. Darktrees can also
be exported as bitmaps or 2D animations in a wide variety of formats and
at any arbitrary resolution.
Making Connections
From a computational point of view, Darktrees are linked series of texturing
algorithms: in essence, programs, similar to Renderman shaders. Indeed,
programmers may find it useful to understand Darktree 2 as a graphical
frontend to a streamlined Rendermanlike language. Fortunately for artists,
however, the experience of working with Darktree feels nothing like creating
code. Darktrees are represented as flowchartlike diagrams of connections
between procedures, analogous to electrical schematics (Figure 1). The
nodes in the diagram are procedural components that generate, manipulate,
or composite texture and parameter data. The wires transmit colors and
parameter values from one procedural to another. Although it takes a good
deal of skill to create truly useful shaders, the mechanical aspects of
laying out Darktrees are very simple and will be grasped quickly by anyone
capable of mastering Visio or CorelDraw.
![]() |
![]() |
![]() |
||
![]() |
||||
![]() |
Figure 1: Darktree users build procedural shaders with an easy-to-use flowchart-like interface. |
Darktree
users work on a grid of regularly spaced sockets. A single root socket
at the left side of the grid contains a Darktree shader, a Swiss army
knife superset of the Blinn, anisotropic, and clearcoat shaders found
in most 3D packages. To build the Darktree network, users drag and drop
icons representing various procedures from a component library onto the
sockets in the grid. The node icons contain thumbnail previews, making
it easy to see what each node contributes to the tree. Once components
are placed on the grid, users can connect inputs and outputs easily by
pointing and clicking.
Darktree’s GUI is sufficient for the task of creating shaders, though
in some ways it lacks refinement. The only important drawback to the interface
is how the forced datatyping and the rigidity of the layout can make it
awkward to share components between two branches of a Darktree. Since
so much of the power of the shading network paradigm lies in its ability
to coordinate effects in multiple channels (for example, aligning features
in a bump map with those in a color map), anything that inhibits sharing
is more than an annoyance. On the balance, however, the interface does
a good job of managing the complex task of shader building.
I’ve Got Algorithm
Darktree 2 offers an impressive library of more than 100 components for
building shaders. The fact that the package includes 10 different kinds
of 3D noise textures gives some indication of the depth of the toolset.
This large library of procedures is an extremely potent resource for building
shaders. The program also includes a large library of complete Darktrees,
allowing new users to learn by example, but the absence of a master reference
for the components is a disappointment.
The core of the component library is a collection of more than 50 procedural texturing components. Standbys such as fractals, clouds, and grain are all present, as are a number of new procedurals many artists won’t have seen before. Unique standouts include Tech, a complex of overlaid trace lines reminiscent of a circuit board; Manhattan, an array of randomized rectangles suitable for metal plating; Venation, which produces a polygonally fractured surface like fractured glass; and Scratches, a 3D array of randomly oriented strokes that can be curved, tapered, and randomly colored. Artists interested in the far reaches of procedural shader creation will also find a wealth of components for recombining and manipulating textures. Darktree offers a large selection of compositing operators, analogous to Photoshop’s level modes. A sizeable library of mathematical functions allows sophisticated control for blending textures and parameter tuning.
Modifier nodes can reprocess base texture components for effects ranging from spatial distortion to color shifting and even tile creation. Finally, a number of utility components provide access to external data: anything from imported bitmaps to audio files and animation timers can be used to drive parameters within a Darktree.
Twiddling the Knobs
Every component in a Darktree is highly customizable. The interface for
editing individual components is simplistic, but functional. Doubleclicking
on a component icon opens a modal editing dialog. Feedback is fairly fast
when adjusting component parameters, even on relatively anemic machines.
However, working with only the single, smallish view swatch in the parameter
window can feel like working through a peephole. 3DS Max–style spinners
and text boxes handle numerical parameters, and a clever clickdrag swatch
control lets users edit HSV values gesturally without opening a color
picker. Parameters can also be controlled by global variables called Tweaks.
These Tweaks are exported when Darktrees are used as plugin shaders and
can be changed or even animated in the host program’s material editor.
Unfortunately, tweaked parameters in a given component can’t be edited
from the edit window — Tweaks are treated as properties of the Darktree
itself, so altering them requires a trip to the top level of the Darktree.
Who, How,
and Why
Darktree 2 is a powerful tool. Artists willing to make a reasonable investment
of time in experimentation will be well rewarded. For game developers,
the utility of the program depends largely on the task at hand. Cinema
teams and sprite artists should definitely consider Darktree 2 unless
they already use Maya or Softimage XSI, which include similar functionality
out of the box. Modelers creating characters for realtime games, however,
are unlikely to find it a compelling purchase: the Darktree shaders are
irrelevant to realtime games and without a method of converting solid
procedural textures into UVWmapped textures, the Darktrees are only an
elaborate method for producing fill patterns. Level designers who don’t
work with UV surfaces, on the other hand, should get a lot of value out
of rendered Darktree bitmaps. Overall, Darktree is a tool with great potential
and is definitely worth investigating.
![]() |
|
![]() |
||
![]() |
||||
![]() |