The Array Tool

Version 1.0
Rick van der Meiden. September 2001.


What is it ?

The Array Tool is a plugin the Art Of Illusion modelling, animation and rendering studio. The tool is intended to be used with AoI version 0.9 or higher. More information on Art of Illusion (AoI) can be found at Like Art of Illusion, the Array Tool is free, open source software. See the GNU General Public License for more details.

What does it do ?

It allows the user to create arrays of duplicate objects. The interval between the objects can be set constant, resulting in a linear array. Aternatively, the user may select a curve along which multiple instances of the object will be positioned.

How do I use it ?

First install the Array Tool by simply copying the ArrayTool.jar file into the plugins directory of Art of Illusion. When you start an AoI session, there will be a new option in the tool menu: Tool->Array.


General operation

Arrays are created by selecting one or more objects in the scene and then choosing the Tool->Array option from the menu. A dialog is then presented in which various parameters and options may be set. All selected objects, optionally including their children, are multiplied, positioned and oriented according to parameters set in the Array dialog.

Two types of arrays are distinguished: linear arrays and curved arrays. The type of array that is to be created is selected by marking an appropriate checkbox.

By default, the copies of the objects are grouped into an array object, and children of objects will also be copied. These and other general options can be set regardless of the type of array that is selected.

Linear arrays

Linear arrays can be created when the Linear checkbox has been selected in the Array dialog. The options to the right of the checkbox are available only when this is the case.

Linear arrays are specified by a number of copies parameter and the x step, y step and z step parameters. The x, y and z step components represent a constant translation vector from each copy of an object to the next. Each component may be a positive, zero or negative floating point value.

The times x size, times y size and times z size options may be checked for each component of the step size. This results in multiplication of that step component by the same component of the size of the object's bounding box. For example, setting x step to 1 and checking times x size, results in an x step size equal to the x size of the objects bounding box. In other words, a connected array of objects along the x-axis will be created.

The number of copies field determines how many copies of the object there will be in the array. The original is not included in this count. Normally, when the number of copies has been set to n, there will be n+1 instances of the object in the scene: n in the array, and 1 original.

Below is an example of a linear array of six cubes, spaced at twice the cube's size in the x direction.

Curved arrays

Curved arrays can be created when the Curve checkbox has been selected in the Array dialog. The options to the right of the checkbox are available only when this is the case. Note that the curve checkbox can only be selected when there are curve objects in the scene.

The curve along which to create an array can be selected through a drop box to the right of the curve checkbox. The curve may be of any type: open, closed, interpolating, approximating or without smoothing. The position and orientation of the curve in the scene will be used to position the created array in the scene. The position and orientation of the objects to be duplicated is not considered when creating an array by defaulft. So these can safely be positioned anywhere in the scene.

When all options values are left at their default, an array of ten objects will be created, neatly following the curve, like beads on a necklace. In the example below, 15 cubes follow a curve. Note how the cube twists when it follows the curve. This is due the so-called minimal rotation frame.

The user may choose to eiher set the number of copies or to set a fixed stepsize. When a number is set, the copies will be spread evenly along the curve. When a stepsize is set, the number of objects will be computed automatically using the length of the curve.

By default, the orientation of the object copies folows the curve. To be precise: the orientation of the object is such that the total amount of rotation around the axis parallel to curve's direction will be minimal. By unchecking the Orientation follows curve option, this behaviour will be replaced by a constant orientation. This is either the default orientation of the object, or the original orientation when use orginal orientation has been checked.

In some cases, more control of how objects are positioned on the curve may be desirable. By selecting the options use original orientation and use original position, the position and/or orientation of the original object(s), relative to the curve, determine how the copies will be positioned and oriented on the curve.

In the following example, an array of cylinders is to be created using the cylinder and the curve shown to the right.
The default parameters for creating an array using a curve, yield the following result:
With use original orientation checked, the orientation of the cylinder follows the curve given the orientation at the beginning. Note that the original cylinder is still in the scene.
Finally, when taking both the original's position and orientation into account, the position and orientation of the cylinder relative to the curve is continued in the array in a natural way.

General options

Include children: When this option is checked, any children of the selected objects will also be copied. The position and orientation of children relative to their parwent is preserved. Note that when selecting multiple objects that are not related, their relative orientation is not considered in the created arrays; each object will considered individually.

Group:All objects created in the array operation will be grouped togeteher into a single object when this option is checked. That is, all created objects will be children of a NULL object named Array of .... When creating an array using a curve, the NULL object is positioned and oriented at the origin of the curve. When creating a linear array, the NULL object will be where the origin of an arrayed object would be halfway the lenght of the linear array.

Skip first copy:Check this option to skip the first copy when creating an array. You may find this useful when not creating a group object and when the original is positioned equal to the copy at the beginning of the array.

Live duplicates:When this option is checked, not ordinary copies but live duplicates will be created. The duplicates have different position and orientation but refer to the same shape, and will respond simulationously to parameter changes.

contacting the author

For questions, suggestions and remarks, I can be contacted via email:
Copyright 2001 Rick van der Meiden.