This image was generated using two programs of mine. The first was my tree
generator program, and the second was my new raytracing engine. Neither is
yet complete - The tree generator requires some support for gravitational
constraints and moment sums, and the raytracer needs support for diffuse
interobject lighting and soft shadows.
The tree generator program uses a parameterised stochastic model to generate
the branches and leaf positions/orientations. Once the model has been
generated, the program outputs a script file of primitives (cylinders and
spheres for the branches, and references to a leaf subscene file for the
leaves). This is then read by the raytracer.
The raytracer sorts the scene (in this case about 100,000 primitives) into a
binary hierarchy of bounding spheres, using a minimum sum of surface areas
heuristic to evaluate 10 randomly chosen splitter planes for each split in
the hierarchy. The program the uses a depth rejection technique, where
spheres further away than the closest intersection found so far are rejected
without further evaluation. The image in question is a detail taken from a
2560x1920 top-down render of a tree model, with 9 directional lights, and no
ambient component at all. None of the primitives are textured, a fact which,
combined with the multiple lighting directions, gives the image a somewhat
The only part of the scene that was actually made by hand was the leaf model
(since I don't have a 3D editing package, I just typed the coordinates for
my design into a script file by hand).
For other examples of my work, see my website: