Project of the Month, April 2007

Art of Illusion

Description of project

Art of Illusion (AOI) is a 3-D graphics studio that provides modeling, texturing, animation, and rendering in a single program. It is designed to be easy to use so that new users can pick it up quickly, while still providing advanced features to let experienced users create professional-quality artwork. Its most striking feature is its simple GUI, which provides access to powerful and sophisticated features. The fact that it is written in pure Java gives it strong cross-platform support, and with today's Java technology, performance is not an issue. Finally, AOI is built on a strong core/plugin architecture, which makes it easy for even programming neophytes to enhance AOI to suit their purposes.

Trove info

  • Operating System: There are installers for Mac OS X, Linux, and Windows, but AOI can run on any OS with a modern Java VM.
  • License: GNU General Public License (GPL)
  • Hardware requirements: Just about any computer made within the last 10 years, although modeling and rendering complex scenes can take a lot of CPU time and memory.
  • Language: English, French, German, Italian, Japanese, Portuguese, Spanish, and Swedish, though some of the translations are incomplete. Most of the documentation is in English.
  • Programming Language: Java

Why and how did you get started?

Peter: While I was in graduate school, I audited a class on computer graphics algorithms just for fun. We had to work with some horrible graphics tools. I decided I could do better, and it would make a fun project, so I began writing what eventually turned into Art of Illusion. Eight years later, I'm still working on it and still having fun.

Nik: I got started with AOI because I was looking for an open source application with which to build a 3-D walk-through of a yacht design I was working on. AOI was both pure Java and the easiest to use. As I downloaded my first version, I saw a link about contributing to the project. While I have contributed quite a bit to AOI over the years, I still have not completed the 3-D walk-through.

Franois: Four years ago I was looking for Linux software with which I could model and render a 3-D scene. After testing many other applications I tried AOI and found it straightforward to use. I wanted to design a plant for my second scene, but I found no open source plant generators, so I started to learn Java and code the Tree and Plant Designer plugin for AOI. That led to my writing a Scripts and Plugins Manager that could manage updating and versioning of AOI extensions. We started a project at SourceForge.net to host these extensions.

Julian: I got interested in AoI at around version 0.9. After being impressed with the combination of ease of use, power, rendering quality, and application development, I decided to contribute by writing a manual in HTML, which I still maintain.

What is the software's intended audience?

Anyone who wants to create 3-D graphics, with the possible exception of professional animators. Most 3-D studios, both commercial and open source, are really focused on the professional animator. They try to let an experienced user work as quickly and efficiently as possible, but the price of that is that they're very difficult for a new user to learn. In contrast, Art of Illusion is a program that a new user can sit down with and begin working with almost immediately. That doesn't mean it sacrifices power, though. It has lots of advanced features, including a procedural texture editor, an integrated scripting language, skeleton-based animation, and several different global illumination algorithms.

How many people do you believe are using your software?

According to SourceForge.net, we average more than 700 downloads per day. How many active users that translates to is anybody's guess.

What are a couple of notable examples of how people are using your software?

We've heard from several people at architecture and design firms who use it to create visualizations for their clients. These are people who don't do 3-D graphics as their primary job and don't want to deal with the steep learning curves of the professional systems, but still need to produce professional-quality artwork. Art of Illusion is perfectly suited for that type of work.

Another interesting use has been the RepRap project. This is an "open source hardware" project to create a rapid prototyping machine that can fabricate nearly all of its own parts, and they're using Art of Illusion for modeling them because it was open source and could be used by non-experts to accurately produce 3-D models of components for 3-D printing.

Nathan Ryan used AOI to create the image that won the Internet ray tracing competition (IRTC).

Recently an architecture firm posted some results they had produced in about 30 hours' work for a customer.

What gave you an indication that your project was becoming successful?

Peter: There has been a slow, steady rise in usage since the project was launched: more downloads, more people posting on the forums, etc. The most important development was when other people began to write plugins that added major new features. That was when it made the transition from being my personal project to a true community project.

Nik: The strongest indication of success is the fact that others have contributed, and continue to contribute, substantial material, such as Julian's superb manual and Franois' impressive TreeAndPlant and PolyMesh modeling plugins. This indicates that the project is so successful that people are prepared to invest significant time into augmenting it.

What has been your biggest surprise?

Peter: The fact that a handful of people, working in their spare time and very loosely coordinating over the Internet, can produce professional quality software. I'm a professional programmer and I still don't understand how we're able to do it.

Nik: How long it has taken me to complete some apparently simple tasks -- and how sometimes the simplest and quickest features are wonderful in the users' eyes.

