# Art of Illusion

Art of Illusion is a free software, and open source software package for making 3D graphics.
It provides tools for 3D modeling, texture mapping, and 3D rendering still images and animations. Art of Illusion can also export models for 3D printing in the STL file format.

## Overview

Art of Illusion is 3D graphics software, such as Blender and Wings 3D (which are both free software), and Autodesk 3ds Max and Autodesk Maya (which are both proprietary software).
Although some sources seem to confuse 3D modeling with computer-aided design (CAD), Art of Illusion does not provide any CAD-like features, such as parametric modeling.
Some user reviews describe Art of Illusion as 'intuitive' 'straight forward to learn' and 'good candidate for the first 3D modelling tool', while some characterize it as 'software for experienced CAD users' or taking plenty of time to figure out. For its capabilities it has been described 'powerful, comprehensive and extensible'.
Art of Illusion has been entirely written in Java.

## History

The development of the software was started in 1999 by Peter Eastman. Peter was the lead developer until the year 2016, when at Peter's request, Lucas Stanek started to host the development, while Peter assumed a more supervisory role. Lucas took the development from SourceForge to GitHub and the SourceForge-site serves as the software's discussion forum and delivery channel.
Since 1999 there have been over 40 releases of the software. The latest stable version, 3.2.1, was released on November 14, 2023.

## Features
### General buildup and the core software

Art of Illusion consists of the core software and various feature extensions, which come as plugins and scripts.
The core software package contains basic modelling, texturing, animation and rendering tools. Scripts are used either to create and edit objects or to modify behavior of the software. Plugins can add features, like tools and object types to the software or alter the user interface. Some of the core features like the renderers are implemented as plugins as well to facilitate maintenance.

### Object types and modeling

Art of Illusion provides several types of objects with their specific editing tools for modeling: Primitives (cube, sphere, cylinder), Curve, Tube, Spline mesh, Triangle mesh, Polygon mesh (plugin), Implicit object (plugin), Hologram (plugin).

### Animation

All 3D-objects can be animated by changing their position and orientation. In addition to that, properties of each object can be animated and procedural textures and materials can have animated features. Mesh objects can be rigged with a skeleton, that can be used to control shape changes. With skeletons it is possible to save predefined gestures that can be combined as poses, to generate complex repeatable movements. Animation data of each object is stored into animation tracks as key frames.

### Rendering

Art or Illusion uses multi threading for rendering images and it provides several options for lighting. The core software package comes with two built in renderers:
    The Ray Tracer renderer provides anti-aliasing, soft shadows, depth of field, transparent background, photon mapping caustics and subsurface scattering.
    The Raster renderer provides a few options for shading methods and super sampling

### Feature-extensions
#### Scripting

Art of Illusion supports two scripting languages, BeanShell and Groovy and it comes with a basic level text editor for writing, editing and running scripts. There are three different types of scripts each for their specific purpose: Tool scripts, Scripted objects and Start-up scripts.
Tool scripts operate at the same level as the commandSelected function of a modeling tool. This means that with only minor changes the code from a script could be placed into a more permanent plugin, or the code from a plugin could be pulled out into a script to allow for changing the code within the environment.

#### Plugins

Art of Illusion provides a programming interface for plugins. The code for the plugins are written in Java like the core software. This code is combined with an extensions.xml file that describes what the plugin does and most importantly, which class implements it. In some cases the XML file specifies methods that are exported for use by other plugins or specifies plugins that are imported for use by the plugin. Tags used in the extensions.xml file are Author, Date, Plugin, Export, Import, Description, Comments, History, and Resource. The compiled .jar-files are added to the Plugins folder in Art of Illusion root directory and they are effective immediately at the next start up.
A large number of plugins have been developed for Art of Illusion that are available on the scripts and plugin repository. These include object types and their accompanying editors, user interface enhancements and various tools. These include the Scripts and Plugins Manager, that is used to download and update the extension parts.
The types of plugins that can be created for Art of Illusion are, Plugin, Renderer, Translator, ModellingTool, Texture, Material, TextureMapping, MaterialMapping, ImageFilter, Module.
Plugin — A general plugin type used for all plugins that don't fit one of the other categories.
Renderer — Methods used to render a scene, such as a special ray tracer.
Translator — Used for importing or exporting a scene to another file format.
ModellingTool — For tools that appear on the tools menu. They usually manipulate objects in the scene.
Texture — Defines a texture that is applied to an object.
Material — Defines a material that is applied to an object.
TextureMapping — Describes how a texture is mapped to an object.
MaterialMapping — Describes how a material is mapped to an object.
ImageFilter — Used for post-processing of a rendered image.
Module — Used for user defined 2D and 3D textures.

#### Cloth Simulation

A cloth simulator does not come with the basic install package but the capability is available as a plugin. The second edition of Extending Art of Illusion includes the ClothMaker plugin as one of the examples in the book. The author classifies the cloth simulator as "beta" and describes a number of problems with the tool. The ClothMaker plugin makes use of the Distortion class. The user selects an object in the scene to convert to a cloth. The user then selects the command to tell Art of Illusion to generate the cloth simulation. An editor window is provided for the user to select various settings. When the user selects ok the tool spends several minutes generating many frames of the simulation. Once the window closes the user can play simulation using the animation score.

### Procedural editor

There are procedurally controlled options available of textures, materials, movements, lights and even some objects. Procedural editors provide a graphic interface, where you can combine input values, library patterns and mathematical expressions to create the desired output values.

### Audio

Art of Illusion does not have any sound/audio processing capabilities. Audio is not mentioned in the documentation.

### File formats and interoperability

Art of Illusion scene files are saved in their specific format, marked by the extension ".aoi". The core package contains a built-in import function for Wavefront (.obj) and export functions for Wavefront (.obj), Povray 3.5 (.pov) and VRML (.wrl). Additional translators are available as plugins.

### Language support

The user interface of the core software has been translated to 14 languages. Plugins may not have complete sets of translations available.

## System requirements

Art of Illusion 3.2.0 runs on Java Virtual Machine (JVM) versions 8 or later. Assembly packages are available for Mac OS, Windows and Linux and there is a generic zip package available for other systems or for cases, where a self-extracting package can not be used. OpenGL acceleration is available for interactive rendering.
Absolute minimum requirements or recommendations for the hardware have not been informed. By default Art of Illusion allocates 16 GB of memory for the JVM. This can be changed by launching Java by a command-line. Art of Illusion is capable of multithreading and therefore utilizing multicore processors, when rendering images.
Art of Illusion is designed to have full functionality either with a single button mouse or a 3-button mouse with a scroll wheel. A keyboard with a numberpad is recommended as some of the keyboard shortcuts are assigned to the number keys.
An interface for a 3D-controller, such as one of 3Dconnexion devices is available as a plugin.