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