Julian: For me, the pleasant compliments on the manual on forums and directly to my email.

What has been your biggest challenge?

Peter: Simply finding the time to work on it. There is so much I want to do!

Nik: Finishing one of those 'apparently simple tasks' -- in this case adding network rendering capability, which I suggested and started at rev 1.6 in November 2003, and which is, to this day, incomplete.

Julian: Writing a manual from scratch in HTML (which I had to learn at the same time).

Why do you think your project has been so well received?

Peter: I think Art of Illusion fills a unique position in the world of 3-D graphics software. I don't know of any other program that is so easy to use while still doing so much. It's the ideal balance for a serious hobbyist. People also really appreciate the fact that it's open source.

Nik: The simple user interface giving easy access to very sophisticated features underneath. I think the "code once, run anywhere" features of Java are also a big factor. People can help anyone else, even if they are on different platforms.

Franois: The AOI UI is simple and intuitive, up to a point that people think its capacities are limited because advanced features don't all show in the main window. For some other people, the superb ray tracing renderer is also a strong motivation for using AOI.

Julian: The fact that users can communicate directly with Peter and the other coders is also incredibly attractive.

Where do you see your project going?

Peter: That's hard to predict. Given the decentralized architecture, I never know when someone will post on the forum to say, "I'm writing a plugin to do X." As long as it can keep growing in the directions people want while still retaining its simplicity and ease of use, I'll be satisfied.

Nik: Personally, I see AOI going in a number of directions, pretty much simultaneously. One clear direction is toward more of the features professionals want and use. I think any program should be capable of satisfying people who are going to use it all day every day. Another direction is more whimsical: including things like nonphotorealistic rendering.

On top of that, because AOI has such a strong plugin structure, other directions will only become apparent as users create plugins that please themselves.

Julian: I am hoping for some physical simulation effects, i.e. rigid body and soft body dynamics, fluids, and cloth simulations.

What's on your project wish list?

Peter: I'd love to see more advanced animation features: fluid simulation, cloth simulation, and more sophisticated character animation. I'd also like to try writing a hardware-accelerated renderer, mainly because I think it would be an interesting project. Another subject that's been discussed a lot recently is adding some more CAD-oriented features. This is something that the RepRap people especially would like to see.

Nik: Network rendering, nonphotorealistic rendering, CAD-style editing, improved management of extensions and help.

Franois: Color and 3-D mesh painting, implicit surface modeling (a.k.a. metaballs and the like). That should be enough for the year(s) to come!

What are you most proud of?

Peter: I wrote it, and many thousands of people are now using it. It's amazing to realize that.

In terms of features, I'm proud of some of the algorithms I've invented for use in it. The method for raytracing displacement maps is completely original, and far superior to anything that had been published at the time. The subdivision surface algorithm also combines a number of features that I've never seen all together anywhere else.

Nik: The real benefit the project is providing to other important projects, such as RepRap and professional users, and the contribution of my code to those benefits; specifically the AdvancedRendering plugin, the VectorRenderer, the Help plugin, the Preview plugin and the STL translator. I'm also quite proud of the (relatively small) influence my ideas and code have had on the direction of the core product.

Franois: Contributing to the OS community. Being more knowledged in analytical geometry and numerical analysis than in software design, I really feel useful in this type of project.

If you could change something about the project, what would it be?

Peter: I would have more time to work on it!

Nik: I would like to see a greater separation between the GUI and the editing code, but that would be a major undertaking and wouldn't result in any immediate new features for the feature junkies.

How do you coordinate the project?

Peter: The coordination is very informal. Art of Illusion is based around a plugin architecture, so I maintain the core application and a set of plugins that I've written. Other people write and maintain their own plugins. Sometimes people contribute code for the core application, which I might or might not choose to use. But for the most part, everyone has their own code which they own and develop however they want.

Franois: There is no project coordination at all. It might seem surprising at first, but in fact it may explain why it works so well. No one gets frustrated. Rather than discuss and validate every change with Peter, we can experiment through plugins. It doesn't break core AOI code and good concepts can be ported into AOI when they're mature. Extensions are really a key to AOI success in many ways.

Nik: The project has active bug and feature request trackers, and these are perused on a regular basis -- mostly by Peter I think, but I, and I believe others, will take on a bug occasionally and submit a patch to Peter for inclusion.

Do you work on the project full-time, or do you have another job?

All of us have at least one other full-time job.

If you work on the project part-time, how much time would you say you spend, per week, on it?

Peter: Typically between five and 10 hours per week.

