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