Garth Thornton, creator of XenoDream |
XenoDream is
a 3-D graphics program that combines standard
shapes with 3-D IFS fractal methods for interactive
modeling. We asked its creator, Garth
Thornton, about fractals,
pretty pictures and programming in Delphi...
For more information or to buy XenoDream ($89),
visit the XenoDream Software site at:
http://www.xenodream.com/ |
bitwise: Your
degree is in physics. So what made you decide to devote
a good part of your life to developing software that
draws pretty pictures?
Garth: I had drifted
into computer programming as 'easy money', and got sidetracked
into the whole technical support and management rat race.
I'd never regarded it as a career and wanted to work
on creative projects. In the late '80s I had formed a
vision for fractal modelling of objects, mainly to provide
exotic elements in SF/fantasy or surrealist art. By the
late '90s,
desktop PCs were getting powerful enough for 3D implementation,
and the time was right to do it, so I started a partnership
with Virginia Sterling. At first we had in mind a simple
modelling tool with mesh export, but it didn't evolve
that way. We didn't expect it become such a long term
project, but we're still enjoying it.
DiamondTopaz - one example
of a jewel-like 3D graphic created and rendered in
XenoDream.
According to Garth, "Ttwo iterators provides
enough complexity here. Transparent rendering with
some reflection, refraction and iridescence added
in the lighting make for some eye candy."
Click HERE to view a larger version (in a popup window)
bitwise: As I understand it, it often
takes quite small and apparently simple mathematical
formulas to generate fractal graphics of mind-boggling
complexity. To a non-mathematician (like me) that seems
counter-intuitive. What's the big secret..?
Garth: The general idea is that you take a formula and
iterate it a number of times, each time taking the result
and applying the formula again. What happens is that
the final output is very sensitive to the input, resulting
in complex patterns. For most kinds of fractals you take
each point in a rectangular area, iterate it through
the chosen formula until it meets some condition, calculate
a color according to some rule and plot that color. That
kind of fractal (which includes the well known Mandelbrot
and Julia sets) tends to look 'mathy'.
For another kind of fractal we use a set of transformations
(a rule that maps one point to another. It could be a
formula or it could be a combination of scale, translation
and rotation.) With any two or more transformations,
we can take a single starting point and iterate it through
different sequences of transformations. Each combination
produces a different point, and all the combinations
together make a shape that depends only on the transformations.
It turns out that any shape can be made from the right
set of transformations. This kind of fractal is known
as an Iterated Function System (IFS), and can make familiar
shapes such as leaves, trees and clouds, with only a
few transformations each. You can also think of it as
a tree structure, with a branch for each transformation
at each level. For higher resolution pictures the tree
has more levels so the detail increases, though it tends
to be the same kind of detail all over.
bitwise: Many of the images generated by XenoDream seem
to resemble trees, plants sea-shells and other natural
'organic' things. Is this a trick of the software or
is there some deep connection between fractal mathematics
and the real world?
Garth: There are deep connections; for example some
natural processes are iterative (e.g. shell growth) and
therefore capable of the same kinds of patterns. We could
go into theories of dynamic systems, but that's a whole
other topic and not necessary to answer this question.
Forget fractal mathematics for a moment. XenoDream uses
building blocks that can be spheres, cubes or other shapes,
and has a menu of transformations for warping or chopping
or tiling them into quite a variety of shapes. It also
allows the building blocks to inherit and iterate the
shapes of other building blocks. So you can iterate a
sphere into a spiral of spheres. When two or more blocks
are iterating, the complexity goes up and starts to include
structures like the IFS fractals described above. The
combination covers a wide range of possibilities in 3D.
The catch is figuring out how to make a particular shape
with the available tools. In some cases the structures
you would use to create an object in XenoDream may have
parallels with a real object, while in others the similar
appearance may be superficial. The bottom line is that
we included the IFS style of replication in XenoDream
because it seemed a good choice for making alien trees
etc, and uses standard parameters suitable for mouse
control, not editing formulas. We're trying to make a
modeller, and any fractal exploring is a side benefit
for those interested.
Eucalyptus - this uses a
twisted cone for the trunk, iterated into branches,
with a colour change to green after several iterations
to make the leaves. Variations on this arrangement
can produce a wide variety of plants.
Click HERE to view a larger
version (in a popup window)
bitwise: Is fractal mathematics just 'pretty' or is
it useful too? Any examples of what it is used for now
or what it might be used for in future?
Garth: It does have some uses, such as high efficiency
radio antenna design using fractal structure, and image
compression. Dynamic systems theory is a broader field
with wide applicability in science for understanding
and modelling phenomena.
bitwise: What are the sorts of things
that people are using XenoDream for?
Garth: Some people create pictures entirely within XenoDream,
usually of a science fiction or surrealist theme, or
abstract. Some take layers or textures from XenoDream
into image editors to use in larger scenes. Some people
export objects as meshes or terrains to use in other
3D programs. Many find it quite addictive just for playing
and making pretty pictures. Some also use the depth filter
to apply 3D lighting to photos or other images. They
range from hobbyists to professional artists.
bitwise: What were the major influences on the development
of XenoDream?
Garth: The initial inspiration
to explore computer generated reality was seeing magazines
in the '80s showing the work of pioneers like Ken Musgrave
(who later worked on Bryce and then started Pandromeda
to produce Mojoworld) and Aristid Lindenmayer (who invented
L-systems for drawing plants.) In January 1988 Byte magazine
had an article by Michael Barnsley about using IFS fractals
to compress images, and I thought, why not go the other
way and use them to create natural and fantastic objects?
So I started experimenting with 2D structures on an Amiga
computer.
bitwise: Are there any other fractal graphics software
packages (not counting XenoDream!) that you particularly
like?
Garth: If I were interested
in editing formulae using complex numbers I would use UltraFractal;
it's very well done. L-systems are an interesting area
but editing strings of characters (such as y=+FX--FY+,
but imagine half a page of it!) is not at all appealing.
Organic or surreal? Only XenoDream knows...
bitwise: How would somebody go about learning the fundamental
techniques of fractal graphic programming? Are there
any books or web sites that you could recommend? Or do
you need to spend a lifetime studying the subject?
Garth: The basics to explore most kinds of fractal in
2D are quite easy. It's usually just an equation, or
several matrices, iterated in a loop, and plotted. It
gets more complicated going to 3D, and for every feature
or interactive control method that you add. The
Fractal Art FAQ is a good place to start.
bitwise: I note that you developed XenoDream using Delphi.
What are the strengths (and weaknesses) of Delphi for
this kind of application when compared with other languages
such as C++, for example?
Garth: Many languages are suitably expressive for the
math part, but relatively few implementations are suitable
for high performance and working with huge bitmaps or
meshes. Delphi and C++ would be the best choices as far
as I know. I had always preferred the style of Pascal
and Modula-2 to C/C++, so Delphi was a natural choice.
Some of the things I like about Delphi are the fast
development environment, drag and drop GUI design and
the Delphi implementation of objects and events. Some
things I have missed are inline functions, better floating
point compiler optimization, and refactoring support,
but they are starting to appear in Delphi 2005/2006.
bitwise: On your web site you say that you have no plans
for porting to other platforms. What about .NET? Have
you tried to port it to Delphi .NET? What are the kinds
of problems you would face in doing so?
Garth: No, I don't yet have a Delphi version that includes
.NET, but I just don't see a case for it. .NET is basically
a distributed environment to compete with Java. It makes
sense for plenty of web-centric or business applications,
but not for desktop applications that want all the RAM
and speed you have. Maybe that will change in a few years.
There are several reasons for deferring any plans for
porting. The architecture and specifications need to
evolve to have a stable basis for future development,
and to make porting potentially easier. It also takes
up resources that I would much prefer to focus on advancing
the features and GUI.
This is an example of a picture made with the latest beta
version (1.6) of XenoDream.
Click HERE to view a larger
version (in a popup window)
bitwise: Finally, what can we expect to see in future
releases of XenoDream?
Garth: XenoDream 1.6 is nearly finished and will be
a free update from earlier versions. It has lots of new
metamorphs, including procedural noises for rock and
terrain shapes, and rock and wood textures. There is
a texture editor for background pictures that makes some
impressive skies, as well as sea and rocks. There are
UI improvements including a customizable preview grid
and a solo button to show only the active object. Mesh
export has improved filtering and new smoothing options.
I don't want to say much about v2 except that it will
involve a lot of redesign to a new specification.
What is XenoDream...?
XenoDream (www.xenodream.com)
is a tool for creating 3D fractal objects which
can be rendered and saved as 2D graphics or exported
as 3D meshes for use within other graphics applications.
It lets you import predefined shapes and apply
a broad range of lighting effects to make them
appear sculpted or organic and made of all kinds
of different materials - ranging from stone-like
to metallic. You can create an modify shapes by
using special building blocks called ‘holons’ which
can simply be dragged about on screen using a mouse.
Optionally, there are also tabbed pages of parameters
which can be used to exert finer control over the
shape, colour and rendering of an object.
This is the XenoDream environment.
The easiest way
to create an object is to load a predefined
shape from the library.
Here we have applied two (of the numerous) lighting
presets to render the shape in varying colours.
Each preset dramatically changes the final
appearance.
|
Garth Thornton has a B.Sc (Hons) in physics from Victoria
University of Wellington, New Zealand. He worked in computer
and network support, admin and management for 13 years.
He has been sole developer for a variety of database
contracts. For seven years he has been developing XenoDream.
Virginia Sterling, president of XenoDream Software, is
a journalist and graphic/fine artist from New Jersey.
November 2005
|