## Duik.Automation

The lazy animator's toolkit.

View Source DuAEF_Duik_api.jsxinc, line 47202

# Members

Type: `int`

#### # static readonly NLACompType

The types of the comps in an NLA

##### Properties:

Name | Type | Description
--- | --- | ---
`NONE` | `int` |
`ORIGINAL` | `int` |
`RENDER` | `int` |
`CLIP` | `int` |
`EDIT` | `int` |

View Source DuAEF_Duik_api.jsxinc, line 47209

Type: `string`

#### # static readonly NLAPrefixes

The prefixes for the NLA comp & folder names.
These may be localized, don't use the actual strings!

##### Properties:

Name | Type | Description
--- | --- | ---
`FOLDER` | `string` |
`ORIGINAL` | `string` |
`RENDER` | `string` |
`CLIP` | `string` |
`EDIT` | `string` |

View Source DuAEF_Duik_api.jsxinc, line 47223

# Methods

#### # static addNLAClip(nlaCompopt) → {int}

Creates a clip and adds it to the NLA

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`nlaComp` | `CompItem` | <optional> | A comp belonging to an NLA, the active comp if omitted.

View Source DuAEF_Duik_api.jsxinc, line 47480

Returns:
Success code: 1 if the clip could be created, 0 if the original comp is not found, -1 if the NLA is invalid/not found
Type: `int`

#### # static bakeComposition(modeopt, frameStepopt)

Bakes the expressions to keyframes, and remove all non-renderable layers

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`mode` | `DuAEExpression.BakeAlgorithm` | <optional> | DuAEExpression.BakeAlgorithm.SMART | The algorithm to use for baking the expressions.
`frameStep` | `float` | <optional> | 1.0 | By default, checks one value per keyframe. A lower value increases the precision and allows for sub-frame sampling. A higher value is faster but less precise.

View Source DuAEF_Duik_api.jsxinc, line 47659

#### # static bakeExpressions(modeopt, frameStepopt, selectionModeopt)

Bakes the expressions to keyframes

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`mode` | `DuAEExpression.BakeAlgorithm` | <optional> | DuAEExpression.BakeAlgorithm.SMART | The algorithm to use for baking the expressions.
`frameStep` | `float` | <optional> | 1.0 | By default, checks one value per keyframe. A lower value increases the precision and allows for sub-frame sampling. A higher value is faster but less precise.
`selectionMode` | `Duik.SelectionMode` | <optional> | DuAE.SelectionMode.SELECTED_PROPERTIES | The expressions to bake

View Source DuAEF_Duik_api.jsxinc, line 47617

#### # static copyExpression(propopt) → {string}

Copies the expression from the property, which can be pasted in multiple properties with `Duik.Automation.pasteExpression`.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`prop` | `Property` | `DuAEProperty` | <optional> | The property, the selected/active property if omitted.

View Source DuAEF_Duik_api.jsxinc, line 47546

Returns:
The expression.
Type: `string`

#### # static effector(compopt)

Creates a spatial effector to control the selected properties.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`comp` | `CompItem` | <optional> | The composition containing the effector. The active composition by default.

View Source DuAEF_Duik_api.jsxinc, line 47692

#### # static effectorMap(mapLayer, propsopt)

Creates a map (texture) effector to control the selected properties.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`mapLayer` | `AVLayer` |  | The layer to use as a texture/map.
`props` | `Array.<Property>` | `Array.<DuAEProperty>` | <optional> | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 47971

#### # static getNLAComps(nlaFolder) → {Array.<CompItem>}

Gets the render, original and edit comps for this NLA

##### Parameters:

Name | Type | Description
--- | --- | ---
`nlaFolder` | `FolderItem` | The NLA Folder

View Source DuAEF_Duik_api.jsxinc, line 47264

Returns:
The compositions in this order: [Original, Edit, Render]. Note that if one is not found, null is returned.
Type: `Array.<CompItem>`

#### # static getNLAFolder(comp) → {FolderItem|null}

Gets the folder containing the NLA Compositions like the given comp.

##### Parameters:

Name | Type | Description
--- | --- | ---
`comp` | `CompItem` | The comp

View Source DuAEF_Duik_api.jsxinc, line 47253

Returns:
The folder or null if the comp is not part of an NLA
Type: `FolderItem` | `null`

#### # static kleaner(propsopt, effectopt) → {PropertyGroup|null}

Adds the Kleaner effect and expression to the properties. The Kleaner (Keyframe Cleaner) makes it quick and easy to interpolate, add anticipation, overlap and follow through to any animation.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> | The properties, the selected properties if omitted (or the selected layers).
`effect` | `PropertyGroup` | <optional> | The pseudo effect to use if it already exists.

