|
.. _bpy.types.ArrayModifier: |
|
|
|
************** |
|
Array Modifier |
|
************** |
|
|
|
The *Array* modifier creates an array of copies of the base object, with each copy being offset from |
|
the previous one in any of a number of possible ways. Vertices in adjacent copies can be merged if they are nearby, |
|
allowing smooth :doc:`Subdivision Surface </modeling/modifiers/generate/subdivision_surface>` |
|
frameworks to be generated. |
|
|
|
This modifier can be useful when combined with tileable meshes for quickly developing large scenes. |
|
It is also useful for creating complex repetitive shapes. |
|
|
|
Multiple Array modifiers may be active for an object at the same time |
|
(e.g. to create complex three-dimensional constructs). |
|
|
|
|
|
Options |
|
======= |
|
|
|
.. figure:: /images/modeling_modifiers_generate_array_panel.png |
|
:align: right |
|
|
|
The Array modifier. |
|
|
|
Fit Type |
|
Controls how the length of the array is determined. There are three choices, |
|
activating respectively the display of the *Curve*, *Length* or *Count* settings explained below: |
|
|
|
Fit Curve |
|
Generates enough copies to fit within the length of the curve object specified in *Curve*. |
|
Fit Length |
|
Generates enough copies to fit within the fixed length given by *Length*. |
|
Fixed Count |
|
Generates the number of copies specified in *Count*. |
|
|
|
.. container:: lead |
|
|
|
.. clear |
|
|
|
.. note:: |
|
|
|
- Both *Fit Curve* and *Fit Length* use the local coordinate system size of the base object, which means that |
|
scaling the base object in Object Mode will not change the number of copies generated by the modifier. |
|
- *Fit Length* uses the local coordinate system length of the curve, which means that scaling the curve in |
|
Object Mode will not change the number of copies generated by the modifier. |
|
- :ref:`Applying <bpy.ops.object.transform_apply>` the scale can be useful for both. |
|
|
|
|
|
Offset |
|
------ |
|
|
|
Constant Offset, X, Y, Z |
|
Adds a constant translation component to the duplicate object's offset. |
|
X, Y and Z constant components can be specified. |
|
|
|
Relative Offset, X, Y, Z |
|
Adds a translation equal to the object's bounding box size along each axis, multiplied by a scaling factor, |
|
to the offset. X, Y and Z scaling factors can be specified. |
|
|
|
.. figure:: /images/modeling_modifiers_generate_array_offset-relative.png |
|
|
|
Relative offset (0.5, 1.0 and 1.5) examples. |
|
|
|
Object Offset |
|
Adds a transformation taken from an object (relative to the current object) to the offset. |
|
It is good practice to use an Empty object centered or near to the initial object. |
|
E.g. by rotating this Empty a circle or helix of objects can be created. |
|
|
|
.. figure:: /images/modeling_modifiers_generate_array_offset-object.png |
|
|
|
Object offset example. |
|
|
|
|
|
Merge |
|
----- |
|
|
|
Merge |
|
If enabled, vertices in each copy will be merged with vertices |
|
in the next copy that are within the given *Distance*. |
|
First Last |
|
If enabled **and** *Merge* is enabled, vertices in the first copy will be merged with vertices |
|
in the last copy, again if they are within *Distance* range. This is useful for circular objects. |
|
|
|
.. list-table:: First Last merge example. |
|
|
|
* - .. figure:: /images/modeling_modifiers_generate_array_first-last-off.png |
|
|
|
Subdivision discontinuity caused by not merging vertices between first and |
|
last copies (*First Last* off). |
|
|
|
- .. figure:: /images/modeling_modifiers_generate_array_first-last-on.png |
|
|
|
Subdivision discontinuity eliminated by merging vertices between first and |
|
last copies (*First Last* on). |
|
|
|
Distance |
|
Controls the merge distance for *Merge* and *First Last*. |
|
|
|
|
|
UVs |
|
--- |
|
|
|
U Offset, V Offset |
|
Shifts UVs of each new duplicate by a settable amount. |
|
|
|
|
|
Cap |
|
--- |
|
|
|
Start Cap / End Cap |
|
This allows either endpoints of the array to have a different mesh subsisted. |
|
|
|
For the *start*: as if it was in position -1, i.e. one "array step" before the first "regular" array copy. |
|
For the *end*: as if it was in position *n* + 1, i.e. one "array step" after the last "regular" array copy. |
|
|
|
When *Merge* is activated, and the *cap* vertices are within the *Distance* threshold, they will be merged. |
|
|
|
.. note:: |
|
|
|
The start/end cap objects currently do not support the *First Last* option. |
|
|
|
|
|
Hints |
|
===== |
|
|
|
Offset Calculation |
|
------------------ |
|
|
|
The transformation applied from one copy to the next is calculated as the sum of the three |
|
different components (*Relative*, *Constant* and *Object*), |
|
each of which can be enabled/disabled independently of the others. This allows, for example, |
|
a relative offset of (1.0, 0.0, 0.0) and a constant offset of (0.1, 0.0, 0.0), |
|
giving an array of objects neatly spaced along the X axis with a constant 0.1 |
|
unit between them, whatever the original object's size. |
|
|
|
|
|
Examples |
|
======== |
|
|
|
.. figure:: /images/modeling_modifiers_generate_array_example-mechanical-chain.png |
|
|
|
A chain created from a single link. |
|
`Sample blend-file <https://wiki.blender.org/wiki/File:Dev-ArrayModifier-Chain01.blend>`__. |
|
|
|
.. figure:: /images/modeling_modifiers_generate_array_example-organic-tentacle.jpg |
|
|
|
A tentacle created with an Array Modifier followed by a Curve Modifier. |
|
|
|
The segment in the foreground is the base mesh for the tentacle; the tentacle is capped by two |
|
specially-modeled objects deformed by the same Curve object as the main part of the tentacle. |
|
`Sample blend-file <https://wiki.blender.org/wiki/File:Manual-Modifier-Array-Tentacle01.blend>`__. |
|
|
|
|
|
Fractal |
|
------- |
|
|
|
.. list-table:: |
|
|
|
* - .. figure:: /images/modeling_modifiers_generate_array_example-fractal-1.jpg |
|
:width: 320px |
|
|
|
Multi-level array animated with motion blur. |
|
|
|
- .. figure:: /images/modeling_modifiers_generate_array_example-fractal-2.png |
|
:width: 320px |
|
|
|
Fractal created with multiple arrays. |
|
`Sample blend-file <https://wiki.blender.org/wiki/File:Dev-ArrayModifier-Fractal01.blend>`__. |
|
|