> 1) Hello Peter, thank you for accepting this interview. Could you please
> tell us who you are, what is your background and you current occupation?
I've been programming for most of my life. It is, and has always been,
one of my main hobbies. I almost always have two or three projects in
progress at any time. Art of Illusion is by far the largest and longest
lasting of them.
As for my background, I have a Ph.D. in Applied Physics. My graduate
research involved developing algorithms for simulating protein molecules.
Since I finished graduate school five years ago, I've been working as a
programmer, creating software to help biologists analyze certain types of
data.
> 2) How did the idea of coding your own application come to your mind and
> why did you choose to write it in Java?
While I was in graduate school, I took a class on computer graphics
algorithms. I did that just for fun - it had nothing to do with any of my
research. I had a great time in the class, and decided that doing
something related to computer graphics would make a fun project.
As part of that class, we had to work with some truly horrible modelling
tools. Figuring there had to be something better, I downloaded demo
versions of a few commercial modelling programs. Their user interfaces
were a bit better, but still pretty bad. I decided I could make a better
one. And so I started writing Art of Illusion!
The choice to write it in Java was an easy one. Through most of graduate
school I worked in C, but I started to play around with Java a little bit
near the end. There were so many things that were just so much easier to
do in Java - memory management, threading, etc. Now that I'm used to
Java, I would hate to have to go back. Also, the idea of being able to
write a program on one operating system and have it "just work" on every
other was a wonderful one. Not that Java really achieves that goal - you
still have to test on every operating system you plan to support and fix
platform-specific bugs - but it comes closer than any other development
environment I've worked with.
> 3) Java is known (or has been known) as slow and not very Real Time
> Graphic friendly. What is your point of view on the subject? Did you face
> difficulties because of using Java, and how did you overcome them? (PS:
> please note that I'm not a programmer of any sort, and that I only know
> about this "bad" reputation without knowing if it is deserved)
This is an ancient myth that should have died long ago. The very first
versions of Java were slow, since they were entirely interpreted. But
modern virtual machines have "just in time" compilers that make it as fast
as (or faster than) most statically compiled languages.
Of course, every development environment has its own performance
characteristics, and writing efficient software requires you to understand
them: what operations are fast, what operations are slow, what types of
designs that environment is well suited to, and so on. If you're used to
writing C++ programs and then switch to Java, your first programs may end
up being very slow - not because Java is a slower language, but because
it's a very different language, and requires different techniques. C++
also had the reputation of being very slow when it first came out, and for
the same reasons as Java: it took time for the compilers to mature and for
people to learn how to use it properly.
> 4) Could you sum up the history of Art of Illusion, with a briefing of the
> very important moments of its "history"?
That's a harder question than it sounds. The first version was 0.1. Each
version since then has incremented the number by 0.1, and it's now up to
2.0, with 2.1 due to be released shortly. So I'm really up to the 21st
version. Every release has added major features, so there aren't many
distinct milestones, just a steady, gradual progression.
> 5) How strong is the community of AoI users? Are they only CG enthusiasts
> or are there some CG pros among them?
That's also a difficult question. There are probably about a dozen people
who post regularly on the discussion forums, but many times that who have
posted just a few times. I get an average of one or two emails each day
from new users. But according to SourceForge, Art of Illusion has been
downloaded over 130,000 times, with 200-300 downloads every day. So there
are a lot of users out there, but I don't know who most of them are.
> 6) Do you pay attention to other Open Sourced 3D applications, like
> Blender or POV-ray, for example? What do you think of them, of their
> advantages and disadvantages?
Not all that much attention. Every now and then, someone will point out a
feature they like in another program, so I'll look at it to see whether I
could add something similar. But I don't worry about trying to compare
them.
I think one of the greatest and least appreciated strengths of open source
software is that it doesn't need to compete. That's very different from
commercial software, where you constantly need to keep an eye on your
competitors so you don't lose sales to them. First and foremost, I'm
writing Art of Illusion because it's a lot of fun. If someone finds it
useful, that's great. But if they decide to use a different program
instead, that doesn't hurt me. And if somebody tells me they like another
modeller or another renderer better, my first thought is not, "How can I
compete with it," but rather, "How can I interoperate with it so users can
combine the best features of both programs?"
> 1) What is your prefered aspect of Art of Illusion, the one you like the
> most to code and involve yourself in (e.g.: modeling tools, animation
> tools, rendering engine...)? (and obviously, explain why! :D )
All of the above, and many others. What I really care about is finding
interesting problems to solve, and just about every aspect of computer
graphics is filled with interesting problems. Given my background in
numerical algorithms, I suppose the most rewarding parts are the ones that
give me a chance to invent completely new algorithms. Some examples
include the subdivision surface modeller, the method for raytracing
displacement mapped surfaces, and the procedural texture editor. These
are also the parts that take the most work, of course, but seeing the
results of that work is very rewarding.
At the other extreme, I can definitely tell you my least favorite thing to
work on: the boolean modelling tool. It was pure agony to write, and it
took over a year to get most of the bugs out! I then discovered there was
a fundamental flaw in the algorithm I had chosen, which causes errors in
certain situations. I've been meaning to rewrite the boolean modeller
with a different algorithm for several years. But it was so painful the
first time that I keep putting it off.
> 2) The render engine is quite complete, with lot of very interesting
> features, like Global Illumination, HDRI, photon maps... Do you plan to
> extend photon cast to implement Sub Surface Scattering, for example?
> Generally speaking, what are the plans for the render engine?
Better support for scattering materials is definitely the biggest hole in
the raytracer right now. You can expect that to be filled sometime in the
next year. The other big change to the raytracer which I plan to make in
the near future is to parallelize it so it can take advantage of multiple
processors. Dual processor computers are becoming common, and within a
few years it will be hard to buy a computer that only has one processor.
I want to make sure the raytracer can take advantage of that.
> 3) What are the weaknesses of the tools of Art of Illusion you would like
> to work on in near future? Any modeling tool you plan to add, for example?
Overall, I'm very happy with the modelling tools in Art of Illusion.
They're mature and very powerful. On the other hand, I've learned that
different people prefer different styles of modelling, and you can't
expect one tool to satisfy everyone. I designed the modelling tools in
Art of Illusion to work in a way that is intuitive for me. Some people
really like them, while other people would prefer them to work in a
different way.
The most important recent development in this area is the PolyMesh plugin
that was recently released. It provides a completely different type of
mesh, and allows a very different style of modelling. Some people who
aren't comfortable using the standard tools in Art of Illusion like it a
lot more.
> 4) The animation system of Art of Illusion is quite satisfactory. For
> example, you can do skeletal animations and set morphings according to
> bone positions in order to simulate muscle masses. What are the plans for
> the future?
I think Art of Illusion has reached the point where it provides all of the
basic tools that are required to make good looking animations, as well as
a few more advanced tools. But animation is a huge field, and I could
spend years just adding new animation features. For example, there's the
whole field of physical simulation, something that I've barely touched on
so far. Or advanced character animation techniques, where you define not
just the skeleton for a character but also their muscle structure, and
then the skin automatically moves realistically as the muscles flex
underneath. And then there's particle systems which are useful for many
different types of animations. I've written a Particle Jet script which
can be used for simple particle effects, but there's so much more that
could be done.
I don't have any specific plans for animation features right now. At some
point I'll suddenly feel inspired to write a particle system engine, or a
collision detection engine, or something like that, and so I'll do it.
That is how most features get added: I simply do whatever I think will be
the most fun.
> 5) Do you know of interesting scripts and plugins under development behind
> the scenes?
Very little happens behind the scenes, but if you read the public
discussion forums you will discover all sorts of things that are being
written. A very exciting development over the last year or two is that
other people have started to write plugins that add really major new
features to Art of Illusion. For example, there is the PolyMesh plugin I
mentioned earlier. Or a plugin that can render scenes to vector image
formats like SVG. Or a very powerful procedural editor for creating
plants and trees. It's great to see other people starting their own
projects to add the features they want.