Nik: I dream of getting time each week for AOI, and the other open source projects I am involved with. When I'm actively developing, I can spend between 12 and 32 hours (if I get lucky and can grab a day in the weekend). When I'm not really active, I probably spend 6 hours a week, and most of that is just monitoring and posting in the forums.

Franois: Too many, my wife would say. Implementing a new feature needs more time than debugging it after beta release. I'd say 10 hours per week.

Julian: When a new release comes out, I spend an hour or so per evening over the course of a week or two to update the manual.

What is your development environment like?

Peter: I have a PowerMac G5 running OS X 10.4. I use IntelliJ IDEA, which is an amazing IDE, and I'm very grateful to IntelliJ for giving me a free open source license.

Nik: I develop on Linux (Fedora Core) using the Sun Java JDK. For portability across platforms and environments I do the majority of my work with non-aligned tools: Emacs for editing, JSwat for debugging, and DARCS for version control.

I have been keeping my promise to do more using IDEs. IntelliJ gives out free licences to developers of open source projects, and of course, lots of my friends use Eclipse. I haven't really made friends with either of these IDEs yet, but I still take them out to lunch now and again.

Franois: Eclipse on Mac OS X and GNU/Linux.

Julian: Windows XP Athlon 64 X2 4400. I use Nvu for HTML coding and Paintshop Pro or the GIMP for image manipulation.

Milestones:

The first line of code was written on April 21, 1999. The first public release (0.1) was on October 29, 1999. There have been 24 major releases in total, each increasing the version number by 0.1, plus a few bug fix updates. That's the way I like to work: frequent releases, each with a few major new features and a lot of minor enhancements.

  • February 2002 - AOI 1.0 - it's officially a real live product!!
  • November 2002 - AOI 1.3 - support for scripting
  • July 2004 - AOI 1.8 - includes Francois' Script and Plugin manager plugin (first external plugin included with the AOI installation)
  • June 2005 - AOI 2.1 - support for OpenGL through JOGL
  • November 2005 - AOI 2.2 - multithreaded rendering in the ray tracer
  • May 2006 - AOI 2.3 - support for dockable widgets in the UI

Mesh unfolding and UV mapping feature for the PolyMesh plugin has just been released as beta and will soon be released as a stable version.

How can others contribute?

Peter: Head over to the forums, say hello, and see what features people are asking for. The easiest way to get started is by writing scripts. Even if they're simple ones written for your own use, other people might find them useful too. Then you can move on to something bigger when you feel you're ready.

Nik: There is a link with a wish list (probably out of date) on the project homepage. However, most people either get inspiration from outside and tell us about a new script or plugin once it's complete, or they see or raise ideas in the forums, and get inspiration from there.

We could use help with importing the existing help and tutorial documents into the HelpSet structure, so the Help system can display them. It's not a difficult nor even particularly time-consuming task, it's just lower on everyone's priorities at the moment, and it's something you want to finish properly so the result shows quality.

Franois: People generally come up with a script or plugin idea. The good thing about having such loosely coupled development is that people can experiment at home without interfering with anyone. However, the best thing to do is to contact Peter first because he always has a good idea about how to get things done.


More projects of the month


Project Name: Art of Illusion

Project leader:

Name: Peter EastmanPeter Eastman
Age: 35
Occupation: Software Architect
Education: Ph.D. in Applied Physics
Location: Redwood City, CA

Key developer(s)

Name: Nik Trevallyn-JonesNik Trevallyn-Jones

Name: Franois GuilletFranois Guillet

Name: Julian MacDonaldJulian MacDonald

Quote about SourceForge.net?

SourceForge.net is the place I go to find software for a particular purpose -- before I even Google for it. OS software wouldn't be the same without SF.net. Thank you so much for creating this wonderful service and providing it to the community!

Why did you place the project on SourceForge.net?

It's the leading site for open source development, and it offered everything I needed.

How has SourceForge.net helped you?

It has saved us a ton of work. We don't have to worry about setting up or running all the different services needed to host an open source development project. SF.net provides all the public infrastructure needed to support an active project. Not just the download areas and forums, but the tracker and news services are fundamentally important as well. It also provides the public identity of a project, where we can provide services such as hosting control files for download managers. It means a lot when you're at home with your computer and you've no idea how you can share your work or set up resources like forums.

The number one benefit of using SourceForge.net is:

It's a development community in a box: register a project and upload some code, and presto! a new, active, open source project has been born! SF.net provides everything we need in one place: Web servers, version control, forums, release management, etc. All you need is an idea and some code -- SF does the rest. It works, and it's here to stay.