View Source DuAEF_Duik_api.jsxinc, line 48088

Returns:
The Kleaner effect (or null if there's no property to setup).
Type: `PropertyGroup` | `null`

#### # static looper(propsopt, effectopt) → {PropertyGroup}

Adds a loop expression and pseudo effect with more options than the loopOut and loopIn expressions.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`props` | `Array.<PropertyBase>` | `DuList.<PropertyBase>` | `PropertyBase` | <optional> | The properties to loop. The selected properties in the active comp if omitted.
`effect` | `PropertyGroup` | <optional> | The pseudo effect to use if it already exists.

View Source DuAEF_Duik_api.jsxinc, line 47522

Returns:
The pseudo-effect
Type: `PropertyGroup`

#### # static motionTrail(createNewLayeropt, layersopt)

Draws a trail following the selected layers.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`createNewLayer` | `Boolean` | <optional> | false | Option to create a new layer for each trail.
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49879

#### # static moveAway(layersopt)

Adds a control to move the layers away from their parent.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49481

#### # static NLAType() → {Duik.Automation.NLACompType}

Checks if the given comp is part of an NLA

View Source DuAEF_Duik_api.jsxinc, line 47235

Returns:
The type of the comp; Duik.Automation.NLACompType.NONE if it's not part of an NLA.
Type: `Duik.Automation.NLACompType`

#### # static paintRig(layersopt)

Rigs paint effects and brush strokes to animate them more easily.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 50194

#### # static pasteExpression(propsopt, expressionopt)

Pastes the expression previously copied with `Duik.Automation.copyExpression`.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`props` | `Array.<Property>` | `Array.<DuAEProperty>` | <optional> | The properties where to paste the expression, the selecte properties if omitted.
`expression` | `string` | <optional> | A specific expression to paste.

View Source DuAEF_Duik_api.jsxinc, line 47568

#### # static random(separateDimensionsopt, individualControlsopt, propsopt)

Adds a completely random animation to the selected properties.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`separateDimensions` | `Bool` | <optional> | false | Use one value for each dimension/channel.
`individualControls` | `Bool` | <optional> | false | Use one control for each of the properties.
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> |  | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 49271

#### # static randomizeKeyTimes(min, max, offsetopt, gaussianopt, propsopt)

Shuffles the key times (moves them in time).

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`min` | `int` |  |  | The minimum value, in frames.
`max` | `int` |  |  | The maximum value, in frames.
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> |  | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 49741

#### # static randomizeKeyValues(xMinopt, xMaxopt, yMinopt, yMaxopt, zMinopt, zMaxopt, offsetopt, separateopt, gaussianopt, propsopt)

Assigns random values to the values of the selected keyframes.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`xMin` | `float` | <optional> |  | The minimum X Value
`xMax` | `float` | <optional> |  | The maximum X Value
`yMin` | `float` | <optional> |  | The minimum Y Value
`yMax` | `float` | <optional> |  | The maximum Y Value
`zMin` | `float` | <optional> |  | The minimum Z Value
`zMax` | `float` | <optional> |  | The maximum Z Value
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`separate` | `Boolean` | <optional> | true | If true, sets a different value for all axis. If false, use the same value for all axis, ignore Y and Z values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> |  | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 49811

#### # static randomizeLayerIndices(min, max, offsetopt, gaussianopt, layersopt)

Shuffles the layer indices (their position in the layer stack).

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`min` | `int` |  |  | The minimum value, in frames.
`max` | `int` |  |  | The maximum value, in frames.
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49631

#### # static randomizeLayerInPoints(min, max, offsetopt, gaussianopt, layersopt)

Shuffles the layer in points.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`min` | `int` |  |  | The minimum value, in frames.
`max` | `int` |  |  | The maximum value, in frames.
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49668

#### # static randomizeLayerOutPoints(min, max, offsetopt, gaussianopt, layersopt)

Shuffles the layer out points.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`min` | `int` |  |  | The minimum value, in frames.
`max` | `int` |  |  | The maximum value, in frames.
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49706

#### # static randomizeLayerTimes(min, max, offsetopt, gaussianopt, layersopt)

Shuffles the layer start times (moves them in time).

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`min` | `int` |  |  | The minimum value, in frames.
`max` | `int` |  |  | The maximum value, in frames.
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49597

#### # static randomizeValues(xMinopt, xMaxopt, yMinopt, yMaxopt, zMinopt, zMaxopt, offsetopt, separateopt, gaussianopt, propsopt)

Assigns random values to the properties at the current time.
This method creates keyframes if the properties are animated.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`xMin` | `float` | <optional> |  | The minimum X Value
`xMax` | `float` | <optional> |  | The maximum X Value
`yMin` | `float` | <optional> |  | The minimum Y Value
`yMax` | `float` | <optional> |  | The maximum Y Value
`zMin` | `float` | <optional> |  | The minimum Z Value
`zMax` | `float` | <optional> |  | The maximum Z Value
`offset` | `Boolean` | <optional> | true | If true, offsets the current values. If false, sets absolute values.
`separate` | `Boolean` | <optional> | true | If true, sets a different value for all axis. If false, use the same value for all axis, ignore Y and Z values.
`gaussian` | `Boolean` | <optional> | true | If true, uses random values with a gaussian distribution instead of true random values.
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> |  | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 49530

#### # static removeExpressions(keepPostExpressionValueopt, propsopt)

Removes the expressions from the properties.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`keepPostExpressionValue` | `Boolean` | <optional> | true | Set to false to just remove the expressions and get back the pre expression value.
`props` | `Array.<Property>` | `Array.<DuAEProperty>` | <optional> |  | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 47592

#### # static rigWalk(ctrls)

Animates the given controllers with a wolk/run cycle.

##### Parameters:

Name | Type | Description
--- | --- | ---
`ctrls` | `Object` | The controllers to setup. An object containing these layers: `ctrls.head` The head controller `ctrls.neck` The neck controller `ctrls.torso` The torso controller `ctrls.spine` The spine controller `ctrls.hips` The hips controller `ctrls.body` The body controller `ctrls.rHand` The right hand controller `ctrls.lHand` The left hand controller `ctrls.rFoot` The right foot controller `ctrls.lFoot` The left foot controller Note that some of these may be undefined/null.

View Source DuAEF_Duik_api.jsxinc, line 50433

#### # static setupNLA(compopt, selectedPropsopt, transformPropsopt, effectPropsopt, layerTypesopt, propsopt)

Sets up a non-linear animation comp.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`comp` | `CompItem` | <optional> |  | The composition to set up. The active composition if omitted.
`selectedProps` | `Boolean` | <optional> | true | Use only currently selected properties if true, all properties (according to the other options) if false.
`transformProps` | `Boolean` | <optional> | true | If true, filters only properties in the transform group of the layers. Ignored if selectedProps is true.
`effectProps` | `Boolean` | <optional> | false | If true, filters only properties in effects. Ignored if selectedProps is true.
`layerTypes` | `Boolean` | <optional> | [Duik.Layer.Type.CONTROLLER] | The types of layer to setup if there's no selected layer; if empty, will setup all layers.
`props` | `Array.<PropertyBase>` | `DuList.<PropertyBase>` | <optional> |  | A list of properties to set up. In case this parameter is provided, all other parameters are ignored.

View Source DuAEF_Duik_api.jsxinc, line 47301

#### # static swink(propsopt) → {Array.<DuAEProperty>}

Adds the Swink effect and expression to the properties. The Swink (Swing and Blink) makes the property swing between two values, with optional controls on the interpolation.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 48907

Returns:
The Swink effects.
Type: `Array.<DuAEProperty>`

#### # static timeRemap(layersopt)

Activates the time remapping on the layers, adjusts the keyframes and adds a loop effect.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 50148

#### # static walk(controllersopt)

Animates the selected character using a procedural walk or run cycle.

##### Parameters:

Name | Type | Attributes | Description
--- | --- | --- | ---
`controllers` | `Array.<Layer>` | `DuList.<Layer>` | <optional> | The controllers to setup. If omitted, will get the selected controllers, or all the controllers of the current comp.

View Source DuAEF_Duik_api.jsxinc, line 50364

#### # static wheel(layersopt)

Automates the rotation of layers as wheels

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`layers` | `AVLayer` | `Array.<AVLayer>` | `DuList.<AVLayer>` | <optional> | DuAEComp.getSelectedLayers() | The layers

View Source DuAEF_Duik_api.jsxinc, line 49405

#### # static wiggle(separateDimensionsopt, individualControlsopt, propsopt)

Adds a random but smooth animation to the selected properties.

##### Parameters:

Name | Type | Attributes | Default | Description
--- | --- | --- | --- | ---
`separateDimensions` | `Bool` | <optional> | false | Use one value for each dimension/channel.
`individualControls` | `Bool` | <optional> | false | Use one control for each of the properties.
`props` | `Array.<PropertyBase>` | `Array.<DuAEProperty>` | `DuList.<PropertyBase>` | `PropertyBase` | `DuAEProperty` | <optional> |  | The properties, the selected properties if omitted (or the selected layers).

View Source DuAEF_Duik_api.jsxinc, line 49047