You are on page 1of 387

Animation Nodes Manual

Release 2.0

Jacques Lucke

July 15, 2017


Contents

1 User Guide 3
1.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Subprograms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

2 Developer Guide 301


2.1 Setup Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
2.2 Node Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
2.3 Socket Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
2.4 Node API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
2.5 Data Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
2.6 Documentation Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

3 Release Notes 317


3.1 Release Notes for Version 1.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
3.2 Release Notes for Version 1.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
3.3 Release Notes for Version 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347

4 External Links 383

i
ii
Animation Nodes Manual, Release 2.0

Welcome to the official manual of Animation-Nodes (AN).


AN is a node based visual scripting system designed for motion graphics in Blender.

Contents 1
Animation Nodes Manual, Release 2.0

2 Contents
CHAPTER 1

User Guide

Installation

How to Install?

0. Uninstall any old version of Animation Nodes. Having it installed multiple times for the same version causes
conflicts.
1. Downloaded a recent build for your operating system. If no build suits you, then you might want to compile it
yourself (see developers guide) or contact a developer.
2. Open Blender (preferably the newest version)
3. Go to the User Preferences in the Addon tab.
4. Click Install from File and choose the file you downloaded.
5. Activate the add-on and you are done.
You can now find the Animation-Nodes editor in the node editor.

Important: Checkout the troubleshooting section below if you have any installation problems.

How to Uninstall?

1. Disable the addon and save the user preferences.


2. Restart Blender and remove Animation Nodes.

Note: Animation Nodes must not be active in the session in which it will be removed. This is because some files
cannot be removed once they are loaded. This usually is not a problem with other addons because they don’t use

3
Animation Nodes Manual, Release 2.0

Cython.

Troubleshooting

When Animation Nodes fails to start it should show an error message. Please read it, often it already contains
information on what you can do.

The addon sometimes depends on features that are only in newer versions of Blender. So the first thing should be to
update your Blender version.
Then make sure that you actually downloaded a build for your operating system (Linux, Windows, macOS and possibly
others).
If you use Windows try to install this first.
One problem on Linux systems is that the builds don’t seem to work everywhere. We haven’t found a real solution (a
build that works everywhere) yet. Therefor we provide multiple Linux builds and you have to check which one works
for you.
Animation Nodes depends on numpy. If you downloaded unofficial Blender versions it is possible that numpy is not
included in those (the error message should tell you this). If this is the case you can either download another Blender
build (preferably an official one) or you have to install numpy manually yourself.
If you still didn’t manage to install Animation Nodes you have two options:
1. Open a new issue on Github and ask for help. Please provide the relevant data about your computer (OS, Python
version, Blender version, ...)
2. Compile Animation Nodes yourself. You can learn more about that in the developer guide.

4 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Getting Started

Interface

Much of the interface is located in the node editor in blender while some of the interface exist in other regiones like
the 3D viewport.

Node Menu

To add a new node, you can open the Node Menu by pressing Shift+A like other node systems. The menu contains
a lot of submenus. The menu includes all nodes in AN except for passive nodes which are usually added automatically
or by searching for them, such nodes are like the Converter and Convert To Integer List node.

Node Search

The search box can be opened by pressing Ctrl-A, it enables you to quickly find and insert nodes by their names.
Some nodes have multiple search tags to make it easier to find them. Search box can find any node in AN even if they
were passive from the node menu.

1.2. Getting Started 5


Animation Nodes Manual, Release 2.0

Node Settings

Nodes include multiple settings types, settings that regularly changes are drawn inside nodes directly for faster work-
flow, settings that doesn’t change regularly are drawn in a custom panel in the properties menu to avoid clustering the
UI.

Inside the Node

Settings that regularly changes are drawn inside nodes, for example:

6 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

Settings that doesn’t change regularly are drawn in a custom panel called Advanced Node Settings. The settings
inside are always for the currently active node.

1.2. Getting Started 7


Animation Nodes Manual, Release 2.0

Node Panel

Sockets (Inputs and Outputs) of every node can be hidden or unhidden through this panel by pressing the “eye” next
to the desired socket. Some nodes like subprograms inputs allows reordering of sockets by using the arrows. You can
also specify the name and lable of the node from this panel. Name has to be unique.

Tree Settings

The tool menu in the node editor in Animation Nodes contain settings and information regarding the nodetree itself
and not individual nodes.

8 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Auto Execution Panel

Includes options related to auto execution of the node tree.

Developer

Includes options related to inspecting, profilling and debugging node trees.

Overview

Includes some information about the node tree like the execution time. The statistics button draws a table that include
information about the number and types of nodes in the node tree.

Animation Nodes Tree

This panel includes manual execution button and the scene that the node tree belongs too.

1.2. Getting Started 9


Animation Nodes Manual, Release 2.0

• Edite Node labels - If enabled, a text box will appear in every node that lets you edit the label of the node. This
is helpful if you want to organize you node tree after you finish building it.

3D View

ID

Includes some options related to some specific ID Key node.

Data Input

Displays the the data input nodes (like integer input) inside the panel if Show In Viewport is enabled. (See one of the
data input nodes)

Execution

Animation Nodes takes you nodes tree and convert it into code then execute that code to see the actual result of it.
You may notice that when you start using AN, a number is changing very rapidly at the top left corder of the node
editor, that number is the time it took to execute the node tree.
By default, AN execute the node tree as much as possible for the best and smoothest update of the scene. However,
this exhauste the CPU and slows down other areas in blender. It doesn’t make sense to execute the node tree even if
nothing changes in your node tree or the scene, so executing the node tree that much may not be needed.

10 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Animation Nodes provide you with an automatic and a manual execution systems that suite you workflow. Possible
execution systems are listed below.

Automatic Execution

By default auto execution is enabled and cab be found in the auto execution panel in the tool menu.

Always

Always option is enabled by default and it does what we stated before, that is, execute the node tree as much as
possible. This option should never be used unless absolutely needed. A possible uses for it is as follows:
• A lot of variables in the scene are changing regularly and constantly assuming AN uses them. If they are just
couple of variables then triggers should be used, see below.
• When running a simulation that need to run constantly, for instance, when simulating a system using eulers
method.
Notice how AN execute (execution time changes) constantly even if nothing is changing.
If always is disabled, then you have multiple options described below.

Tree Changed

If enabled, the node tree will execute everytime the node tree changes, that is, a node is added or removed. You
probably want to enable this after you disable alwayse because it is probable that you need to execute the node tree
everytime you change something in your tree.
Notice how the tree execute when I add a new node.

Frame Changed

If enabled, the node tree will execute everytime the current frame of the scene changes. You probably want to enable
this when ever you have a node tree that depend on time.
Notice how the tree execute when ever the current frame changes.

Property Changed

If enabled, the node tree will execute everytime a property changes, that is, an input or an option of the node is changed.
You probably want to enable this after you disable alwayse because it is probable that you need to execute the node
tree everytime you change something in your tree. Notice that chaning a value in the advanced node settings won’t
necessarily execute the node tree even if this option is enabled.
Notice how the tree execute when I change a value in the node tree.

Minimum Time Difference

This value defines the time between each two consecutive executions.

1.2. Getting Started 11


Animation Nodes Manual, Release 2.0

Triggers

Triggers are basically “watchers” that are hired by you to watch for a change in some property you told them to watch.
They tell AN to execute the node tree everytime the property they watch change.
For instance, lets say I am using the location of a cube object in my node tree and I want to execute everytime the
location changes, so I simply add a trigger and tell it to watch for the location of the cube object.
There are two options:
• Object Property - An object is choosen and the property ID is defined relative to it. An example for such IDs
are: location, euler_rotation, location.x ... .
• Scene Property - The peth of the property has to be fully defined, for instance,
bpy.data.objects["Cube"].modifiers["Subsurf"].levels whic watches for the sub-
surface levels of a modifier.

Errors

During the execution of the node tree, some errors may be encountered, those errors can either be fatal or not, below
is a presentation for both.

NonFatal Error

Those errors are reported inside nodes and they does not stop execution, an example:

The barycentric node simply expect 3 vectors for the source inputs but not were given, to fix the error, just input a
vector list. When such eeror occure, the node either does nothing or return the default value of the output, since the
output is a vector in thise case, then it is initialized by the vector (0,0,0).

12 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Fatal Errors

Fatal errors stop the execution of the whole node tree and have to be solved. Such errors occure when you try to do
something with a node that the developers didn’t put in consideration, it could laso be a bug and should be reported in
that case. An example for such error can be seen in the expression node:

The expression node has an option to Debug the expressions you write before executing them. I disabled it for the
second one and intentionally made a sytax error. The first node reported the error and didn’t stop the execution (A
non-fata error), the second node however stoped the execution and colored the node editor’s borders red to indicate a
fatal error. To fix that error you just solve the syntax error or just enable debug option.

Data

There are multiple data types in Animation Nodes, ones that mathematical like integers, floats, vectors and quaternions
and ones that represent a data structure like BVH trees, mesh data and KD trees. Most of the data types have their own
list data type. So integers have integers lists, vectors have vector lists and so on.

Copying Data

Animation Nodes automatically copy data if needed. For example, if you have a list of vectors and you input it to a
single shuffl node, the data don’t need to be copied and the original list is shuffled. If however I input it to another
shuffle node, the data has to be copied because two nodes are using it, if it wasn’t copied, then the second node will
shuffle the shuffled list and not the list itself.
Animation Nodes have an option to identify nodes that copy data, you can enable by chaning Color Mode to Needed
Copies in the developer panel.

1.2. Getting Started 13


Animation Nodes Manual, Release 2.0

Notice that objects are the only data that should be copied, simple data types like integers and floats are just bits and
are copied automatically when operated on. Some other data types can not be copied, but this isn’t really essential for
you to know.

Generic Data Type

Sometimes there isn’t a data type that may suite your need, so it can be stored in what is known as the generic data
type. For instance, nested lists, that is, a list of lists can not be stored in any of the available data types, so we store
them in a generic data type.
However, when using generic data types in a node, they have to be converted back to a data type AN knows, for
instance, if we have a list of float lists, getting the first list of the this generic list would return a generic data type and
not a float list, if I want to get the first float in the output list, I have to convert it to an AN float list first, this can be
done using the converter node:

14 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Notice that I could have get the element as generic element then convert it to a float at the end, and it would have
worked just the same.

Convert Node

The converter node convert and data type to any other data type if possible, the node automatically detect input and
outputs, so if you want it to stope changing types, you have to chekc the lock button and choose the tpe mmanually by
pressing on the only button there.

Vectorization

Some nodes in AN are said to be “vectorized”. Vectorization is the ability for the node to operate on lists just as it
can operate on individual values. Vectorization can either be element wise, that is, two equal lists can be operated
on element by element or it can be streamed, that is, a value is reapeated to match the length of a list and then the
operation is done element by element.

1.2. Getting Started 15


Animation Nodes Manual, Release 2.0

The first math nodes is streamed, it simply multiply every value in the float list by 1. The second math node is
elementwise, it return a list of the same length where the first element is the multiple of first elements in both lists,
second element is the multiple of the second elements in both list and so on.
Vectorized nodes can be identified from their sockets, their sockets are semitransparent (More solid than lists, see the
second socket in the first math node in the example above).

Nodes

16 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Screenshot [Shift-A]

1.3. Nodes 17
Animation Nodes Manual, Release 2.0

Here you will find explanations for all the different nodes.

Number

Number category contains nodes that process and generates integers and floats.

Integer

The integer node outputs an integer number.

Advanced Node Settings

• Show in viewport - If this option is enabled, the property will show up in the Data Input panel in the AN tab
in the Tool Shelf. The name of that property is defined by the node label if it is set. This option is useful if one
want to edit some parameters in the node tree directly from within the 3d viewport without having to go the
node editor.

18 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Float

The float node outputs a floating point number.

Advanced Node Settings

• Show in viewport - If this option is enabled, the property will show up in the Data Input panel in the AN tab
in the Tool Shelf. The name of that property is defined by the node label if it is set. This option is useful if one

1.3. Nodes 19
Animation Nodes Manual, Release 2.0

want to edit some parameters in the node tree directly from within the 3d viewport without having to go the
node editor.

Integer List

Description

This node is used to create an arbitrary list of integers. A new integer can be added with the New Input button. A new
integer can also be added by plugging it into the transparent socket.

20 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Integer - An integer at the index 0.


• Integer - An integer at the index 1.
• Integer - ...

Outputs

• Integer list - A list that contain all the input integers.

Advanced Node Settings

• Change type - Change the type of the integer list to another list type.
• Hide Inputs - Hide all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Float List

Description

This node is used to create an arbitrary list of floats. A new float can be added with the New Input button. A new float
can also be added by plugging it into the transparent socket.

1.3. Nodes 21
Animation Nodes Manual, Release 2.0

Inputs

• Float - A float at the index 0.


• Float - A float at the index 1.
• Float - ...

Outputs

• Float list - A list that contains all the input floats.

Advanced Node Settings

• Change type - Changes the type of the float list to another list type.
• Hide Inputs - Hides all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Integer Range

Description

This node is used to generate an integer list that represents an integer arithmetic sequence.

22 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Amount - The length of the arithmetic sequence which is also the length of the output integer list.
• Start - It is the starting integer of the arithmetic sequence.
• Step - The difference between each two consecutive terms in the sequence.

Outputs

• Integer list - An integer list that contains the generated integers.

Advanced Node Settings

• N/A

Examples of Usage

Float Range

Description

This node is used to generate a float list that represents an arithmetic sequence.

1.3. Nodes 23
Animation Nodes Manual, Release 2.0

Options

• Start/Step - This option allow you to define the arithmetic sequence by a starting value and Step value which is
the difference between each two consecutive terms.
• Start/Stop - This option allow you to define the arithmetic sequence by a starting value and an end value. In
this case, the difference between each two consecutive terms is the reciprocal of the Stop value.

Inputs

• Amount - The length of the arithmetic sequence which is also the length of the output integer list.
• Start - It is the starting value of the arithmetic sequence.
• Step - It is the difference between each two consecutive terms of the arithmetic sequence. (Only available in the
Start/Step option)
• Stop - It is the end value of the arithmetic sequence, in this case, the difference between each two consecutive
terms is the reciprocal of its value. (Only available in the Start/Stop option)

Outputs

• Float List - A float list that contains the generated floats.

Advanced Node Settings

• N/A

Examples of Usage

Random Number

Description

This node generates a random float between a minimum and a maximum value.

24 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Create List - It is the button you see beside the Node Seed, if is enabled, the output will be a list of random
floats.

Inputs

• Seed - Seed for the random generator, Where different seed generate different random number.
• Min - A float value that the generated number won’t deceed.
• Max - A float value that the generated number won’t exceed.
• Count - The number of random floats to generate. (Only available if Create List is enabled)

Outputs

• Number - A random float between the minimum and the maximum value.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Random Number nodes in a loop while using the index as a seed, you can change the extra seed
to get different results from the other nodes.
Animation Nodes automatically change the Node Seed when you duplicate or add a new Random Number node.

Examples of Usage

Number Wiggle

Description

This node is a 1D perlin noise generator, You can think of it as random numbers that are smoothly connected to each
other.
It is a function of variable Evolution, Which means every value of the variable Evolution has a corresponding value
calculated based on the node options and this value is the output of the node.

1.3. Nodes 25
Animation Nodes Manual, Release 2.0

Inputs

• Seed - Seed for the random generator, where different seed generate different noise.
• Evolution - A float that is the variable of the function wiggle.
• Speed - It is the frequency of the noise or the rate of change of the values.
• Amplitude - It is the range of the output values in both positive and negative direction, Means if the Amplitude
is equal to 1, the values will range between -1 and 1.
• Octaves - It is the number of levels of details.
• Persistance - It is the strength of the details added from Octaves

Outputs

• Number - The output of the noise function at the variable Evolution.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Number Wiggle nodes in a loop while using the index as a seed, you can change the extra seed
to get different results from the other nodes.
Animation Nodes automatically change the Node Seed when you duplicate or add a new Number Wiggle node.

26 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Mix floats

Description

This node mixes between 2 floats based on a factor.

Inputs

• Factor - A float that controls the amount of each float input to the output, Where 0 means the first float only and
1 means the second float only.

Outputs

• Result - The result of mixing the two floats by the factor.

Advanced Node Settings

• N/A

Note

By how the Mix floats works, A factor that is larger than 1 won’t be clamped but rather multiplied to the second float
that’s why the node has an option to Clamp Factor. So if Clamp factor is enabled, any factor that is larger than 1 will
return the second float.

Examples of Usage

Map Range

Description

This node remaps a value from a defined interval to a new interval.

1.3. Nodes 27
Animation Nodes Manual, Release 2.0

Every value has a relative position in a specific interval, this node find a new value that match the relative position but
in a new defined interval.

Options

• Clamp - If enabled, values will be clamped to the interval [0,1].


• Interpolation - If enabled, values will be evaluated at the input interpolation before being output. (Only avail-
able when clamp is enabled, as interpolations work on normalized intervals only)

Inputs

• Value - A float that should be remaped.


• Input Min - The start of the original interval.
• Input Max - The end of the original interval.
• Output Min - The start of the new interval.
• Output Max - The end of the new interval.
• Interpolation - If interpolation is enabled, the output value will be evaluated based on this input interpolation.

Outputs

• Value - The value after remapping

Advanced Node Settings

• N/A

Examples of Usage

Clamp

28 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node is used to ensure a value is in a certain range. Any value outside of the defined range will be clamped /
replaced by the maximum or minimum value.

Inputs

• Value - The input value for clamping.


• Min - If the input value is less than this value, the output will be this value.
• Max - If the input value is more than this value, the output will be this value.

Outputs

• Value - The clamped value.

Advanced Node Settings

• N/A

Examples of Usage

Convert Angle

Description

This node allows you to convert from Degrees to Radians or from Radians to Degrees.

1.3. Nodes 29
Animation Nodes Manual, Release 2.0

Options

• Degree To Radian - Converts input degree angle to radian.


• Radian To Degree - Converts input radian angle to degree.

Inputs

• Degree/Radian - The angle to convert.

Outputs

• Degree/Radian - The converted angle.

Advanced Node Settings

• N/A

Examples of Usage

Round Number

Description

This node rounds floats to a defined number of decimals.

Inputs

• Number - A float to be rounded.

Outputs

• Result - Rounded number.

Advanced Node Settings

N/A

30 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Math

Description

This node performs 26 math operations:


• Add - Adds input A to input B.
• Subtract - Subtract input B from input A.
• Multiply - Multiplies input A by input B.
• Divide - Divides input A by input B.
• Sine - Calculate the sine of input A.
• Cosine - Claculate the cosine of input A.
• Tangent - Calculate the tangent of input A.
• Arcsine - Calaculate the arcsine of input A.
• Arccosine - Calculate the arccosine of input A.
• Arctangent - Calculate the arctangent of input A.
• Power - Returns input A to the power of input B.
• Logarithm - Returns the logarithm of input A to the base input B.
• Minimum - Returns the smallest value from input A and input B.
• Maximum - Returns the largest value from input A and input B.
• Modulo - Returns the remainder of divinding input A by input B.
• Absolute - Returns the positive value of input A.
• Floor - Returns the whole number of input A.
• Ceiling - Returns the next whole number after input A.
• Square Root - Returns the square root of input A.
• Invert - Flips the sign of input A.
• Reciprocal - Returns the mathematical inverse of input A (1/A).
• Snap - Snaps input A to the whole multiples of the Step Size.
• Arctangent B/A - Returns the arctangent of input B divided by input A.
• Hypotenuse - Returns the length of the hypotenuse given the side length input A and B.
• Copy Sign - Returns input A with the sign of input B.
• Floor Division - Returns the whole number of input A divided by input B.

1.3. Nodes 31
Animation Nodes Manual, Release 2.0

Inputs

• A - Input A.
• B - Input B.
(Inputs are dynamic, Means the node has either one or two inputs based on selected operation.)

Outputs

• Result - The result of the math operation.

Advanced Node Settings

• Remove Quick Settings - You may notice that when duplicating a math node, couple of buttons appear along
with a green check mark. Those are called Quick Settings, clicking on one of the buttons change the type of
the math node to the type of the button. The check mark is a way to tell AN that the current type is what you
want and that you no longer need the menu. This button in the advanced node settings click the check mark for
all math nodes in the node tree.

32 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Notes

• Division by 0 returns 0.0.


• Logarithm with the base <=0 or =1 takes the natural logarithm.
• Modulo by 0 returns 0.0.

Number List Math

Description

This node performs 5 math operations on float and integer lists:


• Add - Adds all the elements of the list.
• Multiply - Multiplies all the elements on the list.
• Min - Returns the smallest number in the list.
• Max - Returns the largest number in the list.
• Average - Returns the average of all the elements of the list.

Inputs

• Number list - A number list, can be integer or float.

Outputs

• Result - The result of the math operation.

Advanced Node Settings

N/A

1.3. Nodes 33
Animation Nodes Manual, Release 2.0

Examples of Usage

Parse Number

Description

This node is used to convert a text that include numbers into a float data type.

Inputs

• Text - The string that should be converted into float.

Outputs

• Number - The float that was extracted from the input text.

Advanced Node Settings

• N/A

Caution

The input text should only include numbers, otherwise the node will return a parsing error.

Examples of Usage

To Integer

Description

This node converts floats into integers using one of 3 algorithms. (See advanced node settings)

34 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Float - A float to convert to integer.

Outputs

• Integer - Output as integer.

Advanced Node Settings

The node has 3 algorithms to do the conversion:


• Floor - It returns only the whole number.
• Ceiling - It returns the next whole number.
• Round - Standard round operation, Where floor is used if the fraction is less than 0.5 and ceiling is used if the
fraction is larger than 0.5.

Examples of Usage

Float To Text

Description

This node forms a text out of a number.

Inputs

• Number - The number to be converted.


• Min Length - The minimum number of numbers in the output text. If The number is too short, zeroes are
inserted to the left of the number to match the input minimum.
• Decimals - The number of decimals in the number, if it exceed the number of bytes of the input number, zeroes
are inserted at the end.
• Insert Sign - A boolean which if true, a plus sign will be added to the left of the number if it was positive.

1.3. Nodes 35
Animation Nodes Manual, Release 2.0

Outputs

• Text - The output text.

Advanced Node Settings

• N/A

Examples of Usage

Vector

Vector category include nodes that process and generate vectors.

Separate Vector

Description

This node takes a 3D vector and returns its components.

Inputs

• Vector - A 3D vector to decompose.

Outputs

• X - The X component of the input vector.


• Y - The Y component of the input vector.
• Z - The Z component of the input vector.

36 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

N/A

Examples of Usage

Combine Vector

Description

This node composes a 3D vector from X,Y,Z components.

Inputs

• X - The X component of the output vector.


• Y - The Y component of the output vector.
• Z - The Z component of the output vector.

Outputs

• Vector - A vector composed of inputs X,Y,Z .

Advanced Node Settings

N/A

Examples of Usage

Vector From Value

Description

This node composes a vector with a uniform value in all of its components.

1.3. Nodes 37
Animation Nodes Manual, Release 2.0

Inputs

• Value - A value that is the X,Y and Z component of the output vector.

Outputs

• Vector - A vector composed of the input value in all of it’s components.

Advanced Node Settings

N/A

Examples of Usage

Vector List

Description

This node is used to create an arbitrary list of vectors. A new vector can be added with the New Input button. A new
vector can also be added by plugging it into the transparent socket.

38 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Vector - A vector at the index 0.


• Vector - A vector at the index 1.
• Vector - ...

Outputs

• Vector list - A list that contain all the input vectors.

Advanced Node Settings

• Change type - Change the type of the vector list to another list type.
• Hide Inputs - Hide all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Random Vector

Description

This node generates a random vector with a defined magnitude.

Options

• Create List - It is the button you see beside the Node Seed, if is enabled, the output will be a list of random
vectors.

1.3. Nodes 39
Animation Nodes Manual, Release 2.0

Inputs

• Seed - Seed for the random generator, where different seed generates different random vector.
• Scale - The magnitude of the generated vector.
• Count - The number of random vectors to generate. (Only available if Create List is enabled)

Outputs

• Vector - A random vector with magnitude equal to input scale.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Random vector nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically changes the Node Seed when you duplicate or add a new Random vector node.

Examples of Usage

Vector Wiggle

Description

This node generates a random vector by generating a 1D perlin noise in all of its components. It is just like a Number
Wiggle node in the vector’s components.

40 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

The inputs are just like Number Wiggle node except for the Amplitude.
• Amplitude - A vector that control the the amplitude of each component’s perlin noise.

Outputs

• Vector - The output vector of the noise functions at the variable Evolution.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Vector Wiggle nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically change the Node Seed when you duplicate or add a new Vector Wiggle node.

Examples of Usage

Mix Vectors

1.3. Nodes 41
Animation Nodes Manual, Release 2.0

Description

This node mixes between 2 vectors based on a factor.

Inputs

• Factor - A float that controls the amount of each vector input to the output, Where 0 means the first vector only
and 1 means the second vector only.

Outputs

• Result - The result vector of mixing the two vectors by the input factor.

Advanced Node Settings

• N/A

Note

How the Mix Vectors works, a factor that is larger than 1 won’t be clamped but rather multiplied to the second float-
that’s why the node has an option to Clamp Factor. So if Clamp factor is enabled, Any factor that is larger than 1 will
return the second vector.

42 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Vector Distance

Description

This node calculates the distance between two points.

Inputs

• Vector A - The coordinates of the first point.


• Vector B - The coordinates of the second point.

Outputs

• Distance - The distance between the two input coordinates.

Advanced Node Settings

• N/A

Examples of Usage

Project Point On Line

Description

This node takes a point and a line and returns information about the projection of this point on that line.

1.3. Nodes 43
Animation Nodes Manual, Release 2.0

Illustration

44 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Point - The coordinates of the point that will be projected.


• Line Start - The coordinates of the line starting point.
• Line End - The coordinates of the line ending point.

Outputs

• Projection - The coordinates of the closest point on the line to the input point. Mathematically this point is the
point that makes a perpendicular line to the input line.
• Projection Factor - It is the ratio between the length of the line formed by the projected point and the input
line’s first point and the length of the input line. Or in more mathematical word, it is the scalar of the convex
combination of the starting and ending point to get the projected point.
• Distance - It is the shortest distance between the input point and the input line, Which is also the distance
between the projected point and the input point.

Advanced Node Settings

• N/A

Project Point On plane

Description

This node takes a point and a plane and returns information about the projection of this point on that plane.

1.3. Nodes 45
Animation Nodes Manual, Release 2.0

Illustration

Inputs

• Point - The coordinates of the point that will be projected.


• Plane Point - A point on the plane.
• Plane Normal - The normal of the plane.

Outputs

• Projection - The coordinates of the closest point on the plane to the input point. Mathematically this point is
the point that makes a perpendicular line to the input plane which also makes a line that is parallel to the plane
normal.
• Signed Distance - It is the shortest distance between the input point and the input plane, Which is also the
distance between the projected point and the input point. Although distances can’t have a negative sign, this
output could have a negative sign if the point lie below the plane while positive if above.

Advanced Node Settings

• N/A

Vector Angle

Description

This node calculates the angle between two vectors.

46 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Vector A - The first vector.


• Vector B - The second vector.

Outputs

• Angle - The Angle between the the two input vectors in radian.
• Rotation Difference - The difference between the quaternion forms of the 2 vectors in a form of a quaternion.

Advanced Node Settings

• N/A

Examples of Usage

Vector Length

Description

This node calculates the magnitude of the input vector.

1.3. Nodes 47
Animation Nodes Manual, Release 2.0

Inputs

• Vector - A vector to calculate its magnitude.

Outputs

• Length - The magnitude of the input vector.

Advanced Node Settings

• N/A

Examples of Usage

Dot Product

Description

This node calculates the dot product of the 2 input vectors.

48 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Vector A - The first vector.


• Vector B - The second vector.

Outputs

• Dot Product - The dot product of the 2 input vectors.

Advanced Node Settings

• N/A

Examples of Usage

Vector Math

Description

This node performs 11 vector math operations:


• Add - Add input vector A to input vector B.
• Subtract - Subtract input vector B from input vector A.
• Multiply - Multiply the components of input vector A by the components of input vector B.
• Divide - Divide the components of input vector A by the components of input vector B.
• Cross product - Returns the cross product of input vector A and input vector B.
• Project - Returns the projection of input vector A onto input vector B.

1.3. Nodes 49
Animation Nodes Manual, Release 2.0

• Reflect - Returns the reflection vector of input vector A with normal as input vector B.
• Normalize - Set the magnitude of the input vector to a specific length.
• Scale - Perform a scalar multiplication to the input vector.
• Absolute - Absolute all the components of the input vector.
• Snap - Snap the the components of the input vector to a defined step size for each component.

Inputs

• Vector A - The first vector.


• Vector B - The second vector.
(Inputs are dynamic, Means the node has either one or two inputs based on selected operation. Those inputs can also
be scalar or vectors based on the operation)

Outputs

• Result - The result of vector math operations.

Advanced Node Settings

• N/A

Notes

• The Project operation will project the vector on a hypothetical straight line that has the same location and slope
of the input line if the input line was shorter than the projection.

50 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Operations

Vector List math

Description

This node performs 2 Vector math operations:


• Add - Add all the vectors in the input list.
• Average - Average the vectors in the input list.

Inputs

• Vector List - The vector list to operate on.

Outputs

• Result - The result of vector math operations.

Advanced Node Settings

• N/A

Examples of Usage

Transform Vector

Description

This node transforms a point based on an input Transformation Matrix.

1.3. Nodes 51
Animation Nodes Manual, Release 2.0

Inputs

• Vector - The vector to transform.


• Matrix - A transformation matrix.

Outputs

• Vector - The new coordinates of the point after transformation.

Advanced Node Settings

• N/A

Examples of Usage

Offset Vector

Description

This node offset a vector based on an input offset vector with an input falloff as a factor.

52 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Start/End - Start will offset the vectors based on the offset vector with the falloff as a factor. End will offset
the vectors based on the offset vector with the inverse falloff as a factor, in other words, all points will be
transformed based on the offset vector and then points will be transformed back to their initial position based on
the offset vector with the falloff as a factor.
• Use Vector List - It is the button you see beside the Start/End options, if is enabled, the node will expect a
vector list to offset and the output will be the offset vector list.

Inputs

• Vector(s) - A vector(s) to offset.


• Falloff - A falloff to use as a factor.
• Offset - The offset vector.

Outputs

• Vector - The new coordinates of the point after offset.

Advanced Node Settings

• N/A

Examples of Usage

Rotation

1.3. Nodes 53
Animation Nodes Manual, Release 2.0

Direction To Rotation

Description

This node converts a direction to a rotation, A vector that defines a direction is inputed and a corresponding rotation is
outputed.

Demonstration

To better understand how this node works, You can think of it as aligning the local Track Axis of the object to the
input Direction Vector.
It is true that the selected local Track Axis is locked to the input direction vector, but that means the object can still
rotate around that vector while maintaining its direction. This node enables you to guide the object rotation around
that axis using another vector, Guide Vector and Guide Axis.
You can also think of the guiding feature as aligning the local Guide Axis of the object to the input Guide Vector.
Here is an example where the Track Axis is set to Z and the Guide Axis is set to X.

Inputs

• Direction - The vector that defines the direction, can be normalized or not.
• Guide - The vector that define the rotation around the Direction Vector.

Outputs

• Euler Rotation - The resultant rotation in the form of Euler Rotation.

54 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Warning

• The Track Axis can never be the Guide Axis because The Track Axis is already locked to the Direction Vector.

Examples of Usage

Rotation To Direction

Description

This node converts input rotation to a corresponding vector.

Demonstration

To better understand how this node works, you can think of it as follows: it gets you the local selected axis of the
object.
In this example, you can see that the resultant vector is always aligned to the selected axis which is Z in this case.

Inputs

• Rotation - The rotation that defines the direction.


• Length - The magnitude of the resultant vector.

Outputs

• Direction - The resultant vector.

1.3. Nodes 55
Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Convert Rotation Types

Description

This node converts from a rotation type to another. It supports :


• Quaternion to Euler.
• Euler to Quaternion.
• Quaternion to Matrix.
• Matrix to Quaternion.
• Euler to Matrix.
• Matrix to Euler.
• Quaternion to Axis Angle.
• Axis Angle to Quaternion.

Inputs

Inputs are defined based on the conversion type.

Outputs

Outputs are defined based on the conversion type.

Advanced Node Settings

• N/A

56 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Separate Euler

Description

This node takes an euler and returns its components either in radian or degrees.

Inputs

• Euler - An euler to decompose.

Outputs

• X - The X component of the input euler in radian.


• Y - The Y component of the input euler in radian.
• Z - The Z component of the input euler in radian.
Note: You can convert the outputs to degrees by checking Use Degree.

Advanced Node Settings

• N/A

Examples of Usage

Combine Euler

1.3. Nodes 57
Animation Nodes Manual, Release 2.0

Description

This node composes an euler from X,Y,Z components.

Inputs

• X - The X component of the euler in radian.


• Y - The Y component of the euler in radian.
• Z - The Z component of the euler in radian.
Note: You can input degrees by checking Use Degree.

Outputs

• Euler - The composed euler.

Advanced Node Settings

• N/A

Examples of Usage

Vector List

Description

This node is used to create an arbitrary list of eulers. A new euler can be added with the New Input button. A new
euler can also be added by plugging it into the transparent socket.

58 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Euler - An Euler at the index 0.


• Euler - An Euler at the index 1.
• Euler - ...

Outputs

• Euler list - A list that contain all the input eulers.

Advanced Node Settings

• Change type - Change the type of the euler list to another list type.
• Hide Inputs - Hide all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Vector Math

1.3. Nodes 59
Animation Nodes Manual, Release 2.0

Description

This node performs 7 euler math operationa:


• Add - Add corresponding elements of the input eulers.
• Subtract - Subtract corresponding elements of the input eulers.
• Multiply - Multiply corresponding elements of input eulers.
• Divide - Divide corresponding elements of input eulers.
• Scale - Multiply all the elements of the input euler by the input Scale.
• Absolute - Returns the absolute value of the input euler.
• Snape - Snape indivitual elements of the input euler to a step size defined for each element by the input Step
Size euler.

Inputs

• Euler A - The first euler.


• Euler B - The second euler.
(Inputs are dynamic. This means the node has either one or two inputs based on selected operation. These inputs can
also be scalar or eulers based on the operation)

Outputs

• Result - The result of euler math operations.

60 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Notes

• All of the operations treat eulers in radian.

Examples of Usage

Mix Vectors

Description

This node mixes between 2 eulers based on a factor.

Inputs

• Factor - A float that controls the amount of each euler input to the output, Where 0 means the first euler only
and 1 means the second euler only.

Outputs

• Result - The result euler of mixing the two eulers by the input factor.

1.3. Nodes 61
Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Note

The way Mix Eulers works, a factor that is larger than 1 won’t be clamped but rather multiplied to the second euler.
That’s why the node has an option to Clamp Factor. So if Clamp factor is enabled, Any factor that is larger than 1 will
return the second euler.

Examples of Usage

Random Euler

Description

This node generates a random euler with a defined range.

Inputs

• Seed - Seed for the random generator, where different seed generates different random euler.
• Scale - The range in positive and negative directions in radian.

Outputs

• Euler - A random euler.

Advanced Node Settings

• N/A

62 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Random euler nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically changes the Node Seed when you duplicate or add a new Random euler node.

Examples of Usage

Vector Wiggle

Description

This node generates a random euler by generating a 1D perlin noise in all of its components. It is just like a Number
Wiggle node in the euler’s components.

Inputs

The inputs are just like Number Wiggle node except for the Amplitude.
• Amplitude - An euler that controls the the amplitude of each component’s perlin noise.

Outputs

• Euler - The output euler of the noise functions at the variable Evolution.

1.3. Nodes 63
Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Euler Wiggle nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically change the Node Seed when you duplicate or add a new Euler Wiggle node.

Examples of Usage

Separate Quaternion

Description

This node takes a quaternion and returns its components.

Inputs

• Quaternion - A quaternion to decompose.

Outputs

• W - The W component of the input quaternion.


• X - The X component of the input quaternion.

64 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Y - The Y component of the input quaternion.


• Z - The Z component of the input quaternion.

Advanced Node Settings

N/A

Examples of Usage

Combine Quaternion

Description

This node composes a quaternion from W,X,Y,Z components.

Inputs

• W - The W component of the output quaternion.


• X - The X component of the output quaternion.
• Y - The Y component of the output quaternion.
• Z - The Z component of the output quaternion.

Outputs

• Quaternion - A quaternion composed of inputs W,X,Y,Z.

Advanced Node Settings

N/A

1.3. Nodes 65
Animation Nodes Manual, Release 2.0

Examples of Usage

Quaternion List

Description

This node is used to create an arbitrary list of quaternions. A new quaternion can be added with the New Input button.
A new quaternion can also be added by plugging it into the transparent socket.

Inputs

• Quaternion - A quaternion at the index 0.


• Quaternion - A quaternion at the index 1.
• Quaternion - ...

Outputs

• Quaternion list - A list that contain all the input quaternions.

Advanced Node Settings

• Change type - Change the type of the quaternion list to another list type.
• Hide Inputs - Hide all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

66 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Quaternion Math

Description

This node carries 13 quaternion math operation:


• Add - Adds input quaternion A to input quatrnion B.
• Subtract - Subtracts input quaternion B from input quaternion A.
• Combine Rotation - Hamilton product of input quaternion A by input quaternion B.
• Rotation Difference - Returns a quaternion that is the difference between input quaternion A and input quater-
nion B.
• Multiply - It multiplies the elements of input quaternion A by input quaternion B (element wise operation).
• Divide - It divides the elements of input quaternion A by input quaternion B (element wise operation).
• Cross Product - Returns a quaternion that is perpendiculat to the input quaternions.
• Normalize - Sets the magnitude of the input quaternion to a specific length.
• Scale - Perform a scalar multiplication to the input quaternion.
• Absolute - Absolute all the components of the input quaternion.
• Invert - Multiply the input quaternion by -1.
• Conjugate - Multiply the vector part of the quaternion by -1.
• Snap - Snaps the components of the input quaternion to a defined step size for each component.

1.3. Nodes 67
Animation Nodes Manual, Release 2.0

Operations on Quaternion:

• Addition - Elementwsie addition of the quaternion elements.


• Subtraction - Elementwsie subtraction of the quaternion elements.
• Combine Rotation - This is what is known as Hamilton product, it is basically like rotating an object by the
first quaternion then rotating by the second to get the final rotation of the object.
• Rotation Difference - Returns a quaternion that if combined with the first quternion will produce the second
quaternion.
• Multiply - Elementwsie multiplication of the quaternion elements.
• Divide - Elementwsie division of the quaternion elements.
• Cross Product - The cross product of 2 quaternions is a Hamilton Product. In fact we can express quaterniom
multiplication using Cross Product.
• Normalization - This operation just set the length of the quaternion to a specific length, and it doesn’t change
that quaternion in terms of it’s representation of rotations,because the quaternion still maintain its direction in
the 4D space and when used as rotation, it get normalized and stay the same.
• Scale - Just like normalize but it multiplies the current length by a factor.
• Absolute - It Absolutes all the elements of the quaternion.
• Invert - Multiplies all the elements of the quaternion by -1.
• Conjugate - The conjugate of the quaternion w,x,y,z = w,-x,-y,-z.
• Snap - Snap the individual elements to a specific step size. Put in mind that quaternion rotation is not linear, so
you may not get what you want out of quaternion.

68 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Quaternion A - The first quaternion.


• Quaternion B - The second quaternion.
(Inputs are dynamic, Means the node has either one or two inputs based on selected operation. Those inputs can also
be scalar or quaternion based on the operation)

Outputs

• Result - The result of quaternion math operations.

Advanced Node Settings

• N/A

Examples Of Usages

Mix Quaternions

Description

This node mixes between 2 quaternions based on a factor.

1.3. Nodes 69
Animation Nodes Manual, Release 2.0

Inputs

• Factor - A float that controls the amount of each quaternion input to the output, where 0 means the first quater-
nion only and 1 means the second quaternion only.

Outputs

• Result - The resultant quaternion of mixing the two quaternions by the input factor.

Advanced Node Settings

• N/A

Note

The way Mix Quaternions works, a factor that is larger than 1 won’t be clamped but rather multiplied to the second
quaternion. That’s why the node has an option to Clamp Factor. So if Clamp factor is enabled, Any factor that is
larger than 1 will return the second quaternion.

Examples of Usage

Random Quaternion

Description

This node generates a random quaternion.

Inputs

• Seed - Seed for the random generator, where different seed generates different random quaternion.
• Scale - Scale of the quaternion elements.

Outputs

• Quaternion - A random quaternion.

70 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g., when
using multiple Random quaternion nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically changes the Node Seed when you duplicate or add a new quaternion vector node.

Examples of Usage

Quaternion Wiggle

Description

This node generates a random quaternion by generating a 1D perlin noise in all of its components. It is just like a
Number Wiggle node in the quaternion’s components.

Inputs

The inputs are just like Number Wiggle node except for the Amplitude.

1.3. Nodes 71
Animation Nodes Manual, Release 2.0

• Amplitude - A quaternion that controls the the amplitude of each component’s perlin noise.

Outputs

• Quaternion - The output quaternion of the noise functions at the variable Evolution.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed. e.g. when
using multiple Quaternion Wiggle nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically change the Node Seed when you duplicate or add a new Quaternion Wiggle node.

Examples of Usage

Combine Quaternion Rotations

Description

This node takes a list of quaternions and rotates the first quaternion by the next quaternion in the list till the end and
the result is output as a quaternion.

Inputs

• Quaternion List - A list that contain the rotation quaternions.

Outputs

• Quaternion - The rotated quaternion.

Advanced Node Settings

• N/A

72 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Note

Quaternion rotation is not commutative, so the order of quaternions in the list matters.

Examples of Usage

Rotations in CG are represented in three ways including:


• Euler Angles - Define rotations as three angles in each of the three axis. It has some problems like gimbal lock
and nonsmooth animation interpolations.
• Axis Angle - Defined by a vector and an angle, the rotation is represented as the rotation around that vector with
the angle. It is non usually used.
• Quaternions - Defined as a unit 4D vector, which is juts like axis angle but more easier to operate on. It doesn’t
have gimbal lock and have smooth animation interpolation so it is usually used in making animations.
This category include nodes that creates and operates on eulers and quaternions.

Matrix

Compose Matrix

Description

This node forms a transformation matrix based on the input translation, rotation, and scaling.

1.3. Nodes 73
Animation Nodes Manual, Release 2.0

Inputs

• Translation - A vector that stores the amount of translation of the output matrix.
• Rotation - An euler that stores the amount of rotation of the output matrix.
• Scale - A vector that stores the amount of scaling of the output matrix.

Outputs

• Matrix - A 4x4 transformation matrix which can be used to apply linear transformations to an object.

Advanced Node Settings

• N/A

Examples of Usage

Decompose Matrix

Description

This nodes takes transformation matrix and returns its components including rotation, translation and scale.

Inputs

• Matrix - A matrix to decompose.

Outputs

• Translation - A vector that stores the amount of translation in the input matrix, which is also the location of the
object.
• Rotation - An euler that stores the amount of rotation in the input matrix, which is also the rotation of the object.
• Scale - A vector that stores the amount of scalling in the input matrix, which is also the scale of the object.

74 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Matrix List

Description

This node is used to create an arbitrary list of matrices. A new matrix can be added with the New Input button. A new
matrix can also be added by plugging it into the transparent socket.

Inputs

• Matrix - A matrix at the index 0.


• Matrix - A matrix at the index 1.
• Matrix - ...

Outputs

• matrix list - A list that contains all the input matrices.

Advanced Node Settings

• Change type - Changes the type of the float list to another list type.
• Hide Inputs - Hides all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

1.3. Nodes 75
Animation Nodes Manual, Release 2.0

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Translation Matrix

Description

This node generates a translation transformation matrix based on an input vector. The transformation matrix can then
be multiplied to a matrix to perform the translation.

Inputs

• Translation - A vector that stores the amount of translation in the output transformation matrix.

Outputs

• Matrix - A transformation matrix that contains the translation information.

Advanced Node Settings

• N/A

Examples of Usage

Rotation Matrix

Description

This node generates a rotation transformation matrix based on an input euler or an angle. The transformation matrix
can then be multiplied to a matrix to perform the rotation.

76 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Angle - The amount of rotation in radian.


Note that the input may be an euler if the rotation matrix is generated for all axis.

Outputs

• Matrix - A transformation matrix that contains the rotation information.

Advanced Node Settings

• N/A

Examples of Usage

Scale Matrix

Description

This node generates a scale transformation matrix based on an input vector. The transformation matrix can then be
multiplied to a matrix to perform the scaling.

1.3. Nodes 77
Animation Nodes Manual, Release 2.0

Inputs

• Scale - A vector that stores the amount of scaling in the output transformation matrix.

Outputs

• Matrix - A transformation matrix that contains the scale information.

Advanced Node Settings

• N/A

Examples of Usage

Shear Matrix

Description

This node generates a shear transformation matrix based on an input angle. The transformation matrix can then be
multiplied to a matrix to perform the shearing.
Shearing is changing the coordinates in an axis based on the coordinates of another axis.

Inputs

• Angle X,Y,Z - Shear amount in X,Y,Z axis.

Outputs

• Matrix - A transformation matrix that contains the shearing information.

Advanced Node Settings

• N/A

78 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Distribute Matrices

Description

This node creates a list of matrices that represent the locations of object distributed someway in space. They can be
distributed in a line, grid, circle or based on a custom distribution.

Options And Inputs

• Linear - This option distribute matrices along the x-axis centered at the world.
– Size - This option lets you define the size of the line.

* Amount - Number of matrices.


* Size - Size of the line.
– Step - This option lets you define the distance between each two consecutive matrices.

* Amount - Number of matrices.


* Distance - Distance between each two consecutive matrices.
• Grid - This option distribute matrices on a 3D lattice centered on the world with positive z-locations.
– Size - This option lets you define the side length of the lattice.

* X Division - Number of matrices in x-axis.


* Y Division - Number of matrices in y-axis.
* Z Division - Number of matrices in z-axis.
* Width - The width of the lattice.
* Length - The length of the lattice.
* Height - The height of the lattice.
– Step - This option lets you define the distance between every two object in all axis.

* X Division - Number of matrices in x-axis.


* Y Division - Number of matrices in y-axis.

1.3. Nodes 79
Animation Nodes Manual, Release 2.0

* Z Division - Number of matrices in z-axis.


* X Distance - Distance between each two consecutive matrices along x-axis.
* Y Distance - Distance between each two consecutive matrices along y-axis.
* Z Distance - Distance between each two consecutive matrices along z-axis.
• Circle - This option lets you distribute object around a circle centered at the world.
– Amount - The number of matrices around the circle.
– Radius - Radius of the circle.
– Segment - A ratio that describe the completeness of the circle, where 1 means a a complete circle and
0 means no circle.
• Vertices - This option lets you distribute objects based on a vector list that define their location and another vector list that

– Vertices - A vector list that represents the locations of the matrices.


– Normals - A vector list that represents the orientation of the matrices.
– Note that both lists have to have the same length and the number of output matrices will be equal to
the length of the lists.

Outputs

• Matrices - The output matrices.

Advanced Node Settings

• N/A

Examples of Usage

Replicate Matrix

Description

This node copy the input matrix multiple times then transforms each new copy based on a corresponding transforma-
tion matrix or a translation vector. The transformations are input as a list of matrices or vectors where its length is the
number of copies.

80 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

The transformations can either be defined by matrices which support translation, rotation and scaling or by vectors
that only support translations.
• Matrices - This option lets you define the transformations using a transformation matrix list.
• Vectors - This option lets you define the translations using a vector list.

Inputs

• Matrix - Original matrix.


• Matrices - A list of transformation matrices that defines the transformations applied on the copies where the
first matrix is applied on the first copy, second on second and so on.
• Vectors - A list of vectors that defines the translations applied on the copies where the first translation is applied
on the first copy, second on second and so on.

Outputs

• Matrices - New matrices.

Advanced Node Settings

• N/A

Examples of Usage

Transform Matrix

Description

This node transform the input matrix by the the input transformation matrix.

Inputs

• Matrix - A matrix to transform.


• Transformation - A transformation matrix.

1.3. Nodes 81
Animation Nodes Manual, Release 2.0

Outputs

• Matrix - The transformed matrix.

Advanced Node Settings

• N/A

Examples of Usage

Invert Matrix

Description

This node inverts the input transformation matrix. In other words, this node will return a matrix that reverses the effect
of the input matrix. If the matrix is multiplied by its inverse, the result will be an identitie matrix.

Inputs

• Matrix - A transformation matrix to invert.

Outputs

• Inverted Matrix - The inverted matrix.

Advanced Node Settings

• N/A

Examples of Usage

Mix Matrices

Description

This node mixes between 2 matrices based on a factor.

82 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Factor - A float that controls the amount of each matrix input to the output, where 0 means the first matrix only
and 1 means the second matrix only.

Outputs

• Result - The resultant matrix of mixing the two matrices by the input factor.

Advanced Node Settings

• N/A

Note

A factor that is larger than 1 won’t be clamped but rather multiplied to the second matrix. That’s why the node has an
option to Clamp Factor. So if Clamp Factor is enabled, any factor that is larger than 1 will return the second matrix.

Examples of Usage

Matrix Math

Description

This node allows you to multiply two transformation matrices. Multiplying transformation matrices gets you a trans-
formation matrix that will perform both input transformation matrices. So if you multiplied a rotation matrix by a
translation matrix the resultant matrix is a transformation matrix that performs rotation and then translation.
Keep in mind that matrix multiplication is non commutative. So order matters.

1.3. Nodes 83
Animation Nodes Manual, Release 2.0

Inputs

• A - A transformation matrix.
• B - A transformation matrix.

Outputs

• Result - The combined transformation matrix.

Advanced Node Settings

• N/A

Examples of Usage

Combine Matrices

Description

This takes a list of transformation matrices and multiplies them together in order.

Inputs

• Matrices - A list of matrices.

84 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Result - The combined transformation matrix.

Advanced Node Settings

• N/A

Examples of Usage

Offset Matrices

Description

This node offset a matrix based on an input offset translation, rotation and scale with an input falloff as a factor.

Options

• Loc/Rot/Scale - Enables location, rotation, scales offset.


• Start/End - Start will offset the matrices based on the offset parameters with the falloff as a factor. End will
offset the matrices based on the offset parameters with the inverse falloff as a factor, in other words, all matrices
will be transformed based on the offset parameters and then matrices will be transformed back to their initial
position based on the offset parameter with the falloff as a factor.

Inputs

• Matrices - The matrices to offset.


• Falloff - A falloff to use as a factor.
• Translation - The offset translation vector.
• Rotation - The offset rotation euler.
• Scale - The offset scale vector.

1.3. Nodes 85
Animation Nodes Manual, Release 2.0

Outputs

• Vector - The new matrices after offset.

Advanced Node Settings

Translation
• Global Axis - This option translate matrices in global space.
• Local Axis - This option translate matrices in local space, in other words, the translation vector is rotated based
on the rotation of the transformation matrix before it get added.

Rotations
• Global Axis - Global Pivot - This option rotate matrices in global space around the space’s origin point. Use it
when your matrix represent a vector.
• Global Axis - Local Pivot - This option rotate matrices in global space around their origin point. Use it when
you matrix represent an object and you want to transform in around its origin.
• Local Axis - Local Pivot - This option rotate matrices in local space around their origin point. Use it when you
matrix represent an object and you want to transform in around its origin.

Scale
• Local Axis - This option scale matrices in their local space. Use this option if your matrices represent objects
and you want to scale them without changing their position.
• Global Axis - This option scale matrices in global space. Use this option if your matrices represent objects and
you want to scale them without changing their position.
• Include Translation - This option scale matrices in global space. Use this option if you want to scale them
while changing their position.
• Translation Only - This option scale matrices in global space. Use this option if you want only location to
change.

Examples of Usage

Matrices are a way of representing locations, rotations and scales of objects, they can also represents translations,
rotations and scaling transformations.
When matrix A is multiplied by matrix B, then matrix A will be transformed based on matrix B, if matrix B was a
translation matrix, then matrix A will be translated.

Text

Text category include nodes that process and generate texts.

86 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Text

This node outputs a text.

Advanced Node Settings

• Show in viewport - If this option is enabled, the property will show up in the Data Input panel in the AN tab
in the Tool Shelf. The name of that property is defined by the node label if it is set. This option is useful if one
want to edit some parameters in the node tree directly from within the 3d viewport without having to go the
node editor.

1.3. Nodes 87
Animation Nodes Manual, Release 2.0

String List

Description

This node is used to create an arbitrary list of strings. A new string can be added with the New Input button. A new
string can also be added by plugging it into the transparent socket.

Inputs

• String - A string at the index 0.


• String - A string at the index 1.
• String - ...

Outputs

• String list - A list that contains all the input strings.

Advanced Node Settings

• Change type - Change the type of the string list to another list type.
• Hide Inputs - Hide all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Random String

88 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node generates a random string based on an input characters.

Inputs

• Seed - Seed for the random generator, Where different seed generate different random strings.
• Length - The number of characters in the output string.
• Characters - A string that contain all the possible characters.

Outputs

• Text - A random string based on the input characters.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Random String nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically changes the Node Seed when you duplicate or add a new Random String node.

Examples of Usage

Characters

Description

This node returns a string that contains all the characters in a specific category including:
• Lower Case

1.3. Nodes 89
Animation Nodes Manual, Release 2.0

• Upper Case
• Digits
• Special
• Line Break
• All

Inputs

• N/A

Outputs

• Lower Case - All lower case characters.


• Upper Case - All upper case characters.
• Digits - All the digits.
• Special - All special characters like (:,?”).
• Line Break - Include a new line.
• All - All of the previous category.

Advanced Node Settings

• N/A

Examples of Usage

Timecode Generator

90 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node returns the current time (based on input frame and a given frame rate) in miliseconds, seconds, minutes and
house separated by a colon.

Inputs

• Frame - The current frame.


• Frame Rate - The number of frames per seconds (FPS) of the scene.

Outputs

• Timecode - The output string.

Advanced Node Settings

• N/A

Examples of Usage

Split Text

Description

This node splits input string into multiple strings based on the chosen algorithm.

1.3. Nodes 91
Animation Nodes Manual, Release 2.0

Options

• Separator - This option allows splitting string by a specific character. So if the input text is “Animation,Nodes”
the output list will contain : -Animation and -Nodes.
• N Characters - This option allows splitting string each n number of characters. So if the input text is “Animation
Nodes” and N = 2 the output list will contain: -An,-im,-at,-io,-n„-No,-de,-s.
• Regular Expression - This node allows you to use “regex” operations in python enabling more control. So if
the input string is “Animation Nodes” and I want to split by white spaces, I can use the “/s” operations which
will return -Animation and -Nodes. A list of operations can be found here.
• Lines This option allow splitting by new lines, in other words, every line will be an element of the list.
• Words - This option allow splitting by words, in other words, every word will be an element of the list.
• Characters - This option allow splitting by character, in other words, every character will be an element of the
list.

Inputs

• Text - Input text to split.

Outputs

• Text list - A list of strings that contains string parts.


• Length - The number of strings in the list.

Advanced Node Settings

• N/A

Examples of Usage

Join Text

Description

This node joins a list of strings in a single string.

92 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Texts - A list of strings to join.


• Separator - An option to add a string between every string when joining them.

Outputs

• Text - The output string.

Advanced Node Settings

• N/A

Examples of Usage

Trim Text

Description

This node lets you cut a number of characters from the input text either from start or from the end.
It will return the text that start at the character with index Start and end at the character at index End. So if I set the
start index to be 0 and the end index to be 5 the output will be “Anima”.

Options

• Start - This option lets you set the starting index. If it is disabled, then it will be considered zero.
• End - This option lets you set the ending index. If it is disabled, then it will be considered the last index.

1.3. Nodes 93
Animation Nodes Manual, Release 2.0

Inputs

• Text - An input text to trim.


• Start - The start index.(integer)
• End - The end index.(integer)

Outputs

• Text - The output string.

Advanced Node Settings

• Negative Indices - If enabled, you can enter negative indices in the start and end inputs. A negative index -i
means the index n-i where n is the number of letters.

Examples of Usage

Reverse Text

Description

This node reverse the order of characters in the text.

Inputs

• Text - A text to reverse.

Outputs

• Text - The output string.

Advanced Node Settings

• N/A

94 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Replace Text

Description

This node replaces a part of the input string by another string.

Inputs

• Text - The input string.


• Old - The characters to replace.
• New - The new characters.

Outputs

• Text - The output string.

Advanced Node Settings

• N/A

Examples of Usage

Repeat Text

Description

This node is used to repeat an input text and add it before or after another input text.

1.3. Nodes 95
Animation Nodes Manual, Release 2.0

Options

• At End - Adds the repeated text after the input text.


• At Start - Adds the repeated text before the input text.

Inputs

• Repeats - Number of repetitions.


• Text - The initial text, the repeated text will be added after or before it. Leave it empty if all you need is the
repetitions.
• Fill - A text to repeat.

Outputs

• Text - The output string.

Advanced Node Settings

• N/A

Examples of Usage

Text Length

Description

This node will return the number of characters in the input text.

96 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Text - The input string.

Outputs

• Length - The number of characters in the input text.

Advanced Node Settings

• N/A

Examples of Usage

Text Block Reader

Description

This node reads a blender text data block.

Inputs

• Text Block - A text block to read.

Outputs

• Text - The output text.

Advanced Node Settings

• N/A

1.3. Nodes 97
Animation Nodes Manual, Release 2.0

Examples of Usage

Text Block writer

Description

This node writes a string to a blender text block.

Inputs

• Text Block - A text block to write to.


• Text - A string to write.

Outputs

• Text Block - The input text block.

Advanced Node Settings

• N/A

Examples of Usage

Text File Reader

Description

This node reads a file from your disk.

98 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Path - The path of the file.


• Encoding - The encoding method. A list of avilable encoding can be found here.

Outputs

• Text - The output text.

Advanced Node Settings

• N/A

Examples of Usage

Text Sequence Output

Description

This node can control a text sequence strip.

Inputs

• Strip - A text strip to edit.


• Text - The value of the text strip.
• Size - The size of the text.
• Shadow - Enable or disable text shadows.
• X Align - Text aligment method in X.A list of values can be found in the advanced node setting panel.
• Y Align - Text aligment method in Y.A list of values can be found in the advanced node setting panel.
• X Location - The location of the strip in X.
• Y Location - The location of the strip in Y.
• Wrap Width - Enable or disable wrap width.

1.3. Nodes 99
Animation Nodes Manual, Release 2.0

Outputs

• Sequence - The input sequence.

Advanced Node Settings

• N/A

Examples of Usage

Character Properties Output

Description

This node controls the property of the input text object in a specific character interval.

Inputs

• Object - A text object to edit.


• Start - The index of the character when the interval starts.
• End - The index of the character when the interval ends.
• Material Index - The index of the material starting from 0.
• Bold - Enable or disable bold property.
• Italic - Enable or disable italic property.
• Underline - Enable or disable underline property.
• Small Caps - Enable or disable small caps property.

Outputs

• Object - The input object.

100 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• Allow negative index - This option will allow you to invert the interval by entering negative values for the start
and end indicies.

Examples of Usage

Separate Text Object

Description

This node takes a text object and separates its characters into individual objects.

Options

• Type - Lets you choose the type of the output object, it can be Text, Curve or a Mesh.

Inputs

• Source - The source text object.


• Material - A material to assign to the newly created objects.
• Origin - The location of the object’s origin.
• Type - The type of the newly created object. (Text,Curve,Mesh)

Outputs

• Text Objects - A list that contains the newly created objects.

Advanced Node Settings

• Parent To Main Container - Parent the objects to Animation Nodes’ container.

1.3. Nodes 101


Animation Nodes Manual, Release 2.0

Examples of Usage

Text Object Output

Description

This node allows you to control text objects’ properties.

Inputs

• Text - The value of the text object.


• Size - The size of the text.
• Extrude - The extrusion width.
• Shear - Text shearing.
• Bevel Depth - Depth of the text bevel.
• Bevel Resolution - The resolution of the text bevel.
• Letter Spacing - The length of the spaces between the letters.
• Word Spacing - The length of the spaces between the words.
• Line Spacing - The height of the spaces between lines.
• X Offset - Amount of offseting text in the X axis.
• Y Offset - Amount of offseting text in the X axis.
• Align - Aligment method. A list of possible values can be found in the advanced node setting panel.
• Font - The text font.
• Bold Font - The font used in bold characters.
• Italic Font - The font used in italic characters.
• Bold Italic Font - The font used in bold italic characters.

Outputs

• Object - The input text object.

102 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Boolean

This category includes nodes that process and creates booleans.

Boolean Input

Description

This node outputs a boolean value. (A True or False)

Advanced Node Settings

• Show in viewport - If this option is enabled, the property will show up in the Data Input panel in the AN tab
in the Tool Shelf. The name of that property is defined by the node label if it is set. This option is useful if one
want to edit some parameters in the node tree directly from within the 3d viewport without having to go the
node editor.

1.3. Nodes 103


Animation Nodes Manual, Release 2.0

Invert Boolean

Description

This node inverts the boolean. In other words, if the input is False it becomes True and if it was True it will be
False.

104 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Input - The input boolean.

Outputs

• Output - The inverted boolean.

Advanced Node Settings

• N/A

Examples of Usage

Compare

Description

This node compares 2 values using standard mathematical inequalities such as >,<,<=,>=,=,=! and return True if it
was satisfied and False if not.

Inputs

• A - The first value.


• B - The second value.

Outputs

• Result - The resulted boolean.

Advanced Node Settings

• Change Type - Changes the input type to other data type.

1.3. Nodes 105


Animation Nodes Manual, Release 2.0

Note

• A != B - Means A does not equal to B


• A is B - Unlike A = B, This checks if the inputs are the same object. For instance, if two integer lists have the
same value and length, it will return False because they are not the same object even though they have the
same elements.
• A is None - Returns True if the input is empty and doesn’t represent a data type.
• The type of the data changes automatically when you input a different data type.

Examples of Usage

Switch

Description

This node returns the first input if the condition was True and the second input if the condition was False.

Inputs

• Condition - A boolean that defines the output.


• If True - The value that should be the output if the condition is True.
• If False - The value that should be the output if the condition is False.

Outputs

• Output - The first value if True and the second value if False.
• Other - The first value if False and the second value if True.

Advanced Node Settings

• Change Type - Change the input type to other data type.

106 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Note

The type of the node changes automatically when you input another data type.

Examples of Usage

Logic Operators

Description

This node performs standard logical gates operations like And, Or, Xor.

Demonstration

• A and B - Both A and B have to be True in order to return True. e.g. True and False = False,
False and False = False, True and True = True.
• A or B - If A or B are True or both are True then the output is True. e.g. True or True = True, True
or False = True, False or False = False.
• A xor B - If A and B are different, then the output is True. e.g. True xor True = False, True xor
false = True, False xor False = False.
• Not (A and B) - Returns True if one of them is False.
• Not (A or B) - Returns True if both of them is False.

Inputs

• A - The first boolean.


• B - The second value.

Outputs

• Result - The result of the operation.

Advanced Node Settings

• N/A

1.3. Nodes 107


Animation Nodes Manual, Release 2.0

Examples of Usage

Boolean List Logic

Description

This node returns True if all of the values are True or False if all the values are False and the inverse of the
operations.

Demonstration

• All True - Returns True if all the booleans are True and False if not.
• All False - Returns True if all the booleans are False and False if not.
• Not All True - Returns True if at least one boolean is False.
• Not All False - Returns True if at least one boolean is True.

Inputs

• Boolean List - A list of booleans.

Outputs

• Result - The result of the operation.

Advanced Node Settings

• N/A

Examples of Usage

Boolean To Integer

Description

This node returns 1 if the input is True and 0 if the input is False.

108 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Demonstration

The true form of booleans is a binary where 1 means True and 0 means False. The logical gates itself is just a
simple arithmetical operation on those binaries. e.g. an And gate is just a multiplication and Or gate is just an addition
clamped to 1. This node is just a converter that convert booleans into binaries.

Inputs

• Boolean - An input boolean.

Outputs

• Number - The binary.

Advanced Node Settings

• N/A

Examples of Usage

Number To Boolean

Description

This node return False if the input number is zero and True if otherwise.

Inputs

• Number - A number.

1.3. Nodes 109


Animation Nodes Manual, Release 2.0

Outputs

• Boolean - A boolean which is False if the input number is zero and True if otherwise.

Advanced Node Settings

• N/A

Examples of Usage

Color

This category contains nodes that process and creates color data.

Choose Color

Description

This node outputs color data chosen from the color picker.

Inputs

• Alpha - The value of the alpha channel of the color.

Outputs

• Color - The output color data.

Advanced Node Settings

• N/A

110 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Combine Color

Description

This node composes a color data from input individual channels. It supports RGB, HSV, HSL and YIQ color models.
All are in linear color space.

Inputs

Based on the choosen color model.

Outputs

• Color - The output color data.

Advanced Node Settings

• N/A

Examples of Usage

Separate Color

Description

This node decomposes input color data and outputs its individual channels. It supports RGB, HSV, HSL and YIQ
color models. All are in linear color space.

1.3. Nodes 111


Animation Nodes Manual, Release 2.0

Inputs

• Color - The input color data to decompose.

Outputs

Based on the chosen color model.

Advanced Node Settings

• N/A

Examples of Usage

Mix Colors

Description

This node mixes between 2 colors based on a factor.

112 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Factor - A float that controls the amount of each color input to the output. 0 means the first color only and 1
means the second color only.

Outputs

• Result - The result of mixing the two colors by the factor.

Advanced Node Settings

• N/A

Note

The way Mix Colors works, A factor that is larger than 1 won’t be clamped but rather multiplied to the second color.
That’s why the node has an option to Clamp Factor. So if Clamp factor is enabled, any factor that is larger than 1 will
return the second color.

Examples of Usage

Set Vertex Color

Description

This node creates a vertex color layer and fills it with a single color.

Inputs

• Object - The object that will carry the vertex color layer.
• Color - The color of each vertex of the object.

Outputs

• Object - The input object.

1.3. Nodes 113


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• Check Color - If this is enabled, Animation Nodes will check if the color has changed before setting the new
color. If it hasn’t, Animation Nodes will return the object without any change. This will result in a speed up
in the execution time if you are not changing the color. So make sure to check it if you want to speed up the
execution.

Note

If the name you entered in the vertex color layer is the name of an existing vertex color layer, Animation nodes will
overwrite the data of this layer instead of creating a new one.

Examples of Usage

List

This category include nodes that process and create lists.

Create List

Description

This node is used to create an arbitrary list of a specific data type. A new element can be added with the New Input
button. A new element can also be added by plugging it into the transparent socket.

Inputs

• Element - A element at the index 0.


• Element - A element at the index 1.
• Element - ...

Outputs

• list - A list that contain all the input data.

114 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• Change type - Changes the type of the list to another list type.
• Hide Inputs - Hides all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Combine List

Description

This node is used to combine or join an arbitrary number of lists of a specific data type. A new list can be added with
the New Input button. A new list can also be added by plugging it into the transparent socket.

Inputs

• List - A list of elements indexed starting from 0.


• List - A list of elements indexed starting from last element of the previous list.
• List - ...

Outputs

• list - A list that contains all the input lists.

1.3. Nodes 115


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• Change type - Changes the type of the list to another list type.

Examples of Usage

Append To List

Description

This node can be used to add an extra element at the end of the input list.

Inputs

• List - An input list.


• Element - An element to add to the input list. Indexed as the last element.

Outputs

• list - The input list plus the extra element.

Advanced Node Settings

• Change type - Change the type of the list to another list type.

Examples of Usage

Get List Element

Description

This node returns the element at the input index. So if the input index is 1 and the input list is [1,2,3] then the
output will be 2. (Notice that indices start from 0 and not 1)

116 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Clamp Index - If enabled, the output will be the last element if the index is larger than or equal the list length,
furthermore, the output will be the first element if negative indices were used assuming Wrap option is disabled
while if it was enabled, the output will be the first element if absolute the index is larger than or equal the list
length. If disabled, fallback value will be used. (see inputs)
• Wrap - If enabled, negative indices will be allowed where -1 means the last element, -2 means the second last
element and so on.
• Use Index List - It is the option you see beside Wrap, if enabled, the index will be an integer list and the output
will the a list that contains the elements at the indices defined in the input integer list.

Inputs

• List - An input list.


• Index - The index of the output element.
• Fallback - This value is an arbitrary value that is output when Clamp Index is disabled and the index is larger
than or equal the list length, or when Wrap is disabled and negative indices were used, or when Wrap is enabled
and the absolute of the index is larger than or equal the length of the list.

Outputs

• Element - The element at index Input Index

Advanced Node Settings

• Make Copy - Copy the element before outputting it. This makes sure the element is independent of the original
element in the list and so changing that element won’t affect the output.
• Change type - Change the type of the list to another list type.

Examples of Usage

Get Random List Element

1.3. Nodes 117


Animation Nodes Manual, Release 2.0

Description

This node returns single or multiple elements from the input list randomly.

Options

• Single - Returns a single random element.


• Multiple - Returns multiple random elements. The output list can’t have a length larger than the input list
because the node doesn’t allow duplicates.

Inputs

• Seed - Seed for the random generator, where different seed return different random elements.
• List - The input list.
• Amount - The number of random elements in the output list. Can’t be larger than the the length of the input list.
(Only in multiple option)

Outputs

• List - A list that contains random elements from the input list.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Get Random List Element nodes in a loop while using the index as a seed, you can change the
extra seed to get different results from the other nodes.

118 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Animation Nodes automatically changes the Node Seed when you duplicate or add a new Get Random List Element
node.

Examples of Usage

Search List Element

Description

This node searches for a specific element and returns some information about it.

Inputs

• List - The input list.


• Search - A value to search for. This value being of the same data type as the input list.

Outputs

• First Index - The index where the value first appeared in the list. So if the input list is [1,2,3,2] and we are
searching for 2 then the First Index will be 1 because this is the index where the number 2 first appeared.
• All Indicies - A list of the indicies where the search value appeared. So using the example above the output will
be [1,3] because the number 2 appeared at both these indicies.
• Occurrences - The number of times the search value appeared on the list. So for the example above, the output
will be 2 because number 2 appeared 2 times in the list.

Advanced Node Settings

• Change type - Change the type of the list to another list type.

Examples of Usage

Set List Element

1.3. Nodes 119


Animation Nodes Manual, Release 2.0

Description

This node replaces the value of the element at the input index by the input value.

Inputs

• List - An input list.


• Index - The index of the element to change.
• Element - The new value.

Outputs

• List - The edited list.

Advanced Node Settings

• Clamp Index - If enabled, it will set the first element for negative input indicies that their absolute is larger
than or equal the list length assuming that Allow Negative Indices is enabled, if not, any negative indices will
change the first element, it will also change the last element if the input index is larger than or equal the length
of the list.
• Allow Negative Indicies - If enabled, -1 changes the last element, -2 changes the second last index, ...

Examples of Usage

Remove List Element

Description

This node removes certain list elements based on their index or their values.

120 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• First Occurrence - This option removes the input value at its first appearance only. So if the input value is 1
and the input list is [1,2,3,1] the output list will be [2,3,1]. Notice that the last 1 didn’t change.
• All Occurrence - This option removes all the input values from the list. So for the previous example the output
list will be [2,3].
• Index - This option removes the element at the input index. So for the previous example with input index as 1
then the output will be [1,3,1] because 2 was at index 1.

Inputs

• List - An input list.


• Value/Index - The index of the element or its value (Based on the selected option).

Outputs

• List - The edited list.

Advanced Node Settings

• Change type - Change the type of the list to another list type.

Examples of Usage

Get List Length

Description

This node returns the number of elements in the input list.

1.3. Nodes 121


Animation Nodes Manual, Release 2.0

Inputs

• List - An input list.

Outputs

• Length - The number of elements in the list.

Advanced Node Settings

• N/A

Examples of Usage

Shuffle List

Description

This node redistributes the elements of the list in a random different order.

Inputs

• List - An input list.


• Seed - A seed for the random generator, where different seeds output elements in different orders.

Outputs

• Shuffled List - The list after random redistribution of the elements.

122 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Reverse List

Description

This node flips the order of the elements of the list. The list [1,2,3] becomes [3,2,1].

Inputs

• List - An input list.

Outputs

• Reversed List - The flipped list.

Advanced Node Settings

• N/A

Examples of Usage

Slice List

Description

This node outputs only a portion of the input list.

1.3. Nodes 123


Animation Nodes Manual, Release 2.0

Options

• Start - Defines the start index of the output list. So if the input list is [1,2,3,4] and Start value is 2 then the
new list will be [3,4] that’s because the node will reject the elements before that index and output a list that
starts from that index. If disabled, start will be considered zero.
• End - Defines the ending index of the output list. So assuming the start is 0 and end is 2 the output list in the
previous example will be [1,2,3] that’s because the node will reject the elements after that index and output
a list that ends by that index.
• Step - Defines the step size between each index. So if the step size is equal to 2 then the output list will be
[1,3] notice that the index jumped 2 values to get from 1 to 3 and that what the step size defines.
• Index - The end element is defined by its index.
• Length - The end element is defined automatically by providing the length of the output list.

Inputs

• List - An input list.


• Start - The starting index of the output length.
• End/Length - The ending index or the length of the output list. (Based on the chosen option)
• Step - The step size of the output list.

Outputs

• List - The sliced list.

Advanced Node Settings

• Change type - Change the type of the list to another list type.

124 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Shift List

Description

This node shifts the position of elements of the input list by a specific amount. Every element goes to the index i+n
mod l, where i is the element’s index, n is the amount of shifting and l is the length of the list. So if the amount is
equal to 1 the first elements becomes the second element, the second becomes the third and the last becomes the first.

Inputs

• List - An input list.


• Amount - The amount of shifting.

Outputs

• Shifted List - The shifted list.

Advanced Node Settings

• N/A

Examples of Usage

Sort List

Description

This node sorts a list of a specific data type based on a specific property. The input list can be of any data type and
there is two main options you can use for sorting:
• Custom expression.
• key list.

1.3. Nodes 125


Animation Nodes Manual, Release 2.0

Options

• Custom - This option lets you sort the list based on an input data attribute. So if the list data type is vectors, you
can use the expression e.x which will sort the vectors based on their x component (from the smallest x to the
largest x). Another example, if the list data type is stings you can use the expression e[-1] to sort the strings
based on their last characters (starting from A to Z). Notice that -1 here is the index of the last character in the
string.
• key List - This option lets you sort list using a reference list. The reference list can be either floats or strings.
Suppose I want to sort the list [1,2,3,4] to be [3,1,2,4], the reference list for such ordering would be
something like [1,2,0,3] this reference list gets sorted from zero to infinity and the same movement that
happened to sort this list will happen to the original list. So for instance, the number 0 in the reference list is
the smallest number and thus it should be the first element so we move it from the third location to the first
location. That same movement will happen to the original list, the element at the third location(which is 3)
will move to the first location (Notice that this is what happened to get [1,2,3,4] to be [3,1,2,4]). The
string reference list is exactly the same but it is sorted from A to Z and an alternative reference list in strings for
[1,2,0,3] is [b,c,a,d].

Inputs

• List - An input list.


• Key - The reference list if Key list option is chosen.
• Reverse - An option to reverse the order of the output list.

Outputs

• Sorted List - The sorted list.

Advanced Node Settings

• Element - The variable used to define the elements of the input list in the custom expression option. By default
it is “e”.

Examples of Usage

126 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Mask List

Description

This node can be used to selectively remove list elements based on a boolean list. A boolean list with the same length
as the input list has to be provided, for every element in the input list, if the boolean at the same index in the boolean
list was False, then this element will not be included in the output list.

Inputs

• List - An input list.


• Mask - A boolean list.

Outputs

• List - The output list.

Advanced Node Settings

• N/A

Examples of Usage

Fill List

Description

This node takes an input list and change its length by inserting an arbitrary number of the input element.
The Length input define the length of the output list, if the input list length was smaller than that number, then the
input Element will be added till the length matches that of Length input. For instance, [1,2] as input list with
Length equal to 5 and and Element as 11, the output list will be [1,2,11,11,11], notice how 11 was added
several times to form a list of length 5.
If the input list was larger than Length input then nothing happens to the list. Moreover, an empty input list would
output a list of length input Length that is filled with the input Element, that’s why the node is called Fill.

1.3. Nodes 127


Animation Nodes Manual, Release 2.0

Options

• Right - If chosen, the elements will be added at the end of the list.
• Left - If chosen, the elements will be added at the start of the list.

Inputs

• List - An input list.


• Length - The length of the output list.
• Element - The element used in filling the empty spaces.

Outputs

• List - The filled list.

Advanced Node Settings

• Make Element Copies - If enabled, the Element input will be copied before inserting, this makes sure the
elements are independent of the original element used. This option don’t work for non objects, so it won’t be
available if the input list was of float or integer type.

Examples of Usage

Repeat List

Description

This node is used to repeat a list a specific number of times.

128 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Loop - This option is the standard repetition pattern. Input list [1,2,3] repeated 2 times will output
[1,2,3,1,2,3].
• Ping Pong - This option is a repeat reverse pattern. Input list [1,2,3] repeated 2 times will output
[1,2,3,3,2,1].
• Amount - This option lets you define the amount of repetition.
• Length - This option lets you define the length of the output list. The amount of repetition is set automatically
to fill that length, all the elements which exceed that length will be cut off. If the length is 5 in the previous
example, the output list will be [1,2,3,1,2] Notice that the second 3 was cut because it exceeded the defined
length.
• Below Length - Just like Length this option allow you to define the length but if the length was not sufficient
to complete a whole repetition, that last repetition will be rejected. So if the length is set to 5 in the previous
example, the output will be [1,2,3]. Notice that the whole second repetition was rejected because it didn’t
make it to the last element.
• Above Length - Just like Below Length this option allows you to define the length but if the length was
sufficient to add at least one element from the last repetition, the whole last repetition will be added. So if the
length was 5 in the previous example, the output will be [1,2,3,1,2,3]. Notice that the second 3 was not
supposed to be in the list but it was added anyway.

Inputs

• List - An input list.


• Length - The length definiton vary from an option to another.

Outputs

• List - The repeated list.

Advanced Node Settings

• Make Element Copies - Copy the element before repeating them. This makes sure the elements are independent
of the original elements in the list and so changing those elements won’t affect the following repetitions.

1.3. Nodes 129


Animation Nodes Manual, Release 2.0

• Change type - Change the type of the list to another list type.

Examples of Usage

Random List

Description

This node creates a list of defined length filled with random elements from an input list. Unlike the Get Random
Element List node, this node can create a list of any length because its allows duplicates.

Inputs

• Seed - Seed for the random generator, where different seed return different random elements.
• Length - The length of the output list.
• Source - The input source list.

Outputs

• List - A list of length Length which contains random elements from the input source list.

Advanced Node Settings

• N/A

Note

The node has an extra seed (Node Seed) that can be used to differentiate between nodes with the same seed, e.g.,
When using multiple Random List nodes in a loop while using the index as a seed, you can change the extra seed to
get different results from the other nodes.
Animation Nodes automatically changes the Node Seed when you duplicate or add a new Random List node.

130 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

List boolean Operations

Description

This node is used to do mathematical set operations like Union, Intersection, Difference and Symmetric Difference.

Options

• Union - This operation adds the 2 input lists but unlike the combine list node. If an element is shared between
the 2 lists it will be considered as a single element. So input list [1,2,3] Union input list [3,4,2] outputs
[1,2,3,4].
• Intersection - This node will return a list of elements that are common between the 2 input lists. So input list
[1,2,3] intersection input list [3,4,5] outputs [3], because it is shared between the 2 lists.
• Difference - This operation will remove the elements of input list 1 from input list 2. So if input list [1,2,3]
difference input list [3,4,5] outputs [1,2]. Notice that 3 was removed because it is in list 2.
• Symmetric Difference - This operation return the elements from both lists if those elements are not shared
between both lists. So input list [1,2,3] Symmetric Difference input list [3,4,5] output [1,2,4,5].
Notice that 3 was not included because it is in both lists.

Inputs

• List 1 - An input list.


• List 2 - An input list.

Outputs

• List - The result of the set operation.

Advanced Node Settings

• NA

1.3. Nodes 131


Animation Nodes Manual, Release 2.0

Examples of Usage

Set Struct Elements

Description

This node creates struct elements and sets their values. See demonstration for more information about struct elements.
A new key can be added using the plus button or by plugging its value into the transparent socket.

Demonstration

Struct elements are not lists. They are what is known as dictionaries. Dictionaries are lists but each element is known
by a Keys instead of an index. A key is a string that usually explain the value it is carrying. Dictionaries unlike lists
don’t care about the elements order. Dictionaries can carry multiple data types.
An example of a dictionaries : Name = Bob, Age = 19, Height = 1.70 . Notice That every element has a
key (Name,Age,Height) that describe its value (Bob,19,1.70) also notice that the values can be of any data type
(String,Integer,Float) it can even have a dictionary as a value.
Creating such dictionaries in animation nodes :

132 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Struct - The node can also be used to add keys to an existing struct and this input is where the original struct is
input.

Outputs

• Struct - The input struct.

Advanced Node Settings

• NA

Get Struct Elements

Description

This node is used to get a value from a struct.

1.3. Nodes 133


Animation Nodes Manual, Release 2.0

Demonstration

This node doesn’t output all the values of the struct, you have to request what you want. Using the example we used in
the Set Struct Elements page. If we want to get the name of the person, we should add a string output and type “Name”
which is the key that store the name of the person.
Getting such value in animation nodes :

Inputs

• Struct - The input struct.

Outputs

Based on what you add.

Advanced Node Settings

• Make Copies - Copy the element before outputting it. This makes sure the element is independent of the original
element in the struct and so changing that element won’t affect the output.

Examples of Usage

134 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Get Struct List Elements

Description

This node takes a list of structs and output all the values of a specific common key between them.
If a list of structs all have a key named Name and you want to output all the texts in that key, you first have to convert
the type of the node to be Text because Name key is a text and then type Name in the field.

Inputs

• Struct List - A list of structs.

Outputs

• Data - A list of values based on the type you choosed.

Advanced Node Settings

• NA

Examples of Usage

Object

This category include nodes that access, read and write to blender objects.

Object Input

Description

This node outputs the input object.


Clicking the eye dropper icon will set the input object to the active object in the 3d viewport.

1.3. Nodes 135


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• Show in viewport - If this option is enabled, the property will show up in the Data Input panel in the AN tab
in the Tool Shelf. The name of that property is defined by the node label if it is set. This option is useful if one
want to edit some parameters in the node tree directly from within the 3d viewport without having to go the
node editor.

Object List

136 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node is used to create an arbitrary list of objects. A new object can be added with the New Input button. A new
object can also be added by plugging it into the transparent socket.

Inputs

• Object - An object at the index 0.


• Object - An object at the index 1.
• Object - ...

Outputs

• Object list - A list that contain all the input objects.

Advanced Node Settings

• Change type - Changes the type of the object list to another list type.
• Hide Inputs - Hides all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Objects From Group

1.3. Nodes 137


Animation Nodes Manual, Release 2.0

Description

This node returns a list of objects that are included in the input object group.

Inputs

• Object Group - An object group.

Outputs

• Objects - A list that contains all the objects in the input object group.

Advanced Node Settings

• N/A

Examples of Usage

Object Transforms Input

Description

This node returns the current location, rotation, and scale of the input object.

Inputs

• Object - An object.

138 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Location - A vector that contains the current location of the input object.
• Rotation - An euler that contains the current rotation of the input object.
• Scale - A vector that contains the current scale of the input object.
• Quaternion - A quaternion that contains the current rotation of the input object.

Advanced Node Settings

• Use Current Transformations - If this option is disabled the the node will have an extra input Frame which
define the frame at which the transformations is output.
• Frame - The value can either be Absolute or Offset, Absolute will return the transformations at the chosen
frame. Offset will return the transformations at the chosen frame relative to the current frame.

Notes

• To be able to use the quaternion output the rotation mode of the object have to be set to quaternion. The same
for other rotation models.

Examples of Usage

Object Transforms Output

Description

This node sets the location, rotation, and scale of the input object to the input transformations.
To output a property, enable its representative check box.

Inputs

• Object - An object.
• Location - A vector that contains the location of the object.
• Rotation - An euler that contains the rotation of the object.

1.3. Nodes 139


Animation Nodes Manual, Release 2.0

• Scale - A vector that contains the scale of the object.

Outputs

• Object - The input object.

Advanced Node Settings

• Delta Transforms - If enabled, the node will edit the delta transforms of the object instead of the transforms
themselves. Delta transforms are transforms that are added to the original transforms of the object, they are very
useful if you want to set the object’s location relative to its original location.

Examples of Usage

Object Matrix Input

Description

This node returns the transformation matrix of the input object. Matrices are more reliable than transforms because of
their different forms and because they are always up to date even during physics simulations.

Inputs

• Object - An object.

Outputs

• World - World space transformation matrix.


• Basis - World space transformation matrix but without constraints and parenting.
• Local - Local space transformation matrix.
• Parent Inverse - Inverse of object’s parent matrix at time of parenting.

Advanced Node Settings

• N/A

140 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Object Matrix Output

Description

This node sets the transformations of the input object to the input transformation matrix.

Inputs

• Object - An object.
• Matrix - An input transformation matrix.

Outputs

• Object - The input object.

Advanced Node Settings

• Type - This option lets you set the transfromation matrix as:
– World - World space transformation matrix.
– Basis - World space transformation matrix but without constraints and parenting.
– Local - Local space transformation matrix.
– Parent Inverse - Inverse of object’s parent matrix at time of parenting.

Examples of Usage

Object Attribute Input

Description

This node returns a specific object property based on the input Data Path of the property.
To get the data path of any object property in blender, just right click on the property and click Copy Data Path.

1.3. Nodes 141


Animation Nodes Manual, Release 2.0

Inputs

• Object - An object.

Outputs

• Value - The output value.

Advanced Node Settings

• Create Execution Trigger - Create an execution trigger for the selected property.

Examples of Usage

Object Attribute Output

Description

This node sets the chosen property to the input value. Custom properties can also be edited using this node by typing
[”Property Name”] in the expressions field, if there was no such csutom property, it will be created.
To get the data path of any object property in blender, just right click on the property and select Copy Data Path.

142 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Multiple Values - If Object list was used as an input, this option will be available. If disabled, the input value
will be set to the property for all objects. If enabled, the input value will expect a list of values where each
element correspond to the value which will be set to the object property of the object at the same index.

Inputs

• Object - An object.
• Value - The value of the property.

Outputs

• Object - The input object.

Advanced Node Settings

• N/A

Examples of Usage

Object Data Path Output

Description

This node behaves just like the Object Attribute Output, but it is more convenient to use with lists where for instance
the location of the object has 3 values (X,Y,Z), this node will let you set the value for any of them independently.
To get the data path of any property just right click on the property and select Copy Data Path.

Inputs

• Object - An object.
• Path - The data path of the property.

1.3. Nodes 143


Animation Nodes Manual, Release 2.0

• Array Index - The index of the property to edit. Where the first element indexed as zero and the third as 2.
• Value - The value of the property to edit.

Outputs

• Object - The input object.

Advanced Node Settings

• Clear Cache - The node automatically cache data paths for faster future executions, pressing this would clear
that cache.

Examples of Usage

Object Visibility Input

Description

This node will return a boolean which describe the visibility of some properties such as the object’s visibility in
viewport and in rendering.

Inputs

• Object - An object.

Outputs

• Hide - Returns True if object is visible in viewport and False if not.


• Hide Select - Returns True if object is selectable in viewport and False if not.
• Hide Render - Returns True if object is visible in rendering and False if not.
• Show Name - Returns True if object’s name is visible and False if not.
• Show Axis - Returns True if object’s axis is visible and False if not.
• Show X-Ray - Returns True if object x-ray is enabled and False if not.

144 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Object Visibility Output

Description

This node let you set the visibility of multiple object’s properties.

Inputs

• Object - An object.
• Hide - A boolean that if True will hide the object.
• Hide Select - A boolean that if True will make the object unselectable.
• Hide Render - A boolean that if True will hide the object while rendering.
• Show Name - A boolean that if True will show the object name.
• Show Axis - A boolean that if True will show the object’s axis.
• Show X-Ray - A boolean that if True will enable x-ray.

Outputs

• Object - The input object.

Advanced Node Settings

• N/A

1.3. Nodes 145


Animation Nodes Manual, Release 2.0

Examples of Usage

Object Layer Visibility Output

Description

This node lets you move objects through blender’s layers system. Notice that an object can exist in multiple layers at
the same time.

Inputs

• Object - An object.
• Layer 1 - A boolean if True, the object will be included in the layer 1.
• Layer 2 - A boolean if True, the object will be included in the layer 2.
• Layer 3 - ...

Outputs

• Object - The input object.

Advanced Node Settings

• N/A

Examples of Usage

Shape Keys From Object

Description

This node returns a list of shape keys in the input object. Those outputs can then be used in the Shape Key Output
node.

146 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Object - An object.

Outputs

• Shape Keys - A list of all shape keys in the input object.


• Reference Key - The basis shape key.

Advanced Node Settings

• N/A

Examples of Usage

Shape key Output

Description

This node edits the values of shape keys.

Inputs

• Shape Key - A shape key.


• Value - The value of the input shape key.
• Slider Min - The minimum value of the value slider.

1.3. Nodes 147


Animation Nodes Manual, Release 2.0

• Slider Max - The maximum value of the value slider.


• Name - The name of the input shape key.
• Mute - A boolean to mute the input shape key.

Outputs

• Shape Key - The input shape key.

Advanced Node Settings

• N/A

Examples of Usage

Object ID Key

Description

This node returns the values of a specific ID key.


ID keys are are values that are set to objects and they are constants unless you update them. An example would be
storing the initial transformation of an object in an ID key and then access it for different reasons using the Object ID
key node.

Inputs

• Object - An input object.

Outputs

The outputs are based on the type of the ID key, however, if the ID key was an initial transformations ID key, the
outputs will be as follow:

148 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Exist - A boolean which is False if a key doesn’t exist and True if it does.
• Location - A vector which contain the location in the key.
• Rotation - An euler which contain the rotation in the key.
• Scale - A vector which contain the scale in the key.
• Matrix - A transformation Matrix stored in the key

Advanced Node Settings

• N/A

Examples of Usage

ID keys are particularly useful when one want to transform some objects relative to their original position. (One can
also use the delta transforms in the Transforms Output Node)
For instance, if I want to move an object 2 units in the x direction, if I used its current location and added 2 to it, it will
just keep moving forever because its new location will be its current location in the next node execution, So to solve
this problem, I can store the object position in an ID key and then add 2 to it.

Copy Object Data

Description

This node copies the data of one object to another. (They become linked)

Inputs

• From - An object to copy from.


• To - An object to copy to.

Outputs

• To - The copied to object.

1.3. Nodes 149


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Set Keyframes

Description

This node is an operation node which means it operates independently. It set key frames as the animation plays for the
selected transformation channel. To add a transformation channel click the plus button after choosing its type.

Inputs

• Enable - Make sure to disable this whenever you are not recording and just playing the animation.
• Set Keyframes - The node will not insert any keyframes if this option is disabled.
• Remove Unwanted- If enabled will delete unwanted frames during the animation.
• Object - An input object to set frames to.

Outputs

• N/A

Advanced Node Settings

• N/A

Object Group Operations

Description

This node adds or removes objects from input object group.

150 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Group - Reference object group.


• Object - An object to remove or add to the group.
• Linked - Link (Add) object to group if true and unlink (remove) if not.

Outputs

• Group - The input object group.

Advanced Node Settings

• N/A

Examples of Usage

Armature Info

Description

This node return some information about the bones of the input armature.

1.3. Nodes 151


Animation Nodes Manual, Release 2.0

Options

• Pose - The information is retuned in the pose position of the bones.


• Rest - The information is returned in the rest position of the bones.

Inputs

• Object - The armature object.


• Use World Space - Locations and matrices will be in global space in this is True.

Outputs

• Matrices - A transformation matrices that represent the locations, rotations and scales of the bones.
• Centers - A vector list that represent the locations of the centers of the bones.
• Directions - A vector list that represent the directions of the bones. The magnitude of each direction vector is
equal to the length of the bone.
• Lengths - The lengths of the bones.
• Heads - A vector list that represent the locations of the heads of the bones.
• Tails - A vector list that represent the locations of the tails of the bone.
• Names - A text list that contains the names of the bones.

Advanced Node Settings

• N/A

152 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Utils

Move Object

Description This node move the input object by the input vector every node execution.

Inputs
• Object - An object to move.
• Displacement - The displacement vector by which the object move each execution.

Outputs
• Object - The input object.

Advanced Node Settings


• N/A

Examples of Usage

Transform Object

Description This node transform the input object by the input transformation matrix every node execution.

1.3. Nodes 153


Animation Nodes Manual, Release 2.0

Inputs
• Object - An object to move.
• Matrix - The transformation matrix by which the object transform each execution.

Outputs
• Object - The input object.

Advanced Node Settings


• Use Center - This will use the object’s current location as the origin of transformation.

Examples of Usage

Update Object Matrix

Description Blender doesn’t update the object’s transformation matrix immediately after modifying the transforma-
tion, So you can use this node to update it.

Inputs
• Object - An object.

Outputs
• Object - The input object.

154 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings


• N/A

Reset Object Transforms

Description This node will transform the object to its identity state which is zeros in locations and rotations and
ones in the scale.

Inputs
• Object - An object.

Outputs
• Object - The input object.

Advanced Node Settings


• N/A

Copy Transforms

Description This node will copy the location, rotation and scale of an object to another.

Inputs
• From - An object to copy transform from.
• To - An object to copy transforms to.

1.3. Nodes 155


Animation Nodes Manual, Release 2.0

Outputs
• To - The object transforms are copied to.

Advanced Node Settings


• Use Current Transforms - If disabled an option to choose the frame at which the transforms are copied. This
frame can be absolute or relative to the current frame.

Examples of Usage

Get Selected Objects

Description This node will return the Active object and a list of the selected objects.

Inputs
• N/A

Outputs
• Selected Objects - A list of the selected objects.
• Active Object - The active object.

Advanced Node Settings


• N/A

Examples of Usage

Get Active Camera

Description This node will return the active camera in the scene.

156 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs
• N/A

Outputs
• Active Camera - The active camera.

Advanced Node Settings


• N/A

Object Instancer

Description

This node dynamically creates and duplicates objects.

Options

• Copy from source - This option is enabled by default and it lets you instance an object with its data, however,
if the option is disabled, the node will create objects with empty data blocks which you can then fill and control
by other nodes like the Copy Object Data Node or the Object Output Node.

1.3. Nodes 157


Animation Nodes Manual, Release 2.0

• Object Type - This option is only visible when copy from source is disabled. It lets you define the type of data
block the object should carry, so the data can be Mesh, Curve, Lamp, etc.
This example sums the last 2 options:

I used the object instancer node to create 5 objects with empty mesh data. I then used a Copy Data Node to copy the
mesh data from a cube to the first instance, however I didn’t edit or fill the mesh data of any of the other 4 object so
they are objects without any data and just act as an empty (An empty is just a location, rotation, and scale). Another
node that can fill in the mesh data of an object is the Object Output Node.
• Copy full object - If enabled will copy the modifiers and the constraints with the object. (Only available when
Copy From Source is enabled)
• Deep copy - If enabled will copy mesh data as well so that every data block has a single user. The new object
will be independent of the source. (Only available when Copy From Source is enabled)

Inputs

• Instances - The number of instances created of the object.


• Object - The input object to instance. (Only available when Copy From Source is enabled)

Outputs

• Objects - A list that contains the instanced objects.

Advanced Node Settings

• Parent to Main Container - Parent the resulted objects to AN main container.

158 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Remove Animation Data - Clear the animation data of the newly created objects.
• Reset Source Data - This will reset the source data for all instances.
• Unlink instances from node - This will separate the instances from the node to make sure they don’t get
removed when you remove the node.
• Hide relationship lines - This will hide the lines going to the container in the viewport.

Examples of Usage

Mesh

This category include nodes that process and create mesh objects.

Object Mesh Data

Description

This node returns some information about the input object like its vertices locations and polygon edge indicies.
The data is from blender’s object data block, which means, when the object is edited in edit mode, AN won’t update
the output data unless you change to object mode.

Inputs

• Object - An object.
• Use World Space - This option lets you choose between local and global coordinate space for the outputs.
• Use Modifiers - If enabled, will return the data as modifiers were applied, that includes both the generative and
deformative modifiers.
• Scene - The scene the object belong to.

1.3. Nodes 159


Animation Nodes Manual, Release 2.0

Outputs

• Vertex Locations - A vector list that includes vertices locations of the input object.
• Edge Indices - A list of edge indices that includes all the edges of the input object.
• Polygon Indices - A list of polygon indices that includes all the polygons of the input object.
• Vertex Normal - A vector list that contain unit vectors that represent the vertices normals of the input object.
• Polygon Centers - A vector list that contain the locations of the centers of the polygons of the input object. It
is computed as the average of vertices of the polygon.
• Polygon Normals - A vector list that contain unit vectors that represent the normals of the polygons of the input
object.
• Local Polygon Area - A float list that contain the areas of the polygons of the input object.
• Material Indices - An inter list that contains the material index for each polygon, where the first integer repre-
sent the index of the material assigned to the first polygon, ...
• Mesh Name - A string that contains the name of the mesh.

Advanced Node Settings

• N/A

Notes

• Mesh Name output is not the object name! It the the name of mesh data block that define the geometry of the
object. In blender you can find that name in the Data Panel.

Examples of Usage

Get Bounding Box

Description

This node returns mesh data of a cuboid that represents the bounding box of the input object.
A bounding box is a box that bounds the object, that is, each face of the box is a least upper bound or greatest lower
bound of a specific vertex coordinate.

160 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Object - An object.

Outputs

• Vertices - A vector list that includes vertices locations of the bounding box.
• Edges - A list of edge indices that includes all the edges of the bounding box.
• Polygons - A list of polygon indices that includes all the polygons of the bounding box.

Advanced Node Settings

• Use World Space - This option allows you to choose between local and global coordinate space for the bounding
box.

Examples of Usage

It is not every day where you would create a bounding box or visualize it. This node is useful as it actually gives you
the ability to determine the maximum and minimum value of the vertex coordinates at a certain axis, and you may use
it to perform normalization for instance.
In other words, if I were to calculate the x coordinate of the vertex that has the highest x coordinate (The maximum x
value of all vertices) I can just get the x coordinates of the vertex at index 6—It represents the intersection of the least
upper bounds in all axis so its x coordinate is the maximum x and its y is the maximum y and its z is the maximum
z—The same applies for the minimum but this time the vertex at index zero is sampled.

Vertex Group Input

Description

This node returns the weight(s) of the vertices in vertex groups.

1.3. Nodes 161


Animation Nodes Manual, Release 2.0

Options

• All - The output will be a float list that contain all the weights of the choosen vertex group.
• Index - The output will be a single float that contain the weight of the vertex at the input index.

Inputs

• Object - The object.


• Group Index - The index of the vertex group. (See Advanced Node Settings)
• Index - The Index of the vertex to sample its weight. (Only in Index option)
• Use Modifiers - If enabled, the values of the weights will be sampled after mdofiers are applied. (Only in All
option)

Outputs

• Weight(s) - The weights.

Advanced Node Settings

• N/A

Examples of Usage

Separate Mesh Data

Description

This node separates the input mesh data into it’s components:
• Vertex Locations.
• Edge Indices.
• Polygon Indices.

162 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Mesh Data - A mesh data to separate.

Outputs

• Vertex Locations - A vector list that contains the locations of the vertices of the input mesh data.
• Edges Indices - An edge indices list that contains the edge information of the input mesh data.
• Polygons Indices - A polygon indices list that contains the polygon information of the input mesh data.

Advanced Node Settings

• N/A

Combine Mesh Data

Description

This node combines individual mesh data into a mesh data block.

Inputs

• Vertex Locations - A vector list that contains the locations of the vertices of the input mesh data.
• Edges Indices - An edge indices list that contains the edge information of the input mesh data.
• Polygons Indices - A polygon indices list that contains the polygon information of the input mesh data.

Outputs

• Mesh Data - A mesh data.

Advanced Node Settings

• N/A

1.3. Nodes 163


Animation Nodes Manual, Release 2.0

Examples of Usage

Transform Polygons

Description

This node transforms input polygons based on an input transformation matrix.

Inputs

• Vertices - A vector list that represent the locations of the vertices of the polygons.
• Polygon Indices - The polygon indices list of the polygons.
• Matrix - A transformation matrix.

Outputs

• Vertices - The transformed vertices locations.


• Polygon Indices - The input polygon indices.

Advanced Node Settings

• N/A

Examples of Usage

Separate Polygons

Description

This node separate input polygons.

164 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Vertices - A vector list that represent the vertices locations of the polygons.
• Polygon Indices - A polygon indices that define the polygons.

Outputs

• Vertices - The vector list that represent the vertices locations of the separated polygons.
• Polygon Indices - A polygon indices list that define the separated polygons.

Advanced Node Settings

• N/A

Examples of Usage

Extract Polygon Transforms

Description

This node returns transformation matrices that describe the location and orientation of the input polygons. The local x
axis is aligned with the direction of the first edge of each polygon.

1.3. Nodes 165


Animation Nodes Manual, Release 2.0

Inputs

• Vertices Locations - A vector list that represent the the locations of the vertices of the polygons.
• Polygon Indices - The polygon indices of the polygons.

Outputs

• Transforms - A matrix list that include transformation matrices that describe the location and orientation of the
polygons.
• Inverse Transforms - The inverse matrix of the transforms.

Advanced Node Settings

• N/A

Examples of Usage

Prepare Polygon Transformation

Description

This node separate input polygons and return them in their unity position, that is, they are located at the center of the
world and lie on the xy plane.
It also return a list of transformation matrices that if used to transformed the output polygons, the result will be the
polygons in their initial position and orientation.

Inputs

• Vertices - A vector list that represent the vertices locations of the polygons.
• Polygon Indices - A polygon indices that define the polygons.

166 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Vertices - The vector list that represent the vertices locations of the separated polygons at their unity position.
• Polygon Indices - A polygon indices list that define the separated polygons.
• Transformations - A matrix list that include the transformation matrices that describe polygons original loca-
tions and orientations.

Advanced Node Settings

• N/A

Examples of Usage

Generators

Line

Description This node return the mesh data of a line based on an input starting point and an input ending point.

Inputs
• Start - A vector that define the starting point of the line.
• End - A vector that define the ending point of the line.
• Steps - An integer that define the number of vertices that form the line.

1.3. Nodes 167


Animation Nodes Manual, Release 2.0

Outputs
• Vertices - The vertices locations of the line.
• Edge Indices - The edge indices of the line.

Advanced Node Settings


• N/A

Examples of Usage

Grid

Description This node return the mesh data of a 2d grid based on the input data.

Options
• Size - This option lets you set the dimension of the grid.
• Step - This option lets you set the dimensions of each individual cell.

Inputs
• X Divisions - The number of lines in the x direction.
• Y Divisions - The number of lines in the y direction.
• X Distance - The distance between lines in x direction. (Only available in Step option)
• Y Distance - The distance between lines in y direction. (Only available in Step option)
• Length - The length of the grid. (Only available in Size option)
• Width - The width of the grid. (Only available in Size option)

168 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs
• Vertices - The vertices locations of the grid.
• Edge Indices - The edge indices of the grid.
• Polygon Indices - The polygon indices of the grid.

Advanced Node Settings


• N/A

Examples of Usage

Cylinder

Description This node return the mesh data of a cylinder.

Inputs
• Radius - Radius of the cylinder.
• Height - Height of the cylinder.
• Resolution - Number of vertices per loop that forms the cylinder.
• Caps - If enabled, the top and bottom of the cylinder will be filled with an Ngon.

Outputs
• Vertices - The vertices locations of the cylinder.
• Edge Indices - The edge indices of the cylinder.
• Polygon Indices - The polygon indices of the cylinder.

1.3. Nodes 169


Animation Nodes Manual, Release 2.0

Advanced Node Settings


• N/A

Examples of Usage

Operators

Find Close Vertices

Description This node takes a vector list (Usually represent the location of some points) and return edge indices list
that represent some connection between those input points.

Options
• Amount - This option lets you define the amount of connections that each point should have.
• Distance - This option lets you define a distance, if the distance between a point and another is less that distance,
a connections is initialized between them.

Inputs
• Points - A vector list that contain points locations.
• Amount - The amount of connections each point have. (Only available in the Amount option)
• Max Distance - The maximum distance each connection is allowed to have. (only available in the Distance
option)

Outputs
• Edges - An edge indices list that represent the connections.
• Distances - A float list that contains the lengths of the edges defined by the output edge indices and the input
point locations.

Advanced Node Settings


• N/A

170 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Edge To Tube

Description This node returns the mesh data of a mesh composed of cylinders in places of the input edges.

Inputs
• Points - The locations of the vertices of the edges.
• Edge Indices List - The edge indices list of the edges.
• Radius - Radius of the cylinders.
• Resolution - The number of vertices per loop that forms the cylinder.
• Caps - If true, cylinders’ starts and ends will be closed using an Ngon.

Outputs
• Vertices - The vertices locations of the cylinders.
• Polygon Indices - The polygon indices of the cylinders.

Advanced Node Settings


• N/A

Examples of Usage

Create Edges

Description This node creates edges based on two vectors lists that define the locations of the terminals of the edges.

1.3. Nodes 171


Animation Nodes Manual, Release 2.0

Inputs
• Edge Starts - A vector list that represent the vertices locations of the starts of the edges.
• Edge Ends - A vector list that represent the vertices locations of the ends of the edges.

Outputs
• Vectors - A vector list that represent the vertices locations of the edges.
• Edge Indices - Edges indices that describe the connection between each corresponding vectors.

Advanced Node Settings


• N/A

Examples of Usage

Create Edge Indices

Description This node creates an edge indices which then can be used to create an edge indices list to create meshes.

Inputs
• Index 1 - The index of the first vertex.
• Index 2 - The index of the second vertex.

172 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs
• Edge Indices - The resulted edge indices.

Advanced Node Settings


• N/A

Examples of Usage

Create Polygon Indices

Description This node creates a polygon indices which then can be used to create a polygon indices list to create
meshes.

Options
• Vertex Amount - This option generates a polygon indices of a specific number of vertices with the sequence 0,1,2,....

– Use list - It is the option you see beside the menu, if enabled, the node will expect a list of vertices
amounts and the output will be a polygon indices list that include polygon indices of corresponding
vertices amounts with the sequence 0,1,2,....
• Indices - This options convert an integer list to a polygon indices list.

Inputs
• Indices - An integer list that contain all the indices of the vertices that form the polygon. (Only available in
Indices option)
• Vertex amount(s) - The amount of vertices of the polygon, if this input was 3, the output polygon indices will
be 0,1,2. (Only available in Vertex Amount option)

Outputs
• Polygon Indices - The resulted polygon indices.

Advanced Node Settings


• N/A

Examples of Usage

1.3. Nodes 173


Animation Nodes Manual, Release 2.0

Edges Of Polygons

Description This node returns the edge indices of the edges that form the input polygons. Vertices that shared the
same polygon are going to share the same edges of the polygon as well.

Inputs
• Polygons - An input polygons.

Outputs
• Edges - The edges indices of the input polygons.

Advanced Node Settings


• N/A

Examples of Usage

Edge Info

Description This node return some info about the input edge(s).

Inputs
• Points - The locations of the vertices of the edge(s).
• Edge Indices - The edge indices of the edge(s).

174 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs
• Length - The length(s) of the input edge(s).
• Center - The center(s) of the input edge(s).

Advanced Node Settings


• N/A

Examples of Usage

Mesh Data List

Description

This node is used to create an arbitrary list of mesh data. A new mesh data can be added with the New Input button. A
new mesh data can also be added by plugging it into the transparent socket.

Inputs

• Element - A mesh data at the index 0.


• Element - A mesh data at the index 1.
• Element - ...

Outputs

• Mesh Data list - A list that contains all the input mesh data.

Advanced Node Settings

• Change type - Changes the type of the mesh data list to another list type.
• Hide Inputs - Hides all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

1.3. Nodes 175


Animation Nodes Manual, Release 2.0

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Mesh Data From Object

Description

This node returns the mesh data of the input object.

Options

• Edges - If enabled, edges will be included in the output mesh data.


• Faces - If enabled, faces will be included in the output mesh data.
• Use Modifiers - If enabled, the output mesh data will be computed after modifiers are applied.
• Use World Space - If enabled, vertices locations will be in world space coordinates.

Inputs

• Object - An object to return its mesh data.


• Scene - The scene the object belong to.

Outputs

• Mesh Data - The mesh data of the input object.

176 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Replicate Mesh Data

Description

This node copy the input mesh data multiple times then transforms each new copy based on a corresponding transfor-
mation matrix or a translation vector then copied are combined into a single mesh data. The transformations are input
as a list of matrices or vectors where its length is the number of copies.

Options

The transformations can either be defined by matrices which support translation, rotation and scaling or by vectors
that only support translations.
• Matrices - This option lets you define the transformations using a transformation matrix list.
• Vectors - This option lets you define the translations using a vector list.

Inputs

• Mesh Data - The mesh data.


• Matrices - A list of transformation matrices that defines the transformations applied on the copies where the
first matrix is applied on the first copy, second on second and so on.
• Vectors - A list of vectors that defines the translations applied on the copies where the first translation is applied
on the first copy, second on second and so on.

Outputs

• Mesh Data - A mesh data that contains the copies.

Advanced Node Settings

• N/A

1.3. Nodes 177


Animation Nodes Manual, Release 2.0

Examples of Usage

Join Mesh Data List

Description

This node combines multiple mesh data into a single mesh data.

Inputs

• Mesh Data List - A list of mesh data to join.

Outputs

• Mesh Data - The joined mesh data.

Advanced Node Settings

• N/A

Examples of Usage

Bmesh Mesh Data

Description

This node returns the mesh data of the input bmesh.

178 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Bmesh - A bmesh.

Outputs

• Vertex Locations - A vector list that includes vertices locations of the input bmesh.
• Edge Indices - A list of edge indices that includes all the edges of the input bmesh.
• Polygon Indices - A list of polygon indices that includes all the polygons of the input bmesh.

Advanced Node Settings

• N/A

Examples of Usage

Create Bmesh

Description

This node converts a mesh data into a Bmesh.

Inputs

• Mesh Data - Mesh data to convert.

Outputs

• Bmesh - The resulted Bmesh.

Advanced Node Settings

• N/A

1.3. Nodes 179


Animation Nodes Manual, Release 2.0

Examples of Usage

Bmesh From Object

Description

This node returns a bmesh data type for the input object.
It is not recommended to use this node if you are not going to use bmesh operations and just want to get mesh data,
because it is a lot slower to create.(Object Mesh Data node can get the same data in about 33x the speed of the bmesh)

Inputs

• Object - An object.
• Use World Space - This option allows you to choose between local and global coordinates space for the output
vectors (vertices location).
• Use Modifiers - This option if enabled will return the data as modifiers were applied, that includes both the
generative and defomative modifiers.
• Scene - The scene the object exist in.

Outputs

• Bmesh - A bmesh data type.

Advanced Node Settings

• N/A

Notes

• Using Bmesh doesn’t mean that the info will be updated on the fly when you are in edit mode editing, you will
have to change to object mode to update the edits you applied.

180 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Tools

Limited Dissolve

Description This node perform a Limited Dissolve bmesh operation on the input bmesh, this operation is similar if
not identical to blender’s limited dissolve operator.
Limited Dissolve dissolve the edges between faces which make an angle less than an input threshold.

Inputs
• Bmesh - An Input Bmesh.
• Angle Limit - The threshold for dissolving the edges. (If the angle between 2 faces is lower than this angle, the
edge between them will be dissolved.)
• Dissolve Boundries - This option if enabled will dissolve vertices inbetween faces boundries.

Outputs
• Bmesh - The resulted Bmesh.

Advanced Node Settings


• N/A

Examples of Usage

Remove Doubles

Description This node perform a “Remove Doubles” bmesh operation on the input bmesh, this operation is similar
if not identical to blender’s remove doubles operator.
Remove Doubles join vertices that are close in space and the threshold is defined by an input.

1.3. Nodes 181


Animation Nodes Manual, Release 2.0

Inputs
• Bmesh - An Input Bmesh.
• Distance - The threshold for merging the vertices. (If the distance between 2 points is lower than this number,
they will be joined)

Outputs
• Bmesh - The resulted Bmesh.

Advanced Node Settings


• N/A

Examples of Usage

Recalculate Normals

Description This node recalculate the normals of vertices of the input bmesh.
It is often that the created mesh will have zero normals—The magnitude of the normals is zero—and you will have to
recalculate the normals by using this node.

Options
• Invert Normals - If enabled, computed normals will be inverted.

Inputs
• Bmesh - An Input Bmesh.

182 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs
• Bmesh - The resulted Bmesh.

Advanced Node Settings


• N/A

Shade Object Smooth

Description This node set the shading of the input object to smooth or flat.

Inputs
• Object - An Object.
• Smooth - A boolean which if True will shade the object smooth and if False will shade the object flat.

Outputs
• Object - The input object.

Advanced Node Settings


• N/A

Note If you shaded an object smooth and it get rendered black, then its normals are null vectors and you will have
to recalculate the normals using the Recalculate Normals Node.

Examples of Usage

Object Output

Description

This node edits the input object’s data based on a new input data.

1.3. Nodes 183


Animation Nodes Manual, Release 2.0

Options

• Mesh Data - This option lets you write a mesh data to the input object. Since the mesh data block carries only
the vertices locations, edge, indices, and polygons indices info, those will be the only data in the output object.
(A bmesh data carries more information than the mesh data block like vertices normals.)
• Bmesh - This option lets you write a bmesh data to the input object. A bmesh data carry much more information
than the mesh data, such extra information like Vertex Normals, Vertex group weights and Material indices.
• Vertices - This option will only edit the vertices locations, that is, the input object should already have some
data and you are just editing the vertices locations of this data. This option is much faster than the Mesh Data
option assuming all you do is edit the vertices.

Inputs

• Object - An object to edit. The plus button let you add a new object and write to it.
• Mesh Data - Mesh data to write to the input object. (Only for the Mesh Data option)
• Bmesh - Bmesh to write to the input object. (Only for the Bmesh option)
• Vertices - Vector list that represents the new locations for the vertices. (Only for the vertices option)
• Material Indices - An integer list, the first integer represent the index of the material of the first polygon, the
2nd integer represent the index of the material of the 2nd polygon, ....

Outputs

• Object - The input object.

Advanced Node Settings

• Make Mesh Exportable - If enabled, the mesh will be edited in order to be exported correctly. Use when
exporting using Alembic.
• Validate Mesh - If enabled, animation nodes will check if the mesh data is valid and if not, it will try to correct
it as much as possible. This option should always be enabled to avoid blender crashes. However, if you are
absolutely sure that your mesh data is valid, you should disable it because it slows down execution.

184 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Print Validation Info - If enabled and Validate Mesh is enabled, animation nodes will print the procedures
taken to fix the input mesh data.

Examples of Usage

Spline

This category include nodes that can process and create curves.

Splines From Object

Description

This node returns the spline(s) of the input curve.

Inputs

• Object - A curve to return its splines.


• Use World Space - If True, the splines will be in world space.

Outputs

• Splines - A list of splines that has all the splines in the input curve.

Advanced Node Settings

• Import Type - This option is set to all by default which return all the splines in the input curve. The other
option Single will add an extra input Index which will be the index of the output spline and of course the output
will be a single spline and not a list of splines.

Examples of Usage

Spline From Points

Description

This node creates a new spline from input vectors, each vector will represent the position of a handle in the output
spline.

1.3. Nodes 185


Animation Nodes Manual, Release 2.0

Options

• Bezier - This option will create the spline as a bezier spline which have a left and right handle.
• Poly - This option will create the spline as a simple poly spline, a poly spline is just a linear connection between
points and can’t be smoothed or edited but it is faster to create.

Inputs

• Points - A vector list that represents the position of the points of the output splines.
• Left Handles - A vector list that represent the position of the left handles of the spline.
• Right Handles - A vector list that represent the position of the right handles of the spline.
• Radius - A float list the contains the radii of each of the points of the spline.
• Cyclic - A boolean which if True will connect the first handle to the last handle and thus having a closed spline.

Outputs

• Spline - The output spline.

Advanced Node Settings

• N/A

Examples of Usage

Spline From edges

186 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node creates a linear poly spline for every input edge, that is, every edge will represent a linear poly spline that
have 2 point which are the vertices of the edge.

Options

• Radius Per Vertex - This options sets the radius per vertex, so the node expects a radius list with the same
length as the the vertices list.
• Radius Per Edge - This options sets the radius per edge, so the node expects a radius list with the same length
as the the edge indices list.

Inputs

• Vertices - A vector list that represent the position of the vertices of the edges.
• Edge Indices - An Edge Indices list.
• Radius(radii) - The radius of the splines or a list of radii of the splines based on the selected option.

Outputs

• Splines - The output splines.

Advanced Node Settings

• N/A

Examples of Usage

Create Spline List

Description

This node is used to create an arbitrary list of splines. A new spline can be added with the New Input button. A new
spline can also be added by plugging it into the transparent socket.

1.3. Nodes 187


Animation Nodes Manual, Release 2.0

Inputs

• Element - A spline at the index 0.


• Element - A spline at the index 1.
• Element - ...

Outputs

• spline list - A list that contains all the input splines.

Advanced Node Settings

• Change type - Changes the type of the spline list to another list type.
• Hide Inputs - Hides all the inputs in the node.
• Remove Unlinked Inputs - Removes all the inputs that are not connected to another node.

Caution

A warning will pop up when you use the Remove Unlinked Inputs button in the node, while if you used the the Remove
Unlinked Inputs button in the Advanced Node Settings the inputs will be removed without a warning.

Examples of Usage

Append Point To Spline

Description

This node adds a new point to the input spline.

188 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Point - This option will add a point with a linear handle (A non bezier point).
• Bezier Point - This option will add a bezier point which have a left and right handle.

Inputs

• Spline - A spline to add the point to.


• Point - The position of the point that will be added.
• Left Handle - The position of the left handle of the bezier point. (Only in the Bezier Point option)
• Right Handle - The position of the right handle of the bezier point. (Only in the Bezier Point option)
• Radius - The radius of the point.

Outputs

• Spline - The output spline.

Advanced Node Settings

• N/A

Examples of Usage

Transform Spline

1.3. Nodes 189


Animation Nodes Manual, Release 2.0

Description

This node transform the input spline based on the input transformation matrix.

Inputs

• Spline - A spline to transform.


• Transformation - A transformation matrix.

Outputs

• Spline - The transformed spline.

Advanced Node Settings

• N/A

Examples of Usage

Connect Splines

Description

This node connects all the input splines, that is, the ending point of each spline will be connected to the starting point
of the following spline.

Inputs

• Splines - A list of splines to connect.

190 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Spline - The connected spline.

Advanced Node Settings

• N/A

Examples of Usage

Trim Spline

Description

This node will trim (cut) the input spline to a specific normalized interval.

Options

• Uniform - This option samples the points regardless of the geometry of the spline.
• Resolution - This option samples the points based on the geometry of the spline.
To understand this better lets look at the following example:

1.3. Nodes 191


Animation Nodes Manual, Release 2.0

The above example shows 2 identical splines where the upper one uses Uniform and the other uses Resolution. If one
were to sample some points at regular intervals on both splines, He would observe that:
• Points on Uniform are regularly distributed.
• Points on Resolution are dense at some areas and spaced at others.
So we notice that Resolution care about the geometry of the spline and so a regularly spaced parameters will be closer
at parts of the spline where it has dense geometry and spaced at relaxed parts.
Uniform on the other hand will yield results based on the actual distance along the spline, however, it is much slower
to compute.

Inputs

• Spline - A spline to trim.


• Start - The start of the interval.
• End - The end of the interval.

Outputs

• Spline - The trimed spline.

Advanced Node Settings

• Resolution - It is the quality of the resulted spline, in other words, it is the number of points in the output spline.

192 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

Set Spline Radius

Description

This node set the radius of individual spline points.

Inputs

• Splines - A spline(s) to set their radius.


• Radius - A float list that include the radii of each point in the input spline. (Has to has a length equal to the
amount of points the spline(s) has)

Outputs

• Spline - The output splines.

Advanced Node Settings

• N/A

Examples of Usage

Make Spline Cyclic

Description

This node will connect or disconnect the first and the last point of the input spline making it cyclic or not.

1.3. Nodes 193


Animation Nodes Manual, Release 2.0

Inputs

• Spline - A spline.
• Cyclic - A boolean which if true will connect the first and the last handle of the input spline together, if fasle
will disconnect them.

Outputs

• Spline - The output spline.

Advanced Node Settings

• N/A

Examples of Usage

Smooth Bezier Spline

Description

This node will edit the handles of the input spline so that the spline get smoothed.
In fact, the node just set the length of the handles to the smoothness value and align them to the tangent line to the
curve at their location. So if the smoothness value is set to zero, the bezier will act as a poly spline since it has no
handles.
Note that this only work for bezier splines and not poly splines.

194 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Spline - A spline.
• Smoothness - A float that defines the amount of smoothness. (the length of the handles of the bezier spline)

Outputs

• Spline - The smoothed spline.

Advanced Node Settings

• N/A

Examples of Usage

Change Spline Type

Description

This node change the type of the input spline to either bezier or poly spline.

Options

• Poly - Will change the spline into a poly spline.


• Bezier - Will change the spline into a bezier spline.

Inputs

• Spline - A spline(s) to convert.

Outputs

• Splines - The converted splines.

1.3. Nodes 195


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Replicate Spline

Description

This node copy the input spline multiple times then transforms each new copy based on a corresponding transformation
matrix or a translation vector. The transformations are input as a list of matrices or vectors where its length is the
number of copies.

Options

The transformations can either be defined by matrices which support translation, rotation and scaling or by vectors
that only support translations.
• Matrices - This option lets you define the transformations using a transformation matrix list.
• Vectors - This option lets you define the translations using a vector list.

Inputs

• Spline(s) - The splines.


• Matrices - A list of transformation matrices that defines the transformations applied on the copies where the
first matrix is applied on the first copy, second on second and so on.
• Vectors - A list of vectors that defines the translations applied on the copies where the first translation is applied
on the first copy, second on second and so on.

Outputs

• Splines - A spline list that contains the copies of the spline.

196 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Spline Info

Description

This node returns some information about the input spline as the location of its points and handles.

Options

• Poly - This option will only return the locations of the points and not their handles.
• Bezier - This option will return both the locations of the points as well as their handles.

Inputs

• Spline - A spline.

Outputs

• Points - A vector list that contain the locations of the points of the input spline.
• Left Handles - A vector list that contain the locations of the left handles of the input spline.
• Right Handles - A vector list that contain the locations of the right handles of the input spline.
• Radii - A float list that contains the radii of the points of the input spline.
• Cyclic - A boolean that is true if the spline is closed, that is, every handle is connected to two other handles.
• Point Amount - The amount of points in the input spline.

1.3. Nodes 197


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Evaluate Spline

Description

This node will return the position and the tangent line of a point on the curve at some normalized distance from the
starting point where this distance is defined by the input Parameter.

Options

• Uniform - This option samples the points regardless of the geometry of the spline.
• Resolution - This option samples the points based on the geometry of the spline.
To understand this better lets look at the following example:

198 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

The above example shows 2 identical splines where the upper one uses Uniform and the other uses Resolution. If one
were to sample some points at regular intervals on both splines, He would observe that:
• Points on Uniform are regularly distributed.
• Points on Resolution are dense at some areas and spaced at others.
So we notice that Resolution care about the geometry of the spline and so a regularly spaced parameters will be closer
at parts of the spline where it has dense geometry and spaced at relaxed parts.
Uniform on the other hand will yield results based on the actual distance along the spline, however, it is much slower
to compute.

Inputs

• Spline - A spline to evaluate.


• Parameter - The position of the point to be evaluated in the normalized distance of the spline. (0 is the start of
the spline and 1 is the end of the spline)

Outputs

• Location - A vector that represents the position of the point in the curve that correspond to the input parameter.
• Tangent - A vector that is aligned with the tangent line to the evaluated point.

Advanced Node Settings

• Resolution - It is the quality of the evaluated spline, in other words, it is the number of point in the spline used
in evaluation.

1.3. Nodes 199


Animation Nodes Manual, Release 2.0

Examples of Usage

Project On Spline

Description

This node will project the input point to the input spline and return some information about the projection. The
projection of a point on a spline is the closest point to the input point and the vector going from the point to its
projection is perpendicular to the tangent at that point.

Options

• Extended - This option of enabled will virtually extend the spline from its terminals and project points on that
virtual line as well.The vitual line is just the tangent line to both terminals.

200 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

As you may see in this illustration: If extended is enabled, points that are close to the spline will be projected perfectly
as well as points that are away—Which are projected on a vitual line crated by the node. If extended is disabled, points
that are close to the spline will be projected perfectly but points that are away will always be projected to one of the
terminals of the spline.

Inputs

• Spline - A spline.
• Location - The location of the point to be projected.

Outputs

• Position - The position of the point—on the curve—that is closest to the input point.
• Tangent - A vector that respresents the tangent line to the output position point.
• Distance - The distance between the input point and the position point.
• Parameter - The location of the output position point in the normalized distance of the spline. (Is not calculated
if the Extended option is enabled)

Advanced Node Settings

• N/A

Examples of Usage

Get Spline Length

1.3. Nodes 201


Animation Nodes Manual, Release 2.0

Description

This node returns the length of the input spline, it can be restricted to a defined interval.

Options

• Uniform - This option samples the points regardless of the geometry of the spline.
• Resolution - This option samples the points based on the geometry of the spline.
To understand this better lets look at the following example:

The above example shows 2 identical splines where the upper one uses Uniform and the other uses Resolution. If one
were to sample some points at regular intervals on both splines, He would observe that:
• Points on Uniform are regularly distributed.
• Points on Resolution are dense at some areas and spaced at others.

202 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

So we notice that Resolution care about the geometry of the spline and so a regularly spaced parameters will be closer
at parts of the spline where it has dense geometry and spaced at relaxed parts.
Uniform on the other hand will yield results based on the actual distance along the spline, however, it is much slower
to compute.
In this node, those options only matter when an interval is defined since the interpolation method is only used to define
the interval and not to get the length.

Inputs

• Spline - A spline.
• Start - The start of the interval.
• End - The end of the interval.

Outputs

• Length - The length of the spline in the defined interval.

Advanced Node Settings

• Resolution - It is the quality of the spline used to do the calculation, in other words, it is the number of handles
in the spline which is used in sampling the interval.

Examples of Usage

Get Spline Samples

Description

This node will return n number of points along with their tangent vectors where n is the Amount input, Those points
are points on the spline in the input interval that are distributed based on the evaluation option—Uniform or Resolution.

1.3. Nodes 203


Animation Nodes Manual, Release 2.0

Options

• Uniform - This option samples the points regardless of the geometry of the spline.
• Resolution - This option samples the points based on the geometry of the spline.
To understand this better lets look at the following example:

The above example shows 2 identical splines where the upper one uses Uniform and the other uses Resolution. If one
were to sample some points at regular intervals on both splines, He would observe that:
• Points on Uniform are regularly distributed.
• Points on Resolution are dense at some areas and spaced at others.
So we notice that Resolution care about the geometry of the spline and so a regularly spaced parameters will be closer
at parts of the spline where it has dense geometry and spaced at relaxed parts.
Uniform on the other hand will yield results based on the actual distance along the spline, however, it is much slower
to compute.

Inputs

• Spline - A spline to evaluate.


• Amount - The amount of point to return.
• Start - The starting point of the interval.
• End - The ending point of the interval.

Outputs

• Positions - A vector list that contains the evaluated points positions.

204 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Tangent - A vector list that contains vectors that are aligned with the tangent line to the evaluated points.

Advanced Node Settings

• Resolution - It is the quality of the evaluated spline, in other words, it is the number of handles in the spline
used in evaluation.

Examples of Usage

Curve Object Output

Description

This node takes a list of splines and write them to a curve object. It is possible to insert a single spline because the
node is vectorized.

Inputs

• Splines - A list of splines that form the curve.


• Bevel Depth - The radius of curve.
• Bevel Resolution - An integer that define the number of vertices of the curve. Notice that the original number
of vertices of the curve is 4 and the integer defines the extra number of vertices to be added.
• Extrude - Amount of extrusion applied to the curve.
• Bevel Start - A factor that defines the start of beveling.
• Bevel End - A factor that defines the end of beveling.
• Offset - The amount of offset applied to the curve.
• Preview Resolution - The quality of the curve.(The number of loops that connect eah two handles)
• Taper Object - A curve to use as a factor for the radius of the curve.
• Bevel Object - A curve to use as a shape for the curve.
• Fill Mode - A string that defines the mode for filling the curve, Possible modes can be known from the advanced
node setting panel.

1.3. Nodes 205


Animation Nodes Manual, Release 2.0

Outputs

• Object - The output curve.

Advanced Node Settings

• N/A

Examples of Usage

Loft Splines

Description

This node generates a mesh by sampling some points on the input splines and bridge (connect) them in order.

Options

• Bezier - This option will use a bezier interpolation to locate the segments of the bridge between the splines and
thus having a smooth output mesh.
• Linear - This option will use a linear interpolation to locate the segments of the bridge between the splines and
thus having a flat connection between the splines.
If the Surface Samples is set to 2 or the Smoothness is set to zero, the bezier interpolation will work just as a linear
interpolation.

206 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Inputs

• Splines - A list of splines to be connected.


• Spline Samples - The amount of vertices sampled and used to create the mesh.
• Surface Samples - The amount of segments created between the splines.
• Cyclic - A boolean which if true will connect the polygons vertically and thus having a manifold object.
• Smoothness - A factor that define the smoothness of the beizer interpolation.(Only when using Bezier option)
• Start - The normalized distance at which the first loop will start.
• End - The normalized distance at which the first loop will end.

Outputs

• Vertices - A vector list that contains the vertices locations of the output mesh.
• Polygons - A polygon indices list that carry the polygons information of the output mesh.

Advanced Node Settings

• Spline Distribution - The method used to sample spline samples (see Evaluate Spline Node for more info)
• Surface Distribution - The method used to sample surface segments (see Evaluate Spline Node for more info)
• Resolution - The number of handles used to create the spline used to perform the evaluation when using the
Uniform Distribution.

1.3. Nodes 207


Animation Nodes Manual, Release 2.0

Examples of Usage

Revolve Splines

Description

This node creates a mesh from the input splines by revolving the profile spline around the axis spline.

Options

• Project - This option will sample some points from the profile spline, project them on the axis spline and
then revolve each point around its projection.This method output a nicer result especially if the axis and profile
splines are different in length but it is much slower due to the projection process.
• Same Parameter - This option will sample some point from both the profile and the axis splines and revolve
each point around its corresponding point. This method have difficulties especially if the axis and the profile
splines are different in length since corresponding points will be far from each other and thus resulting distortion
however this method is genrally much faster than the Project method.

208 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Inputs

• Axis - A spline that is used as the source of pivots for the revolving.
• Profile - A spline in which spline samples are originated for revolving.
• Spline Samples - The number of points sampled for revolving.
• Surface Splines - The number of points sampled during revolving.

Outputs

• Vertices - A vector list that contains the vertices locations of the output mesh.
• Polygons - A polygon indices list that carries the polygons information of the output mesh.

Advanced Node Settings

• N/A

Examples of Usage

Particles

This category include nodes that access blender’s particle systems and return some information about its particles and
hairs.

1.3. Nodes 209


Animation Nodes Manual, Release 2.0

Particle Systems From Object

Description

This node return a list of particle systems in the input object along with the active (selected) one.

Inputs

• Object - An object.

Outputs

• Active - The active particle system in the input object.


• Particle Systems - A list of particle systems in the object.

Advanced Node Settings

N/A

Examples of Usage

Particles Data

Description

This node return some info about particles of the input particle system.

210 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Unborn - Include particles that are not born yet.


• Alive - Include particles that are alive.
• Dying - Include particles that are dying.
• Dead - Include particles that are dead.

Inputs

• Particle System - A particle system.

Outputs

• Locations - A vector list that contains the locations of the particles of the input particle system.
• Velocities - A vector list that contains the velocities of the particles of the input particle system.
• Sizes - A float list that contains the sizes of the particles of the input particle system.
• Birth times - A float list that contains the times at which particles of the input particle system were born.
• Die times - A float list that contains the times at which particles of the input particle system died.

Advanced Node Settings

N/A

Examples of Usage

Hair Data

Description

This node converts hairs of the input particle system into splines.

1.3. Nodes 211


Animation Nodes Manual, Release 2.0

Options

• Bezier - Creates bezier splines.


• Poly - Creates poly splines.

Inputs

• Particle System - A particle system.


• Use World Space - If True, splines will be in world space.

Outputs

• Hair Splines - A spline list that contains splines that were generated from the hair of the particle system.

Advanced Node Settings

N/A

Examples of Usage

Animation

Time Info

Description

This node returns some information about scene playback.

Inputs

• Scene - A scene to return its playback information.

Outputs

• Frame - Current frame. It is a float because of existence of subframes.


• Start Frame - First frame of the scene playback range.
• End Frame - Last frame of the scene playback range.
• Frame Rate - The frame rate of the playback.

212 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Delay Time

Description

This node subtracts the delay input from the time input.
The essence of this subtraction is changing the frame at which an animation will start when using one of the animation
nodes or using the output in a custom animation node tree. That is because negative values are clamped to zero in the
animation process so subtracting 20 from the input frame will result in zero for the first 20 frame.

Inputs

• Time - An input time.


• Delay - A value to subtract from the time or the frame at which the animation will start.

Outputs

• Time - The delayed time.

Advanced Node Settings

• N/A

Examples of Usage

Repeat Time

Description

This node resets the time every n number of frames where n is the input Rate. Technically it is the input Time modulo
the input Rate.

1.3. Nodes 213


Animation Nodes Manual, Release 2.0

Options

214 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Time - An input time.


• Rate - A value at which the time will reset and start counting again.

Outputs

• Time - The repeated time.

Advanced Node Settings

• N/A

Examples of Usage

Animate Float

Description

This node mixes between two floats where the factor for mixing is the time mapped to an input interval Duration.

Inputs

• Time - A time or the factor for mixing.


• Start - A value to start the animation with or the first input for mixing.
• End - A value to end the animation with or the second input for mixing.
• Interpolation - An Interpolation(Function) to evaluate the time at (Linear will just use the input time).
• Duration - The duration of the animation or the interval to map the time to or the value the time is divided by.

1.3. Nodes 215


Animation Nodes Manual, Release 2.0

Outputs

• Time - The different between the input time and the duration (Isn’t affected by the input interpolation).
• Result - The value of the animation evaluated at the input time or the result of mixing.

Advanced Node Settings

• N/A

Examples of Usage

Animate Vector

Description

This node mixes between two vectors where the factor for mixing is the time mapped to an input interval Duration.

Inputs

• Time - A time or the factor for mixing.


• Start - A value to start the animation with or the first input for mixing.
• End - A value to end the animation with or the second input for mixing.

216 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Interpolation - An Interpolation(Function) to evaluate the time at (Linear will just use the input time).
• Duration - The duration of the animation or the interval to map the time to or the value the time is divided by.

Outputs

• Time - The different between the input time and the duration (Isn’t affected by the input interpolation).
• Result - The value of the animation evaluated at the input time or the result of mixing.

Advanced Node Settings

• N/A

Examples of Usage

Animate Euler

Description

This node mixes between two eulers where the factor for mixing is the time mapped to an input interval Duration.

Inputs

• Time - A time or the factor for mixing.

1.3. Nodes 217


Animation Nodes Manual, Release 2.0

• Start - A value to start the animation with or the first input for mixing.
• End - A value to end the animation with or the second input for mixing.
• Interpolation - An Interpolation(Function) to evaluate the time at (Linear will just use the input time).
• Duration - The duration of the animation or the interval to map the time to or the value the time is divided by.

Outputs

• Time - The different between the input time and the duration (Isn’t affected by the input interpolation).
• Result - The value of the animation evaluated at the input time or the result of mixing.

Advanced Node Settings

• N/A

Examples of Usage

Animate Quaternion

Description

This node mixes between two quaternions where the factor for mixing is the time mapped to an input interval Duration.

218 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Time - A time or the factor for mixing.


• Start - A value to start the animation with or the first input for mixing.
• End - A value to end the animation with or the second input for mixing.
• Interpolation - An Interpolation(Function) to evaluate the time at (Linear will just use the input time).
• Duration - The duration of the animation or the interval to map the time to or the value the time is divided by.

Outputs

• Time - The different between the input time and the duration (Isn’t affected by the input interpolation).
• Result - The value of the animation evaluated at the input time or the result of mixing.

Advanced Node Settings

• N/A

1.3. Nodes 219


Animation Nodes Manual, Release 2.0

Examples of Usage

Animate Matrix

Description

This node mixes between two matrices where the factor for mixing is the time mapped to an input interval Duration.

Inputs

• Time - A time or the factor for mixing.


• Start - A value to start the animation with or the first input for mixing.
• End - A value to end the animation with or the second input for mixing.
• Interpolation - An Interpolation(Function) to evaluate the time at (Linear will just use the input time).
• Duration - The duration of the animation or the interval to map the time to or the value the time is divided by.

Outputs

• Time - The different between the input time and the duration (Isn’t affected by the input interpolation).
• Result - The value of the animation evaluated at the input time or the result of mixing.

Advanced Node Settings

• N/A

Examples of Usage

Animate Color

220 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node mixes between two colors where the factor for mixing is the time mapped to an input interval Duration.

Inputs

• Time - A time or the factor for mixing.


• Start - A value to start the animation with or the first input for mixing.
• End - A value to end the animation with or the second input for mixing.
• Interpolation - An Interpolation(Function) to evaluate the time at (Linear will just use the input time).
• Duration - The duration of the animation or the interval to map the time to or the value the time is divided by.

Outputs

• Time - The different between the input time and the duration (Isn’t affected by the input interpolation).
• Result - The value of the animation evaluated at the input time or the result of mixing.

Advanced Node Settings

• N/A

Examples of Usage

Interpolation

Construct Interpolation

Description

This node constructs an interpolation. It construct multiple function types like:

1.3. Nodes 221


Animation Nodes Manual, Release 2.0

• Linear.
• Sinusoidal - Sometimes known as the ease in-out function.
• Power.
• Exponential
• Circular.
• Back.
• Bounce.
• Elastic.

Inputs

• Based on the selected function.

Outputs

• Interpolation - An interpolation.

Advanced Node Settings

• N/A

Notes

Ease in option need to be checked for some interpolations like the power and exponential interpolation to work.

Examples of Usage

Curve Interpolation

Description

This node takes some points and returns an interpolation that represents a spline interpolation of the input points (A
function that satisfy all the input points).

222 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Editing the curve works just like blender’s interpolation curve.


• Cache Interpolation - If True, Interpolation will be cached allowing much faster evaluation.

Outputs

• Interpolation - An interpolation that represent a spline interpolation of the input points.

Advanced Node Settings

• N/A

Examples of Usage

Interpolation From FCurve

Description

This node generates an interpolation from a Fcurve—A blender data block that represent animations of transformation
channels or other values.

1.3. Nodes 223


Animation Nodes Manual, Release 2.0

Inputs

• FCurve - A FCurve.

Outputs

• Interpolation - A function that represents the input FCurve.

Advanced Node Settings

• N/A

Mix Interpolation

Description

This node mixes between two interpolations by a defined factor.

Options

• Overlay - In this option, if one were to mix two interpolations by a factor F and evaluate the output interpolation
at the value V, He would observe that the result is identical to the result of evaluating both interpolations at V
and mixing their outputs by the factor F.
• Chain - This option stack input interpolations into a single interpolation. The first interpolation will be used
when evaluating at values from zero to input Position while the second will be used when evaluating at values
from there to 1, that is of course after they get compressed from 0,1 range to those smaller intervals. Here is an
illustration for mixing a linear interpolation with an exponential one:

224 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Interpolation 1 - An interpolation.
• Interpolation 2 - An interpolation.
• Factor - A float that control the amount of each interpolation input to the output, Where 0 means the first
interpolation only and 1 means the second interpolation only. (Only in overlay option)
• Position - The position at which the first interpolation ends and the second interpolations starts assuming that
the fade width is set to zero. (Only in chain option)
• End 1 - It is the maximum value of the first interpolation. (Only in chain option)
• Start 2 - It is the minimum value of the second interpolation. (Only in chain option)
• Fade Width - It is the difference between the end of the first interpolation and the start of the second interpola-
tion. (Only in chain option)

Outputs

• Interpolation - The result of mixing the two interpolations.

Advanced Node Settings

• N/A

Examples of Usage

1.3. Nodes 225


Animation Nodes Manual, Release 2.0

Mirror Interpolation

Description

This node can be used to get the inverse of the input interpolation, the node can also combine the interpolation with its
inverse resulting in a symmetric function around the line x=0.5.

Options

• Chain - If enabled, the interpolation will be combined with its inverse, where the original interpolation will be
remapped to the domain [0,0.5] and its inverse in the domain [0.5,1]. If disabled, the output will be the
inverse of the interpolation.

Inputs

• Interpolation - An interpolation.

Outputs

• Interpolation - The new interpolation.

Advanced Node Settings

• N/A

Examples of Usage

Evaluate Interpolation

Description

This node evaluates the input Interpolation at the input position.

226 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Position - The value at which the interpolation is evaluated at.(x in F(x) where F is the input interpolation.)
• Interpolation - An interpolation to evaluate.(F in F(x) where x is the input position)

Outputs

• Value - The output of the interpolation at the value Position.(F(x) where F is the input interpolation and x is the
input position)

Advanced Node Settings

• N/A

Examples of Usage

Interpolations are functions that takes a value between 0 and 1 and return a value that is also between 0 and 1. For
instance, this function can be a square function (f(x)=x^2) and when evaluated at 0.5 the output will be 0.25.

Falloff

Fade Falloff

Description

This node creates an index based falloff that associates input Start Value to all objects with index less than some input
index and the input End Value to all objects with index more than some input index, while the objects at indicies in
between are associated with values in between the Start Value and End Value evaluated at the input interpolation.

1.3. Nodes 227


Animation Nodes Manual, Release 2.0

Illustration

The examples above shows the fade falloff node in action. We offset the vertices of the line by one unit in the z-axis
and used the Fade Falloff node as a factor for that offset. The Start Index is set to 2 so all vertices with index less
than or equal 2 are offset 2 units in the z-axis because the original offset multiplied by the Start Value is 1x2=2.
The End Index is set to 6 so all vertices with index larger than or equal 6 are not offset because the original offset
multiplied by the End Value is 1x0=0. Indices in between however (from 2 to 6) are offset with amounts linearly

228 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

changing between 0 and 2. Had I used a non-linear interpolation, values will no longer linearly change as in the
following example:

Notice how they are changing exponentially and how the start value affected the offset.

Options

Options are only different on how the start and end index are defined.
• Start / End - User define start and end indices directly.
• Start / Amount - User define start index and the amount of indices in the interval.
• End / Amount - Use define the end index and the amount of indices in the interval.

Inputs

• Start value - The value the fading start with.


• End Value - The value the fading end with.
• Interpolation - An interpolation that output is evaluated at.

Outputs

• Falloff - The actual falloff object.

1.3. Nodes 229


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Delay Falloff

Description

This node creates an index based falloff that associates a float that increases as the time increases where objects at
indicies that are closer to zero starts increasing before those that are farther away from zero. User can control the rate
of increasing relative to time and indices.

Illustration

The vertices of the line are suppose to move one unit in the z-axis but since I used the Delay Falloff as a factor, the
offset depend on time. We notice, as the time increase, the vertex at first index start moving, the vertex at the second
index didn’t start moving till the time became 5 which is the Delay input, the vertex at the first index stopped moving
when time reached 10 which is the Duration input. So we conclude that input Delay is the time it takes for an object
to start moving relative to the previous object while the input Duration is the amount of time it takes for every object
to reach its maximum value which is 1. The output is also evaluated at the input interpolation.

Inputs

• Time - The current time.


• Delay - Time span between the animation start of two successive objects.
• Duration - Time it takes for an object to each its maximum value (1).
• Interpolation - The output is evaluated at this input interpolation or the velocity function of the animation.
• Offsets - When given, it specifies how much each object is offset in time.

230 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Wiggle Falloff

Description

This node generates an index based falloff that associates a 1D perlin noise evaluated at some input value for every
object. Unlike Random Falloff node, noise can be smoothly animated. For more info, see Number Wiggle.

Inputs

Inputs are the same as Number Wiggle node.

Outputs

• Falloff - The actual falloff object.

1.3. Nodes 231


Animation Nodes Manual, Release 2.0

Examples of Usage

Random Falloff

Description

This node creates an index based falloff that associates a random float for every object.

Inputs

• Seed - Change this to get a different set of random numbers.


• Min - Lower bound for the random numbers, can’t be less than zero.
• Max - Upper bound for the random numbers, can’t be larger than one.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Index Mask Falloff

Description

This node creates an index based falloff that associates one of two input floats to every object. The node supports
random assignment of floats as well as every Nth object assignment.

232 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Every Nth - This option assign input float A to indices that are divisible by some input integer n and input float
B to indices that aren’t. If n was 2 then the pattern will be BABABABA because even numbers are divisible by 2
while odd aren’t. If n was 3 then the pattern will be BBABBABB because 3,6,9 are divisible by 3 while other
numbers aren’t.
• Random - This option assign input float A and B randomly but limited with some probability. If the probability
is 1 all objects will have float B, if zero all object will have float A, if 0.5 half of the object will have A and the
other half will have B. But it is a probability so it is not guaranteed.

Inputs

• Step - An integer to check divisibility against. See Every Nth option above. (Only available in Every Nth
option)
• Offset - This integer is added to the index of every object. It acts as an offset for the pattern, so pattern ABABAB
offset by 1 will be BABABA. (Only available in Every Nth option)
• Seed - Seed of the random generator. (Only in the Random option)
• Probability - The probability that float B will be assigned to objects. See Random option above. (Only in the
Random option)
• A - Float A. Can be between zero and one.
• B - Float B. Can be between zero and one.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

1.3. Nodes 233


Animation Nodes Manual, Release 2.0

Examples of Usage

Object Controller Falloff

Description

This node creates a vector based falloff that associates to every object a float that is equal to inverse the distance from
it to some controller object, that distance can be 3D or 1D.

Options

• Sphere - This option associates to every object a float that is equal to inverse the distance from it to some
controller object. This float is always in [0,1] range, So some distances will be clamped to 1 or 0. We
conclude that objects that are closer to the controller will have a large float that doesn’t exceed 1 and as objects
gets away, their floats starts to fade till it becomes zero at some point. This float is added to the scale of the
controller object, so scaling the controller object will result in increase in the floats of every object.

Illustration In this illustration, I set the z-position of the points of a line to their falloff floats which formed some
kind of triangle. As we said, the float is equal to inverse the distance from the point to the position of the input object
which I placed at (0,0,0) in this illustration. Let the distance be D, then inverse of the distance is 1-D. So point
(0,0,0) will have a D of 0 (because distance between (0,0,0) and (0,0,0) is zero) and a 1-D=1-0=1, that’s
why the point in the middle have a z-location of 1. Point (1,0,0) on the other hand have a D of 1 and a 1-D=1-1=0
, that’s why the point at (1,0,0) has a z-location of zero. Points further away will have a negative inverse distances
and thus negative z-locations. But as we said, values are clamped to [0,1] range and so negative floats will be zeroes
and floats larger than one will be equal ones (We currently don’t have values larger than one).
What I am going to do is add some value to the floats which result in inverse distances larger than one which will then
be clamped to one, since the inverse distance is the z-location of the points, adding a value to the float will result in
moving the triangle in the z-direction. The illustration shows what happens when this value is added when clamping
is present.
Furthermore, multiplying the floats by some value will change the rate of changing of the floats and thus have a
wider based triangle, which is shown in the illustration as scaling the triangle which is what multiplication graphically
denote.
In the node inputs, input Offset is the value that gets added while input Width is the value that gets multiplied.
Shaded area is the actual points position after clamping, outline is the values before clamping. Notice how outline
exceed one and deceed zero:

234 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Directional - This option associates to every object a float that is equal to inverse the distance from it to some
controller object along a single axis. The chosen axis will be the local axis of the controller object, so rotating
the object changes the direction. This float is always in [0,1] range, So some distances will be clamped to
1 or 0. We conclude that objects that are closer to the controller along some axis will have a large float that
doesn’t exceed 1 and as object gets away, their floats starts to fade till it becomes zero at some point. This float
is multiplied by the scale of the controller object, so scaling the controller object will result in increase in the
floats of every object.
Use the same reasoning as the sphere option to understand this better.

Inputs

• Controller - An object to use as the controller. You probably want to use empties because actual objects won’t
make a difference, all the node needs is their location, rotation and scale.
• Offset - This float will be added to the floats of all object resulting in an offset just as if you scaled the controller.
(Only in Sphere option)
• Falloff Width - This float defines the distance between the ones and zeros, so a higher value will result in
smoother result with lower slope. (Only in Sphere option)
• Interpolation - Floats will be evaluated at this interpolation.
• Invert - If true, the floats will be inverted, so zeroes will be ones and ones will be zeroes.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Sound Falloff

Description

This node takes a sound and creates a falloff that associates a float to every object where this float is the intensity of
the input sound at a single frequency or the average of the whole domain based on the selected option. The falloff is
evaluated either based on the index of the object or based on another falloff. See options for more info.

1.3. Nodes 235


Animation Nodes Manual, Release 2.0

Options And Inputs

• Sound - The input sound. The menu only displays the sounds of the same type as the Sound Type.

Sound Type

Average This option associates the intensity of sound at the current frame to the object at the index zero where
objects at higher indices get associated with sound intensities at future frames.
• Offset - The number of objects till value becomes of the next frame. If the value is 1 then first object is
associated with intensity at first frame, second object at the second frame. If the value is zero then all object
will be associated with the intensity at the current frame. If it is higher than 1, then objects between each two
consecutive frames get associated with a linear interpolation between the values at the bounding frames values.
Look at the following illustration:

236 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

The vertex at index zero is associated with a float that represent the intensity of the sound at the first frame, the intensity
of the sound at the next frame gets associated with the object at index 2 (Notice that the input offset is set to 2), as for
the objects that their index is not multiple of the input offset, their value is a linear interpolation between the bounding
frame values, so object at index 1 lie on the line that connect 0 and 2.

Spectrum This option associates the intensities of frequencies of the sound to every object where objects with small
indices or values gets associated with the intensities of the low frequencies and objects with large values or indices
gets associated with intensities of the high frequencies.

Spectrum Falloff Type

Index Frequency
• Index Frequency - The falloff is evaluated based on the indices of the objects.

The object at index zero got associated with the intensity of the first frequency while object at index 1 got associated
with the intensity of the second frequency.
• length - It is the distance between the lowest and highest frequency.

1.3. Nodes 237


Animation Nodes Manual, Release 2.0

Notice that by reducing the length to half, the difference between the low and high frequency got reduced to half and
the highest frequency is now at index 5 and not 9 as before.
• Offset - This integer is added to the indices of the objects resulting in an offset of their frequencies.
• Index Frequency Extension Type - This defines what happens to objects with indices that are out of the range.
A length that is lower than the amount of indices would result in indices that are out of the range.
– Loop - This will repeat the frequencies.

– Mirror - This will repeat the frequencies in a ping pong style, so the end of the first range will match the

238 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

end of the second range resulting in a mirror like effect.

– Extended - This will associate the intensity of the lowest frequency to all the indices that are less than the
start of the range and the intensity of the highest frequency to all the indices that are more than the end of
the range. Notice how 0-4 and 13-17 indices have the same intensity in the following example:

Falloff Frequency
• Falloff - The falloff at which the sound falloff is evaluated.

1.3. Nodes 239


Animation Nodes Manual, Release 2.0

In the above example a simple distance field is generated from the point distance falloff, when we input it to the sound
falloff, it gets evaluated based on its values.
• Interpolation - Output intensities are evaluated at this interpolation.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

Fade To Zero
• Low Frequencies - A frequency will be added at first which has a zero intensity. This make sure the first object
always gets associated with a zero float.
• High Frequencies - A frequency will be added at end which has a zero intensity. This make sure the last object
always gets associated with a zero float.

Examples of Usage

Spline Falloff

Description

This node creates a vector based falloff that associates to every object a float that is equal to inverse the distance from
it to some spline. This float is always in [0,1] range, So some distances will be clamped to 1 or 0. We conclude that
objects that are closer to the spline will have a large float that doesn’t exceed 1 and as object gets away, their floats
starts to fade till it becomes zero at some point.

240 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Distance - This float is added to the float of every object which result in an offset for the distance.
• Width - The distance between the ones and the zeroes, can be though of as the slop as well.
• Interpolation - Floats are evaluated at this interpolation.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Constant Falloff

Description

This node creates a falloff that associate a constant float for every object.

Inputs

• Strength - A float to associate to every object.

1.3. Nodes 241


Animation Nodes Manual, Release 2.0

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Custom Falloff

Description

This node creates an index based falloff that associates the first element from the float list to the first object, second
element to the second object and so on.

Inputs

• Strengths - A float list the represents the floats of the objects. If the number of object is greater than the length
of this list, extra object will have a floats equal to the input fallback value.
• Fallback - The fallback value.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Directional Falloff

242 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Description

This node creates a vector based falloff that associates to every object a float that is equal to inverse the distance to
some point along some arbitrary direction vector. This float is always in [0,1] range, So some distances will be
clamped to 1 or 0. We conclude that objects that are closer to the input point along the defined directional vector will
have a large float that doesn’t exceed 1 and as objects gets away, their floats starts to fade till it becomes zero at some
point.

Options

• Left - Objects that are on the negative side of the direction vector will be zeroes. Object that are on the positive
side will start increasing as the distance increase till they reach one.
• Right - Objects that are on the negative side of the direction vector will be ones. Object that are on the positive
side will start decreasing as the distance increase till they reach zero.

Inputs

• Position - The position of the point.


• Direction - The direction vector.
• Falloff Width - A float that is multiplied by the floats, can be though of as the slope of decreasing or increasing.

Outputs

• Falloff - The actual falloff object.

1.3. Nodes 243


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Point Distance Falloff

Description

This node creates a vector based falloff that associates to every object a float that is equal to inverse the distance to
some point. This float is always in [0,1] range, So some distances will be clamped to 1 or 0. We conclude that
objects that are closer to the input point will have a large float that doesn’t exceed 1 and as objects gets away, their
floats starts to fade till it becomes zero at some point.

Illustration

In this illustration, I set the z-position of the points of a line to their falloff floats which formed some kind of triangle.
As we said, the float is equal to inverse the distance from the point to some arbitrary point which I defined as the
(0,0,0) point in this illustration. Let the distance be D, then inverse of the distance is 1-D. So point (0,0,0) will
have a D of 0 (because distance between (0,0,0) and (0,0,0) is zero) and a 1-D=1-0=1, that’s why the point
in the middle have a z-location of 1. Point (1,0,0) on the other hand have a D of 1 and a 1-D=1-1=0 , that’s why
the point at (1,0,0) has a z-location of zero. Points further away will have a negative inverse distances and thus
negative z-locations. But as we said, values are clamped to [0,1] range and so negative floats will be zeroes and
floats larger than one will be equal ones (We currently don’t have values larger than one).
What I am going to do is add some value to the floats which result in inverse distances larger than one which will then
be clamped to one, since the inverse distance is the z-location of the points, adding a value to the float will result in
moving the triangle in the z-direction. The illustration shows what happens when this value is added when clamping
is present.
Furthermore, multiplying the floats by some value will change the rate of changing of the floats and thus have a
wider based triangle, which is shown in the illustration as scaling the triangle which is what multiplication graphically
denote.

244 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

In the node inputs, input Offset is the value that gets added while input Width is the value that gets multiplied.
Shaded area is the actual points position after clamping, outline is the values before clamping. Notice how outline
exceed one and deceed zero:

Inputs

• Origin - The position of the point.


• Offset - This float is added to the floats of every object. It acts as an offset for the distances.
• Falloff Width - A float that is multiplied by the floats, can be though of as the slope of decreasing.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Interpolate Falloff

Description

This node evaluates the floats of the input falloff at the input interpolation.

Inputs

• Falloff - A falloff
• Interpolation - An interpolation to evaluate the falloff at.

Outputs

• Falloff - The actual falloff object.

1.3. Nodes 245


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Remap Falloff

Description

This node remaps the floats of the input falloff to a new range. The node assume that the original range was [0,1]
Which is usually the case.

Inputs

• Falloff - A falloff.
• New min - The new minimum value.
• New max - The new maximum value.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Invert Falloff

Description

This node invert the input falloff. If its floats were x then the output will be 1-x clamped to the [0,1] range of
course.

246 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Falloff - A falloff.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Mix Falloffs

Description

This node takes two or multiple falloffs and mix them together using one of the available algorithms.

Options

• Max - The output float will be the largest float of all falloffs.
• Min - The output float will be the lowest float of all falloffs.
• Add - The output will be the sum of the floats of the falloffs.

1.3. Nodes 247


Animation Nodes Manual, Release 2.0

• Multiply - The output will be the product of the floats of the falloffs.
• Use Falloff List - It is the option you see beside the menu, if enabled, the input will be a falloff list.

Inputs

• A - A falloff.
• B - A falloff.
• Falloffs- The falloffs. If Use Falloffs List is enabled.

Outputs

• Falloff - The actual falloff object.

Advanced Node Settings

• N/A

Examples of Usage

Evaluate Falloff

Description

This node evaluate the input falloff at the input index/vector/transformation matrix.

Options

• Note - The falloff is evaluated at the input index. Use this option when you have an index based falloff.
• Location - The falloff is evaluated at the input vector. Use this option when you have a vector based falloff.
• Transformation Matrix - The falloff is evaluated at the input transformation matrix. Use this option when you
have a vector based falloff.
• Use List - It is the option you see beside the menu. If enabled, the inputs will be lists and the node will evaluate
the falloff at all the elements of the list.

248 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Falloff - A falloff.
• Index - The index to evaluate the falloff at.
• Location- The vector to evaluate the falloff at. (Only in Location option)
• Matrix - The transformation matrix to evaluate the falloff at. (Only in Transformation Matrix option)

Outputs

• Strength - The float at the input index/location/matrix.

Advanced Node Settings

• N/A

Examples of Usage

Abstractly speaking, a falloff is a function that associates a float to every object. Those objects can be vectors, matrices
or indices which means that float is computed based on the vectors, matrices or indices which are just integers. The
computed floats are usually in the range of [0,1] but it is possible to go out of that range in some cases. Those floats
can then be used as a factor for some effect where zero means no effect and one means full effect, if the the float is
larger than 1, the effect will be amplified, so if it was a translation by two units in z-axis and if the float of the object
was 2 the translation will be 2x2=4 in z-axis.
The simplest falloff is the Constant Falloff which associate a constant float for all input objects. A constant falloff is
created automatically if no input falloff is provided.
The following example shows a node tree that creates 6 copies of a cube which all have a z-location of 1.5. While the
offset matrices node moved every matrix 3 units in the z direction, the constant falloff—Which associated a float of
0.5 for every matrix—tuned down the effect of that translation to be 3x0.5=1.5, and that’s why the final z-location
is 1.5 and not 3.

1.3. Nodes 249


Animation Nodes Manual, Release 2.0

A more advanced falloff is the Point Distance falloff, which associate a float to every vector where that float equals
inverse the distance between the object and an input vector. If we then used that falloff in the previous example, the
objects that are closer to the input vector will move more along z-axis and the effect is tuned down as we move away
from the input vector.
Another often used falloff is the Object Controller Falloff which makes it easier to construct falloffs by representing
them with objects in the 3D viewport.
Falloffs are much more high level than other nodes, yet they give you a lot of control. E.g. It is possible to mix falloffs
together with the Mix Falloffs node. If you need even more control there also is a Custom Falloff node that takes a
Float List as input and associate those floats to the objects.
Everything that can be done using falloffs can also be done without them, but using falloffs has many benefits:
1. Much better Performance.
2. Less nodes are required to achieve desired effects.
3. They provide a more “declarative” approach to express animations which in return makes falloffs much more
artist friendly.

FCurves

FCurves From Object

Description

This node returns a list of all FCurves in the input object.

250 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Object - An object to return its fcurves.

Outputs

• FCurves - A list of all fcurves in the input object.

Advanced Node Settings

• N/A

Examples of Usage

Evaluate FCurve

Description

This node evaluates a fcurve at a specific frame.


For a fcurve that correspond to the x-location of an object, evaluating the fcurve at a frame will return the x-location
of the object at that frame.

Option

• Offset - The input frame is relative to the current frame. So an input frame of 5 with the current frame at 5, the
actual evaluation will be at frame 10.
• Absolute - The input frame is the frame at which evaluation will happen.

1.3. Nodes 251


Animation Nodes Manual, Release 2.0

Inputs

• FCurve - An fcurve to evaluate.


• Frame - The frame at which the fcurve is evaluated.

Outputs

• Value - The value of fcurve at the input frame.

Advanced Node Settings

• N/A

Examples of Usage

FCurve Info

Description

This node returns some information about the input fcurve.

Inputs

• FCurve - An input fcurve.

Outputs

• Data Path - A string that contain the RNA data path for the animated property(For instance, if the location of
an object was the animated property then its data path will be:location)
• Array Index - An integer that contain the index of the animated property. Multidimensional property like
location,rotation and scale—XYZ—have an index for each channel, that is, x is 0,y is 1,z is 2.Properties that
are one dimensional will just return 0.

Advanced Node Settings

• N/A

252 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Examples of Usage

FCurve Keyframes

Description

This node return the location and the value of the keyframes that composed the FCurve.
For instance, If one were to animate the x location of an object he would insert a keyframe at the frame 0 when the
object location was 0 and another keyframe at the frame 20 when the location of the object was 5. An fcurve would
be created as a result of this animation and this node will return two lists, KeyFrames Frames which will contain
[0,20] which is the location of our frames and KeyFrames Values which will contain [0,5] which is the x locations
of our frames.

Inputs

• FCurve - An input fcurve.

Outputs

• Keyframes Frames - A float list that contain the locations of the frames that composed the input fcurve.
• Keyframes Values - A float list that contain the values of the frames that composed the input fcurve.

Advanced Node Settings

• N/A

Examples of Usage

FCurve is a blender data which store the animation keyframes interpolation of the animated property.
A FCurve carry the animation data of only a single value which means, if the xyz locations of an object were animated,
three fcurves will be generated—One for each transformation channel.

Material

Cycles Material Output

1.3. Nodes 253


Animation Nodes Manual, Release 2.0

Description

This node lets you edit cycles node trees from inside Animation Nodes.
First, a material has to be selected in the material field, then, a node has to be selected in the node field, then, a list of
all the inputs will be contained in a list, select the required input and its input will be contained in the node to edit.

Inputs

• Data - Dynamic, based on the selected inputs and nodes.

Outputs

• N/A

Advanced Node Settings

• N/A

Examples of Usage

Viewport Color

Description

This node lets you set the viewport color of the selected material. It works for both cycles and internal materials.

Inputs

• Color - The viewport color.

254 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• N/A

Advanced Node Settings

• N/A

Examples of Usage

Sound

Sound Bake

Description

This node let you decode, bake and cache a sound file.

Options

• Low - The lowest frequency to include.


• High - The highest frequency to include.
• Attack - The speed at which the sound reach maximum intensity(gain intensity). Study ADSR concept
• Release - The speed at which the sound lose intensity. Study ADSR concept
• Bake Average - By pressing that button, you calculated and cached the average sound intensity at each frame.
• Bake Spectrum - By pressing that button, you calculated and cached the intensity of multiple frequencies at
each frame.
• Calculate Spectrum Frequencies - By pressing that button, you get a pop up to define automatically the frequencies at whi

– Amount - The number of frequencies to compute.


– Start - The lowest frequency to include.
– End - The highest frequency to include.

1.3. Nodes 255


Animation Nodes Manual, Release 2.0

– Base - The base of the exponential function which the frequencies positions are define by. (This avoid
bad distribution of frequencies by using a logarithmic scale.)
– Exponent - The exponent of the exponential function which the frequencies positions are defined by.
(Input Zero if you want a linear definition of the frequencies.)

Inputs

• N/A

Outputs

• N/A

Advanced Node Settings

• N/A

Evaluate Sound

Description

This node returns the baked data—Ones that are baked using the sound bake node.

Options

• Type:
– Average - Returns a float that represent the intensity of the sound—Those that are baked using the
Bake button and not the Bake Equalizer Data.
– Spectrum - Returns a list of floats that represent the intensity of the frequencies—Those that were
baked using the Bake Spectrum button.

Inputs

• Sound - An input sound to evaluate.


• Frame - The frame at which the sound is evaluated. (Only available when Use Current Frame is disabled.)

256 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Volume - The intensity of the sound at the current frame. (Only available in Average option)
• Volumes - A float list that contain the intensities of the Spectrum Data. (Only available in Spectrum option)

Advanced Node Settings

• Use Current Frame - If enabled, the sound will be evaluated at the current frame, if not, the sound will be
evaluate at the input frame.

Examples of Usage

Sound From Sequences

Description

When sounds are baked using the Sound bake node, they are in fact added to the sequence editor at a certain channel,
and you can select a sound by its location in the sequencer channels.

Options

• Sound Type:
– Average - Returns the sound which was baked using the Bake Average button.
– Spectrum - Returns the sound which was baked using the Bake Spectrum button.

Inputs

• Sequences - The sequences at which the sound strips exist, you can get sequences list by using the Sequences
From Channel node.
• Bake Index - The index of the baked data. Multiple sound data can be baked using the Sound Bake node and
this index let you choose which one to get.

Outputs

• Sound - The sound data of the sound strip.

1.3. Nodes 257


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

Sequence

Get All Sequences

Description

This node returns all the sequence strips in the sequence editor.

Inputs

• Scene - A scene.

Outputs

• Sequences - A list of all sequences in the sequence editor.

Advanced Node Settings

• N/A

Examples of Usage

Sequences From Channel

Description

This node returns all the sequences in the input Channel.

258 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Channel - The index of the channel to return its strips.


• Scene - A scene.

Outputs

• Sequences - A list of sequences which are in the input channel.

Advanced Node Settings

• N/A

Examples of Usage

Sequence Info

Description

This node returns some information about the input sequence.

Inputs

• Sequence - A strip to return its info.

Outputs

• Name - The name of the strip.


• Type - The type of strip.(TEXT,SOUND,IMAGE,...)

1.3. Nodes 259


Animation Nodes Manual, Release 2.0

• Channel - The index of its channel.


• Final Duration - The actual length of the strip in frames.
• Final Start Frame - The actual frame at which the strip start.
• Final End Frame - The actual frame at which the strip end.
• Opacity - The opacity of the strip. (Only for visual strips like images and movies)
• Blend Type - The blending algorithm of the strip. (Only for visual strips like images and movies)
• Effect Fader - The fading factor for certain effect.
• Start Frame - The frame at which the strip start in regardless of the trimming and effects.
• Start Offset - The difference between the original and final start frame.
• End Offset - The difference between the original and final end frame.
• Total Duration - The length of the strip in frames in regardless of the trimming and effects.
• Still Frame Start - The frame at which the image strip start.
• Still Frame End - The frame at which the image strip end.
• Lock - A boolean which is True if Transformation Lock is enabled for the strip.
• Mute - A boolean which is True if Mute is enabled for the strip.
• Select - A boolean which is True if the strip is selected.
• Speed Factor - The speed factor of the Speed Control strip. (Assuming Stretch to input strip length is disabled
and Use as speed is enabled for the Speed Control effect)
• Use Default Fade - A boolean which is True if Use Default Fade is enabled.
• Use Default Fade - A boolean which is True if Use Linear Modifiers is enabled.

Advanced Node Settings

• N/A

Examples of Usage

Geometry

Convert Plane Type

Description

This node converts between the two representations of 3d planes—Point/Normal and Transformation Matrix.
Not to be mistaken by the primitive plane, Planes here are mathematical objects that can be defined by a normal and a
location or a transformation matrix since matrices can encode both the normal and the location of the plane.

260 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Options

• Point/Normal To Matrix - This option will encode the input location and the input normal of the plane into a
transformation matrix.
• Matrix To Point/Normal - This option will decode the input transformation matrix and return the location and
the normal of the plane represented by that transformation matrix.

Inputs

• Point In Plane - A vector that correspond to the location of a point in the plane.(Only in the Point/Normal To
Matrix option)
• Plane Normal - A unit vector that correspond to the normal of the plane.(Only in the Point/Normal To Matrix
option)
• Matrix - A transformation matrix that represent the plane.(Only in the Matrix To Point/Normal option)

Outputs

• Point In Plane - A vector that correspond to the location of a point in the plane.(Only in the Point/Normal To
Matrix option)
• Plane Normal - A unit vector that correspond to the normal of the plane.(Only in the Point/Normal To Matrix
option)
• Matrix - A transformation matrix that represent the plane.(Only in the Matrix To Point/Normal option)

Advanced Node Settings

• N/A

1.3. Nodes 261


Animation Nodes Manual, Release 2.0

Examples of Usage

Point List Normal

Description

This node takes multiple vectors which represent points of a polygon and return the normal of that polygon.
At least 3 points are needed to compute the normal. If more than 3 points were input, the resulted normal will be the
average of the normals of each 3 points.

Inputs

• Point List - A vector list that contain the locations of the polygon points.

Outputs

• Normal - A unit vector that represent the normal of the polygon. A zero vector if points weren’t valid.
• Is Valid - A boolean which is True if blender was able to calculate the normal.

Advanced Node Settings

• N/A

Notes

The order of points matter as cross product is used to compute the normals, So points in reversed order will return a
normal that is in the reverse direction of the normal computed by the original list.

Examples of Usage

Intersect Line Line

Description

This node takes 2 lines and returns the locations of 2 points (one on each of them) that are closest to each other.

262 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Blue points are the input points and orange points are the output points. Orange points are the closest points on the
lines.

1.3. Nodes 263


Animation Nodes Manual, Release 2.0

Inputs

• Line 1 Start - The location of the starting point of the first line.
• Line 1 End - The location of the ending point of the first line.
• Line 2 Start - The location of the starting point of the second line.
• Line 2 End - The location of the ending point of the second line.

Outputs

• Closest On Line 1 - The location of the closest point on line 1.


• Closest On Line 2 - The location of the closest point on line 2.
• Is Valid - A boolean which is True if a closest pair was found and False if not. Closest pair won’t be found only
if both lines were parallel.

Advanced Node Settings

• N/A

Intersect Line Plane

Description

This node returns the location of the point of intersection of the input line with the input plane.

264 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Blue points are the input points and orange point is the intersection with the input plane.

1.3. Nodes 265


Animation Nodes Manual, Release 2.0

Inputs

• Line Start - The location of the starting point of the line.


• Line End - The location of the ending point of the line.
• Plane Point - A point on the required plane.
• Plane Normal - A unit vector that represent the normal of the required plane.

Outputs

• Intersection - The location of the point of intersection of the input line and input plane.
• Is Valid - A boolean which is True if an intersection was found and False otherwise.

Advanced Node Settings

• N/A

Intersect Line Sphere

Description

This node returns the location of the point of intersection of the input line with the input sphere.

266 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Blue points are the input points and orange points are the intersections with the input sphere.

Options

• Clip Inside Line - If enabled, intersections that are not on the input line will be ignored. By default, your line
define a straight line and not a segment, so points along that straight line are possible intersections.

Inputs

• Line Start - The location of the starting point of the line.


• Line End - The location of the ending point of the line.
• Sphere Center - The location of the center of the required sphere.
• Sphere Radius - The radius length of the required sphere.

Outputs

• Intersection 1 - The location of the first point of intersection of the input line and input plane. (It is possible
that a line intersect a sphere two times, one at the front and one at the back)
• Intersection 1 - The location of the second point of intersection of the input line and input plane. (It is possible
that a line intersect a sphere two times, one at the front and one at the back)
• Is Valid 1 - A boolean which is True if the first intersection was found and False otherwise.
• Is Valid 2 - A boolean which is True if the second intersection was found and False otherwise.
If one of the Is Valid is True and the other is False, then this line is tangent to the sphere at the point of intersection.

1.3. Nodes 267


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Intersect Plane Plane

Description

This node returns some information about the intersection of input planes.

268 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Orange point is the intersection point and blue vector is the direction vector.

Demonstration

If you are familiar with the basics of solid geometry, you would know that a plane intersect another plane in a straight
line and not in a point. There is multiple ways to represent a straight line, the node uses the way of representing it
using a point and a unit vector to define its direction. This point could have been in any location along the line, but
the node tries to minimize the distance to the origin as much as possible, so it chooses the point along the line that is
closest to the origin point.

Inputs

• Plane 1 Point - A point on the first required plane.


• Plane 1 Normal - A unit vector that represent the normal of the first required plane.
• Plane 2 Point - A point on the second required plane.
• Plane 2 Normal - A unit vector that represent the normal of the second required plane.

Outputs

• Intersection Point - The location of the closest point to the world center that is on the line of intersection of the
planes.
• Direction Vector - A unit vector that describe the direction of the line of intersection of the two planes.
• Angle - The angle between input planes in radians.

1.3. Nodes 269


Animation Nodes Manual, Release 2.0

• Is Valid - A boolean which is True if an intersection was found and False otherwise. If it is False, that means
that the planes are parallel or identical.

Advanced Node Settings

• N/A

Intersect Sphere Plane

Description

This node returns some information about the intersection of input sphere and input plane.

270 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Illustration

Orange point is the center of the blue intersected circle.

Inputs

• Sphere Center - The location of the center of the required sphere.


• Sphere Radius - The radius length of the required sphere.
• Plane Point - A point on the required plane.
• Plane Normal - A unit vector that represent the normal of the required plane.

Outputs

• Circle Center - The location of the center of the intersected circle.


• Circle Radius - The radius length of the intersected circle. if this values is zero and Is valid is True, that that
means that the plane is tangent to the sphere at the Circle Center.
• Is Valid - A boolean which is True if an intersection was found, and False otherwise.

Advanced Node Settings

• N/A

Intersect Sphere Sphere

1.3. Nodes 271


Animation Nodes Manual, Release 2.0

Description

This node returns some information about the intersection of the two input spheres.

Illustration

Orange point is the center of the blue intersected circle.

272 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• Sphere 1 Center - The location of the center of the first required sphere.
• Sphere 1 Radius - The radius length of the first required sphere.
• Sphere 2 Center - The location of the center of the second required sphere.
• Sphere 2 Radius - The radius length of the second required sphere.

Outputs

• Circle Center - The location of the center of the intersected circle.


• Circle Radius - The radius length of the intersected circle. if this values is zero and Is valid is True, that means
that the spheres are touching at the Circle Center.
• Is Valid - A boolean which is True if an intersection was found, and False otherwise.

Advanced Node Settings

• N/A

Triangulate BMesh

Description

This node takes a bmesh data type and return a triangulated version of it.

Inputs

• BMesh - A bmesh to triangulate.

Outputs

• BMesh - The triangulated bmesh.

Advanced Node Settings

• Quad Method - An integer that ranges between 0 and 3, it define the method used to perform triangulation of
quads.
• Ngon Method - An integer that is either 0 or 1, it define the method used to perform triangulation of Ngons.

1.3. Nodes 273


Animation Nodes Manual, Release 2.0

Examples of Usage

Barycentric Transform

Description

This node perform a barycentric transformation from a triangle to another.

Demonstration

Any point that lies on a triangle can be described in terms of the vertices of that triangle using what is known as
a convex combination. A convex combination is a linear combination of points (vectors) where all coefficients are
non-negative and sum to 1. If the point is close to one of the vertices of the triangle, then its coefficient will be the
largest.
The barycentric transform node compute the coefficients of the convex combination that describe the input point in
the input source triangle, then it uses those coefficients to compute the location of the point that lie on the input target
triangle through a convex combination of its vertices, see the below illustration if you didn’t get it.

Inputs

• Location - The location of the point that lies on the source triangle.
• Source Triangle Points - The location of the vertices of the triangle used to compute the coefficients of the
convex combination from.
• Target Triangle Points - The location of the vertices of the triangle to apply the convex combination to.

Outputs

• Morphed Location - The location of the point resulted from the convex combination.

274 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• N/A

Examples of Usage

KD & BVH Tree

Construct KD Tree

Description

This node constructs a KD Tree from the input vector list.

Demonstration

KD Trees is a space-partitioning data structure that can be used in multiple spatial searching applications like:
• Find the nearest point to a given point.
• Find points that lie inside a circle of given radius and center.
This data structure is used instead of a traditional nearest neighbor search because it is tremendously faster having a
time complexity of O(n) in the worst case.

Inputs

• Vector List - A vector list that contain the locations of the points.

Outputs

• KDTree - The output KDTree.

Advanced Node Settings

• N/A

1.3. Nodes 275


Animation Nodes Manual, Release 2.0

Examples of Usage

Find Nearest Point

Description

This node finds the nearest point in the input KD Tree to a given point.

Inputs

• KD Tree - A KD tree that contain your points.


• Vector - A vector that represent the location of the point in which we want to find its nearest point.

Outputs

• Vector - The location of the point that is nearest to the input point.
• Distance - The distance between the output point and the input point.
• Index - The index of the nearest point to the input point in the list used to construct the KD tree.

Advanced Node Settings

• N/A

Examples of Usage

Find Nearest Points

Description

This node finds the nearest points in the input KD Tree to a given point.

276 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Inputs

• KD Tree - A KD tree that contain your points.


• Amount - The amount of points to search for.
• Vector - A vector that represent the location of the point in which we want to find its nearest points.

Outputs

• Vectors - The locations of the points that is nearest to the input point.
• Distances - The distances between the output points and the input point.
• Index - The indices of the nearest points to the input point in the list used to construct the KD tree.

Advanced Node Settings

• N/A

Examples of Usage

Find Points In Radius

Description

This node finds the points that lie inside a sphere with a given center and radius in the input KD Tree.

1.3. Nodes 277


Animation Nodes Manual, Release 2.0

Inputs

• KD Tree - A KD tree that contain your points.


• Radius - The radius of the search sphere.
• Vector - A vector that represent the center of the search sphere.

Outputs

• Vectors - The locations of the points that lies inside the sphere defined by the input vector and radius.
• Distances - The distances between the output points and the input point.
• Index - The indices of the nearest points to the input point in the list used to construct the KD tree.

Advanced Node Settings

• N/A

Examples of Usage

Construct BVH Tree

Description

This node constructs a BVH Tree from the input mesh data.

278 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Demonstration

BVH trees or Bounding Volume Hierarchy trees are tree data structures that classify objects in a tree structure which
then can be used in:
• Ray Tracing
• Collision Detection
BVH trees are convenient to do ray tracing and collision detection because they are a lot faster than traditional ray
intersection operations.

Inputs

• Vector List - A vector list that contain the locations of the vertices of the mesh.
• Polygon Indices - A polygon indices list that contain the polygon indices of the mesh.
• Epsilon - It is the intersection threshold, it tells the BVH tree how close can a point be to the mesh so that it
can be considered an intersection. So a high epsilon value will consider a point that haven’t reached the mesh
surface yet an intersection. It is not recommended to use a high epsilon value as it can be very slow.

Outputs

• BVHTree - The output BVHTree.

Advanced Node Settings

• N/A

Examples of Usage

Ray Cast BVH Tree

Description

This node sends a ray through the scene and gather some information about its intersection with the mesh defined by
the BVH tree.

1.3. Nodes 279


Animation Nodes Manual, Release 2.0

Options

• Start At Infinity - If enabled, the ray will start from an infinitely far point along the line defined by the input
Ray Direction and Ray Start (Which in this case doesn’t represent the actual starting point but just the position
of the ray). Max distance input will also be unusable if enabled.

Inputs

• BVH - A BVH tree that represents the mesh you want to intersect the ray with.
• Ray Start - A vector that represents the starting point of the ray.
• Ray Direction - A vector that represents the direction of the ray. It doesn’t have to be normalized.
• Min Distance - It is distance from the ray start at which intersections are starting to be considered.
• Max Distance - It is the distance from the ray start at which intersections are not considered anymore.

Outputs

• Location - A vector that represents the location of the point of intersection if there was any. (It is a null vector
if there was no intersection)

280 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Normal - A unit vector that represents the surface normal at the point of intersection if there was any. (It is a
null vector if there was no intersection)
• Distance - The distance between the ray start and the point of intersection if there was any. (It is zero if there
was no intersection)
• Polygon Index - The index of the polygon that the ray intersect if it did. (It is -1 if there was no intersection)
• Hit - A boolean which is True if there was an intersection and False otherwise.

Advanced Node Settings

• N/A

Notes

• Adjusting minimum and maximum distances won’t affect the speed of the ray cast.
• If you want to define the ray by 2 points one of them is the starting point, linear algebra tells you to subtract
your second point from your starting point then plug it as the ray direction.

Examples of Usage

Find Nearest Surface Point

Description

This node find the nearest point on the surface of the mesh defined by the BVH tree to the input point.

Inputs

• BVH - A BVH tree that represents the mesh you want to find the point on.
• Vector - A vector that represents the location of the point to find the point nearest to it.
• Max Distance - It is the distance from the input vector at which the node stop searching and return nothing.

1.3. Nodes 281


Animation Nodes Manual, Release 2.0

Outputs

• Location - A vector that represents the location of the nearest point if there was any. (It is a null vector if there
wasn’t any)
• Normal - A unit vector that represents the surface normal at the nearest point if there was any. (It is a null vector
if there wasn’t any)
• Distance - The distance between the input vector and the nearest point if there was any. (It is zero if there wasn’t
any)
• Polygon Index - The index of the polygon that the nearest point belong to if there was any. (It is -1 if there
wasn’t any)
• Hit - A boolean which is True if a nearest point was found and False otherwise.

Advanced Node Settings

• N/A

Notes

• The only situation where a point can’t be found is when the distance between the input vector and its nearest
surface point is larger than the input max distance.

Examples of Usage

Is Inside Volume

Description

This node check if a point exist inside the mesh defined by the BVH tree.

Inputs

• BVH - A BVH tree that represents the mesh to check the point against.
• Vector - A vector that represents the location of the point to check whether it is inside the mesh or not.

282 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Outputs

• Is Inside - A boolean which is True if the input point lies inside the mesh defined by the BVH tree and False
otherwise.

Advanced Node Settings

• N/A

Notes

• This node works only on manifolds, that is, closed meshes that can be considered a volume. Non-manifolds
however are computed stochasticly and unreliable.

Examples of Usage

Viewer

Viewer

Description

This node view what ever is input to it. Simple data types like integers and floats and small text will be drawn on the
node itself. If Animation Nodes feels like data is a bit large like lists and big texts, it will draw a dedicated floating
viewer to view those data.
Notice how integers, vectors and texts were displayed in the node, while lists where displayed in a dedicated floating
viewer.

1.3. Nodes 283


Animation Nodes Manual, Release 2.0

Advanced Node Settings

• Font Size - The size of the drawn text on the dedicated floating drawer.
• Max Rows - Maximum amount of rows to draw for the dedicated floating viewer.
• List Start - The amount of list elements to display from the start.
• List End - The amount of list elements to display from the end.
• Console - If enabled, the data will be printed on the terminal.

284 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

• Text Block - If enabled, the data will be written on a blender data block.

3D Viewer

Description

This node draws points in the 3D viewport based on a list of vectors or transformation matrices that defines those
points position.

Options

• Size - The size of the points.


• Color - The color of the points.

Loop Viewer

Description

This node is put inside a loop where it prints the input at each iteration in a new line in a text block.

Advanced Node Settings

• Width 1 - The number of empty spaces to add before every line.

Interpolation Viewer

Description

This node plot the input interpolation on a [0,1] range in a floating dedicated viewer.

Advanced Node Settings

• Resolution - The number of points used to plot the interpolation.

Subprograms

Group

Lets us assume that you have three objects and you want to reset their transformations, hide them and shade them
smooth. One might make a node tree for that and copy it three times for each object. This would be extremely
inefficient both for performance and usability.
The solution is to use what is known as a Group or a Function, this group is a container that takes some inputs, do
something with them and maybe output some data as well. Once the group is defined, it can be called using an Invoke
Subprogram node and used multiple times in different areas of your node tree.

1.4. Subprograms 285


Animation Nodes Manual, Release 2.0

Example 1

Below is a node tree, that reset input object transformations, hide the object and shade it smooth. And we are going to
make a group out of it and expose the options.
This group has inputs but no outputs, it is what you might call an Operational Group because it doesn’t return
anything, it only does.
Had I defined the group, I can call it using the Invoke Subprogram node by searching for the group name or by
adding it from the subprograms menu in the toolbar or from the nodes menu. Notice that I didn’t have to copy the
whole node tree for each of the three objects, I just copied the group, which is not only more organized but also faster!

Advanced Node Settings

The group input node lets you define the default values for each of the inputs, it only works for basic data types like
numbers, vector and booleans. Those values will be set to the invoke node as soon as you add it.

Example 2

We will now make a group that takes some inputs, process them, then output some data. Our function will compute
Euler Characteristic which is equal to V-F+E.
After I implement the node tree and add the group input node, I can click the Output Node button in the group input
node to add a group output node which I then can add my outputs to.
By invoking the group and input the values for the Tetrahedron, Hexahedron and Octahedron, we see that Euler
Characteristic is indeed 2 for each of them.

286 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Network Error

A network error is raised when there is something wrong with your connections. And it is raised in two main situations,
if you connect a node that depend on the group to some node inside the group itself and if the group output node has
no group input as it can’t exist on its own.
If you removed the Group Input node without removing the Group Output node with it. An error will be raised because
Group Output can not exist on it own. To fix this, you either remove it, or you add a new Group Input node, connect
your outputs and then click Use Input In Network button which will scan the connected network for an Input Group

1.4. Subprograms 287


Animation Nodes Manual, Release 2.0

node. Or you could click the plus button called Add Input to add a new Group Input.

Loop

Loops are subprograms that runs specific number of times, it can be used to repeat an action multiple times or to
automate some action.

Example 1

By default, there is a parameter called Iterations and it defines the number of times the subprogram will run, lets say
we defined it to be 5, then the loop will run 5 times. Each run has a distinct variable called index that starts from zero
and ends by n-1 where n is the number of runs which is 5 in this case. This means that at the first run, index will be
0, at the second run, the index will be 1, at the third run, the index will be 2, and so on. There exist another variable
Iterations that is constant for all runs and is equal to the numbers of runs or iterations, which is 5 in our example.

288 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

As you may see, we have a parameter called Iterations and two inputs called Index and Iterations, if I viewed both
inputs using the Loop Viewer node (Which prints inputs of each run in a separate line), you will see that the index of
the first run (first line) is 0 and its iteration is 5, the index of the second iteration is 1 and its iteration is 5, and so on.

Example 2

Loops enable us to append values computed inside the loop to some output list, the the output list will contain the
value computed at the first iteration as the first element, the value computed at the second iterations as the second
element and so on. Those outputs are called generators and can be added by clicking on the New Generator Output
button and then choosing their type.

As you may see, we added a new integer generator output which appends the index each iteration. And the output is
an integer list that contain the indices.

1.4. Subprograms 289


Animation Nodes Manual, Release 2.0

If I divided the index by the iterations minus one, the resulted list will include floats that ranges between zero and one.
This is because indices ranges between zero and n-1 where n is the number of iterations. Notice that we changed the
output generator to float.

Loops can also append multiple elements at the same time when given a list.

Example 3

The output generators has a hidden by default input called Condition which is a boolean. This input basically asks
you “Should I append the input value?” if the boolean was True then it is appended normally, if it was False, then the
value is not appended.

290 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

In the above example, we only append the value if the index is an even integer resulting in a list of even numbers. We
notice that the output list length can be different that the input iterations.

Example 4

Loops can loop over a list of values, that is, for each value in the input list of values, the loop will run, so it should be
noted that the number of iterations is equal to the length of the list. A new input will appear which include the value
in the list at the current index, so at the first iteration, the value will be the first value in the list, in the second iteration,
the value will be the second value in the list, and so on. A new iterator can be added by clicking on the New Iterator
button.

In the above example, we append the integer if and only if it’s an even number. So if you compared the input list to
the output list you will see that all odd numbers are not included.
Multiple iterator lists are permitted and in this case, the number of iterations will be equal to the the length of the

1.4. Subprograms 291


Animation Nodes Manual, Release 2.0

smallest list.

The above example multiply two lists, notice that the second list has an 5 elements while the first list has only 4 and
subsequently the loop only runs 4 times and the output is a list of four elements.

Example 5

Loops can have parameters which are constant for all iterations. A new parameter can be added by clicking on the
New Parameter button.

292 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

The above example double all the elements of the input list.

Advanced Node Settings

Each Parameter and iterator have some options which can be edited in the Advanced Node Settings of the subprogram.

Description

A description for the function of the loop. This description only appears in the Invoke Subprogram node when
choosing the required subprogram, however, it is a good practice to write a description for each subprogram so that
other users can understand its function.

1.4. Subprograms 293


Animation Nodes Manual, Release 2.0

Example 6

Each iterator has an option Use Iterator As Output which if enabled will just add the input iterator as an output,
this option may seem useless but it actually have a specific function which is to define the operation flow, look at the
following example.

Let us assume that we want to hide a group of objects then unhide them again for no good reason. One could make a
loop that hide and unhide objects then invoke that loop twice, one for hiding and one for unhiding, and this is what we
did in the left setup. However, it doesn’t work, my objects are still hidden even though I unhide them using the upper
loop, this happens because Animation Nodes doesn’t know which loop to execute first so it just executed the hiding
loop last and that’s why our objects are hidden. So to ensure that a loop will execute before another and since they
both take the object list as input. We expose the iterator as an output then use that output for the second loop, this is
how it the right setup work.

Example 7

Each parameter has couple of options including:


• Input - If enabled, the parameter will be visible as an input.
• Output - if enabled, the parameter will be visible as an output.
• Copy - If enabled, the parameter will be copied.
To make sense of those options, we first need to understand the Reassign option. When adding a new reassign node
for a parameter, you will have the ability to change that parameter as the loop run, lets look at the following example
to understand this better.

294 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

The above example finds the maximum number in the input integer list. We first add a parameter and disable it as an
input and enable it as an output, that way, it is not visible as an input but it is visible as an output. I add a reassign
node for that parameter and make its condition visible. At each iteration, I check if the iterator value is larger than the
value of the parameter and if it is, I assign the iterator value to the parameter, I also add another condition such that if
the index is zero (if it is the first iteration) then I automatically reassign even if the iterator value is not larger than the
parameter value.
At the first iteration, the iterator was 16 and it gets assigned to the parameter because of the equal to zero condition,
at the second iteration, the iterator was 36 which is larger than the current parameter value which is 16 (assigned from
the last iteration), so I reassign the parameter to be 36, at the third iteration, the iterator is -25 which is not larger than
the current value of the parameter 36 so we don’t assign it. Since we enabled the output option for the parameter, it is
available as an output for the subprogram carrying the last assigned value which was 36 which is the largest value.

Example 8

The last feature of loops is the break condition which is a boolean. A break condition basically asks you every iteration
“Should I proceed to the next iteration?”, if it is True, the loops carry on executing the loop, it if was False, the loop
exist after current iteration and doesn’t carry on executing other iterations.

1.4. Subprograms 295


Animation Nodes Manual, Release 2.0

The example above slice a list, in other words, it returns a list with that starts at a specific index and ends with another
in the input list. This can be done using a generator condition where I append the value if it is larger than the start
index and lower than the end index, but this would be inefficient, if my list contain 100 element and I only want the
first 3 elements, the loop will have to run 100x. The solution is to use a break condition, to basically exist the loop
when you are sure that no other elements are needed.

More Examples

A lot of nodes documentation include loop examples, so make sure to browse some nodes for more example on loops.

Script

Animation Nodes provide you with a lot of helpful nodes for variaty of applications, however, some nodes may have
some limitations and thus force you to write some code. The script node enables you to write python code and invoke
it inside your node tree without having to write new nodes.

296 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Example 1

In this example, the script just prints Hello World it doesn’t have any inputs or outputs.

1.4. Subprograms 297


Animation Nodes Manual, Release 2.0

Example 2

In this example, two inputs were given and an output is expected. When you add an input, it is as if you initialized a
variable with its name at the top of you code, do in our case, it is like we write a, b = 2, 3. The output is expected to
be initialized with the same name as the output name, so in your code, you have to equate res with a value which in
our case was the sume of the input values.

298 Chapter 1. User Guide


Animation Nodes Manual, Release 2.0

Example 3

In this example, the node return the x resolution of the scene. It doesn’t have any inputs. Notice that I didn’t have
to import the blender python API (bpy) thats because it is already imported in Animation Nodes. However, we can
import any modules we need assuming they are installed of course. Star imports won’t work because they are bad for
performance, so something like from bpy import * won’t work.

Advanced Node Settings

• Description - A description for the function of the script. This description only appears in the Invoke Subpro-
gram node when choosing the required subprogram, however, it is a good practice to write a description for
each subprogram so that other users can understand its function.
• Interactive Mode - If enabled, animation nodes will automatically import changes you make in the text editor.
If disabled, a button will appear Import Changes that enables you to import changes manually when needed.
• Debug Mode - If anbled, errors in the script will be drawn on the node. If disabled, errors becomes fatal ones
and will stop node executions till solved, so it is better to leave this option enabled.
• Initialize Missing Outputs - If enabled and outputs are not initialized, they will get initialized with their default
values, avoiding not type errors.
• Correct Output Types - If enabled, AN will try to correct output types as much as possible and return default
value if it couldn’t. For instance, if the output is an integer and it was initialized with a float, it will get converted
to an integer by rounding.
Node trees you create can be considered as programs but in a visual form. Those node trees may contain portions
where node setups are similar or with slightly different parameters, copying the same node setup to multiple locations
in the node tree would be extremely inefficient. Likewise, one may need to apply the same node setup to multiple
objects, doing that manually would also be inefficient and tedious.

1.4. Subprograms 299


Animation Nodes Manual, Release 2.0

Animation Nodes provide us with Subprograms which are smaller node trees that can be created once and used all
over the node tree as much as needed.
Animation Nodes have three types of subprograms which can all be called using the Invoke Subprogram node after
they are defined. Such subprograms should be independent of of the node tree itself, so you can’t use a node that
depend on the subprogram inside the subprogram. So it is recommended that you put all your subprograms in a
portion of the node editor away from the node tree itself.

300 Chapter 1. User Guide


CHAPTER 2

Developer Guide

Setup Environment

Setup Environment on Windows

Download the Source Code

1. If you have Animation Nodes already installed, remove it.


2. Install git and optionally a gui client (I use Github Desktop all the time).
3. Create a GitHub account.
4. Fork the addon repository.
5. Clone the repository to your local hard drive.

Attention: The cloning target location used to be the addon folder of Blender. This is no longer the case.
You can clone it anywhere you want.

Compile the Code

1. Install Python (Anaconda) First we have to install Python itself. You should use Anaconda for that. Just take
the newest version.
Installing Python this way has multiple benefits: - easier installation of other packages - easier handling of
multiple Python environments
Make sure that Anaconda has been added to the PATH system environment variable. You can test if the
installation worked by running python -V (in a newly opened terminal window). The output should
include Continuum Analytics, Inc. somewhere.
Depending on what Blender version you want to compile the addon for, different versions of Python are
necessary. All newer Blender versions up until Blender 2.79 officially use Python 3.5.x. The plan is to
update to Python 3.6 in the Blender 2.8 project.
As Animation Nodes currently does not work with Blender 2.8 I guess you want to compile using Python
3.5. What we can do now is to create a Python environment for that version. Fortunately Anaconda makes
this fairly easy to set up.
To create the Python 3.5 environment, just run conda create -n py35 python=3.5
anaconda. The new environment will be called py35. To activate it you need to run activate

301
Animation Nodes Manual, Release 2.0

py35 (or in some terminals source activate py35). When you now run python -V it should
show you that you are using Python 3.5. You have to activate the environment everytime you reopen the
terminal. More Information can be found here.

Note: The following steps should all be executed in the new correct Python environment.

2. Install Cython When you used Anaconda, it will be easy to install Cython.
Just run conda install cython.
3. Build Animation Nodes This step is the most error prone, if you have any problems, checkout the troubleshoot-
ing section at the bottom.
Go to main directory of Animation Nodes. This folder should contain a file called setup.py.
Run python setup.py. This can take a while.
It also creates a config.py file next to the setup.py. You can use it to specify where the compiled
addon should be copied. This should be the path to Blenders addon directory. Once you changed the file,
you can the setup.py file again. This time it copies all files into the specified location.
Later when you want to recompile AN, just run python setup.py. It will only recompile and copy
the files that changed.
The setup.py file has a few command line arguments:
• --all This will rebuild all cython files which can be quite useful when Cython does not automatically detect
all files that need to update after you’ve made a change. Should not be needed in most cases though.
• --export Create an animation_nodes.zip file that can be shared with others.
• --nocopy Don’t copy the compiled build over to Blenders addon directory.

Troubleshooting

If your problem cannot be solved with the information, please report it. Also feel free to contact me (Jacques Lucke)
personally. I’d like to help everyone who wants to compile AN. The more people are able to do this, the better.
Most errors happen because Python cannot find a correct C compiler to compile the extension modules. Here are some
very helpful links on the topic:
• Python Windows Compilers
• Compile C extensions on Windows 10 and Visual Studio 2017
Basicly you will have to install Visual Studio 2017 (Microsoft does not want you to install older versions) and use the
x64 Native Tools Command Prompt for VS 2017 to run the python setup.py command.

Using Visual Studio 2015

If Visual Studio 2015 is already installed on you machine but you get this error: unable to find
vcvarsall.bat it is relatively easy to fix:
You need to change the installation installed features. More information can be found here: http://stackoverflow.com/
a/35243904/4755171

302 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

Setup Environment on Linux

Setup Environment on Mac

Node Development

Part 1 - Introduction and First Node

Welcome to this introduction into node development in Animation Nodes 2.0 or higher. In this guide you will learn
how to get started with writing your own nodes (and I suggest you learn this before you try to modify existing nodes!).
It will consist of multiple parts. Each part will go a bit more into detail so that you will be able to write more complex
nodes in the end. The following tutorials expect you to have a basic knowledge in Python.
To develop your own nodes you have to setup your development environment first. There are basicly two possible
setups:
1. Complete Setup: This mainly means that you are working in the real git repository of Animation Nodes. You
will have to make sure that you can compile the code etc. More information on how to do that can be
found here: Setup Environment
2. Lightweight Setup: The easiest way to start developing your own stuff. Basicly you just install the addon
normally and work directly in Blenders addon folder. I definitly suggest to use this method at first because
you can forget about compiling and all that stuff that can cause trouble. So if you have AN already installed
you don’t need to do anything.
Once you setup everything, you’ll have to choose where to put your new node in the existing code base. Usually
all nodes are in a subdirectory of the animation_nodes/nodes/ folder. However, they can be anywhere in the
Animation Nodes package. You can even decide to to create your own folder for your nodes. In that case don’t forget
to also create a new empty __init__.py file in that new folder. It tells Python that this folder is part of Animation
Nodes.
For this tutorial I suppose that the new file will be in a folder like animation_nodes/nodes/category/. If
you put it somewhere else you have to adjust the relative imports accordingly.
Now you are ready to create the actual file. Since Animation Nodes 2.0 there are two different types of source code
files:
1. Python files: .py These are just normal python files. If you choosed the lightweight setup you have to use this
type. Most nodes should be of this type, there are only a very few nodes which aren’t. I suggest to choose
this type always at this stage. It will be easy to change it later if necessary.
2. Cython files: .pyx Cython is another programming language that builds on top of Python. The main benefit
is that it can be compiled into machine code which can make it much faster than normal python code.
For most nodes this is absolute overkill, the performance benefit will only be visible be computational
expensive operations. Also you can only work with Cython files when you setup the complete working
environment.

The First Node

The first simple node we want to create will be able to copy the location of one object to another object with an offset.
First create a file for this node following the rules above. Then copy this little template code into the file:
1 import bpy
2 from ... base_types import AnimationNode
3

4 class TemplateNode(bpy.types.Node, AnimationNode):

2.2. Node Development 303


Animation Nodes Manual, Release 2.0

5 bl_idname = "an_TemplateNode"
6 bl_label = "Template"
7

8 def create(self):
9 pass
10

11 def execute(self):
12 pass

This template is what I personally use for all new nodes, it is very easy to build up on it.
Now we have to choose a name for our new node. The most important thing here is the bl_idname because this is
the identifier for your node, when you change it later on, all files that used this node will be broken. Also it should
have a prefix like an_ so that it there will be no problems with other addons. So make sure that you give it a good
name that tells as exact as possible what the node does. The class name and the bl_label property can be changed
later without problems if necessary. Here is the updated “header” for our specific example:
1 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):
2 bl_idname = "an_CopyLocationWithOffsetNode"
3 bl_label = "Copy Location with Offset"

The next step is to create the sockets we need. Therefor there is the create(self) function. In our example node
we need three inputs. One source object, one target object and the offset vector. So let’s create those:
1 def create(self):
2 # Type Name Identifier
3 self.newInput("Object", "Source", "source")
4 self.newInput("Object", "Target", "target")
5 self.newInput("Vector", "Offset", "offset")

When creating a socket, we have to specify at least three parameters:


1. Type: This will determine which socket will be created, every socket has a different color. There are a lot of
socket types. Here are a few common one: Object, Vector, Float, Integer, Object List, ...
2. Name: This name will be displayed in the Node Editor in Blender.
3. Identifier: The identifier is not very important for us yet. However you it shouldn’t change if not absolutely
necessary, but changing it is not as bad as changing the bl_idname. It is common to use this identifier
as variable name in the code later.
Last but not least we have to put some code into the execute function. As soon as the node has input sockets this
function has to have parameters. In this case we need three parameters, the names should correspond to the socket
identifiers. Also the order has to be the same. In the function body we can do whatever we want with these objects.
One thing we have to take care of is an object can be None. This has to be checked before anything else happens
because if there is an error in the node, the whole node tree suddenly stops working.
1 def execute(self, source, target, offset):
2 if source is None or target is None:
3 return
4

5 target.location = source.location + offset

This node is already fully functional now. Below is all the code for this node again. To test it you have to restart
Blender. If you you used the Complete Setup described at the top you also have to run python setup.py in order
to recompile the code and copy it over to Blenders addon directory. Otherwise restarting Blender is enouph.
1 import bpy
2 from ... base_types import AnimationNode
3

304 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

4 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


5 bl_idname = "an_CopyLocationWithOffsetNode"
6 bl_label = "Copy Location with Offset"
7

8 def create(self):
9 self.newInput("Object", "Source", "source")
10 self.newInput("Object", "Target", "target")
11 self.newInput("Vector", "Offset", "offset")
12

13 def execute(self, source, target, offset):


14 if source is None or target is None:
15 return
16

17 target.location = source.location + offset

We will continue to work on this node in the next part.

Part 2 - Output Sockets

In the last part we created our first little node that copies the location from one object to another object and applies a
custom offset. Here is the result of the last chapter:
1 import bpy
2 from ... base_types import AnimationNode
3

4 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


5 bl_idname = "an_CopyLocationWithOffsetNode"
6 bl_label = "Copy Location with Offset"
7

8 def create(self):
9 self.newInput("Object", "Source", "source")
10 self.newInput("Object", "Target", "target")
11 self.newInput("Vector", "Offset", "offset")
12

13 def execute(self, source, target, offset):


14 if source is None or target is None:
15 return
16

17 target.location = source.location + offset

In this part we want to extend this node. At first we want to change the node so that it outputs the new location of the
target object. Therefor we need to write a new line in the create(self) function like so:
1 def create(self):
2 self.newInput("Object", "Source", "source")
3 self.newInput("Object", "Target", "target")
4 self.newInput("Vector", "Offset", "offset")
5 self.newOutput("Vector", "Target Location", "targetLocation")

Pretty straight forward, right? Now I have to adapt the execute method so that it actually returns a vector. At the
moment it just return None all the time. It is very important that execute always returns a vector now. All the other
the might use this value depend on this being a vector and don’t check the type explicitly. This means that you should
return default values if there is anything wrong in your node. The new method can look like so:
1 def execute(self, source, target, offset):
2 if source is None or target is None:
3 return Vector((0, 0, 0)) # this is the default value

2.2. Node Development 305


Animation Nodes Manual, Release 2.0

5 target.location = source.location + offset


6 return target.location

As you can see we create this Vector((0, 0, 0)) object. Every individual vector is expected to be this type.
In order to make this code work we need to import the type at the top of the file: from mathutils import
Vector.
The node is completely functional now again.
1 import bpy
2 from mathutils import Vector
3 from ... base_types import AnimationNode
4

5 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


6 bl_idname = "an_CopyLocationWithOffsetNode"
7 bl_label = "Copy Location with Offset"
8

9 def create(self):
10 self.newInput("Object", "Source", "source")
11 self.newInput("Object", "Target", "target")
12 self.newInput("Vector", "Offset", "offset")
13 self.newOutput("Vector", "Target Location", "targetLocation")
14

15 def execute(self, source, target, offset):


16 if source is None or target is None:
17 return Vector((0, 0, 0))
18

19 target.location = source.location + offset


20 return target.location

Now we want to change the node so that it outputs not only the location of the target object but also the location of the
source object. I guess at this point it is clear how we have to change the create(self) method.
1 def create(self):
2 self.newInput("Object", "Source", "source")
3 self.newInput("Object", "Target", "target")
4 self.newInput("Vector", "Offset", "offset")
5 self.newOutput("Vector", "Source Location", "sourceLocation")
6 self.newOutput("Vector", "Target Location", "targetLocation")

Python has the wonderful feature that you can easily return multiple objects from a method. To return two objects we
will use exactly this feature. There are two main things you have to know about that:
1. The amount of returned objects always has to match the amount of output sockets.
2. The order of the returned objects has to correspond to the order of the output sockets.
To fulfill these two requirements the code of the execute method can look like so:
1 def execute(self, source, target, offset):
2 if source is None or target is None:
3 return Vector((0, 0, 0)), Vector((0, 0, 0)) # we need two defaults as well
4

5 target.location = source.location + offset


6 return source.location, target.location

Again our node is fully functional and so we come to the end of this part.

306 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

1 import bpy
2 from mathutils import Vector
3 from ... base_types import AnimationNode
4

5 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


6 bl_idname = "an_CopyLocationWithOffsetNode"
7 bl_label = "Copy Location with Offset"
8

9 def create(self):
10 self.newInput("Object", "Source", "source")
11 self.newInput("Object", "Target", "target")
12 self.newInput("Vector", "Offset", "offset")
13 self.newOutput("Vector", "Source Location", "sourceLocation")
14 self.newOutput("Vector", "Target Location", "targetLocation")
15

16 def execute(self, source, target, offset):


17 if source is None or target is None:
18 return Vector((0, 0, 0)), Vector((0, 0, 0))
19

20 target.location = source.location + offset


21 return source.location, target.location

Part 3 - Properties

In this chapter we want to give the nodes some properties so that the user of our node can decide which axises he wants
to copy from one object to the other. We start with the result of the first part, because we don’t really need output
sockets in order to understand this. So here is the original code:
1 import bpy
2 from ... base_types import AnimationNode
3

4 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


5 bl_idname = "an_CopyLocationWithOffsetNode"
6 bl_label = "Copy Location with Offset"
7

8 def create(self):
9 self.newInput("Object", "Source", "source")
10 self.newInput("Object", "Target", "target")
11 self.newInput("Vector", "Offset", "offset")
12

13 def execute(self, source, target, offset):


14 if source is None or target is None:
15 return
16

17 target.location = source.location + offset

In order to create properties we first have to import the property types Blender provides: from bpy.props
import *.

Note: In general it is a bad idea to do “import star” in Python. However this is the only case where I think this is
acceptable because it makes coding much easier and every Blender developer knows what happens (it imports these
properties).

Now we want to create three properties, one for each axis. They should have the type bool because we want to turn
specific axises on or off.

2.2. Node Development 307


Animation Nodes Manual, Release 2.0

1 import bpy
2 from bpy.props import *
3 from ... events import propertyChanged
4 from ... base_types import AnimationNode
5

6 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


7 bl_idname = "an_CopyLocationWithOffsetNode"
8 bl_label = "Copy Location with Offset"
9

10 useX = BoolProperty(name = "Use X", default = False, update = propertyChanged)


11 useY = BoolProperty(name = "Use Y", default = False, update = propertyChanged)
12 useZ = BoolProperty(name = "Use Z", default = False, update = propertyChanged)

As you can see I also imported the propertyChanged event handler. This is absolutely necessary but results in
a better user experience. This way when the user changes these properties and Property Changed ist activated in the
Auto Execution panel an update is triggered. Otherwise Animation Nodes cannot know that these properties changed.
As always the next step is to implement this functionality in the execute method.
1 def execute(self, source, target, offset):
2 if source is None or target is None:
3 return
4

5 if self.useX: target.location.x = source.location.x + offset.x


6 if self.useY: target.location.y = source.location.y + offset.y
7 if self.useZ: target.location.z = source.location.z + offset.z

This node is fully function again but there is still one problem. The user can’t see the properties so far. To change
that we have to implement another function called draw(self, layout) that will specify which properties will
be drawn in the node itself.
1 def draw(self, layout):
2 layout.prop(self, "useX")
3 layout.prop(self, "useY")
4 layout.prop(self, "useZ")

Now the new feature is complete, here is the full code again:
1 import bpy
2 from bpy.props import *
3 from ... events import propertyChanged
4 from ... base_types import AnimationNode
5

6 class CopyLocationWithOffsetNode(bpy.types.Node, AnimationNode):


7 bl_idname = "an_CopyLocationWithOffsetNode"
8 bl_label = "Copy Location with Offset"
9

10 useX = BoolProperty(name = "Use X", default = False, update = propertyChanged)


11 useY = BoolProperty(name = "Use Y", default = False, update = propertyChanged)
12 useZ = BoolProperty(name = "Use Z", default = False, update = propertyChanged)
13

14 def create(self):
15 self.newInput("Object", "Source", "source")
16 self.newInput("Object", "Target", "target")
17 self.newInput("Vector", "Offset", "offset")
18

19 def draw(self, layout):


20 layout.prop(self, "useX")
21 layout.prop(self, "useY")

308 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

22 layout.prop(self, "useZ")
23

24 def execute(self, source, target, offset):


25 if source is None or target is None:
26 return
27

28 if self.useX: target.location.x = source.location.x + offset.x


29 if self.useY: target.location.y = source.location.y + offset.y
30 if self.useZ: target.location.z = source.location.z + offset.z

Part 4 - Dynamic Socket Sets

The development method you’ve seen so far works great and should always be used when possible, because it keeps
the code clean. However it has one big disadvantage, it only works when the amount of sockets stays the same all the
time. This is because the execute function has a fixed number of parameters.
Many a bit more advanced nodes support multiple modes though. E.g. the Math nodes support a lot of different
operations and some of these require different sockets. In order to show how nodes with multiple operations work,
we’ll forget about the node we developed in the last parts and focus on a new one.
We now want to develop a node called Generate Points (maybe you should try to find a more specific name...) that has
two modes:
1. Line: Takes two vectors (start and direction) and an integer (amount) as input and calculates a vector list with
points on the line.
2. Circle: Takes a float (radius) and an integer (amount) as input and calculates a vector list with points on the
circle.
Obviously the old approach doesn’t work here anymore because both modes have different amounts of inputs. But
before you’ll learn about another approach on how node execution works in AN, we’ll focus on how to create a node
with dynamic sockets in the first place.
For our example we will use an EnumProperty to allow the user to switch between both modes. Furthermore we
have to tell Animation Nodes that it has to recreate the sockets when the mode changes. There are many nodes in AN
already which have to do this as well. The general structure of the code looks like so:
1 import bpy
2 from bpy.props import *
3 from ... base_types import AnimationNode
4

5 # first define the modes the node can have


6 # item tuple: (identifier, display name, description, icon, value)
7 # the value should be different for each item and should not change later
8 modeItems = [
9 ("LINE", "Line", "Distribute points on line", "", 0),
10 ("CIRCLE", "Circle", "Distribute points on circle", "", 1)
11 ]
12

13 class GeneratePointsNode(bpy.types.Node, AnimationNode):


14 bl_idname = "an_GeneratePointsNode"
15 bl_label = "Generate Points"
16

17 # AnimationNode.refresh will cause AN to remove all sockets


18 # and to call the create method again.
19 mode = EnumProperty(name = "Mode", default = "LINE",
20 items = modeItems, update = AnimationNode.refresh)
21

2.2. Node Development 309


Animation Nodes Manual, Release 2.0

22 def create(self):
23 self.newInput("Integer", "Amount", "amount")
24 if self.mode == "LINE":
25 self.newInput("Vector", "Start", "start")
26 self.newInput("Vector", "Direction", "direction")
27 elif self.mode == "CIRCLE":
28 self.newInput("Float", "Radius", "radius")
29 self.newOutput("Vector List", "Points", "points")
30

31 def draw(self, layout):


32 layout.prop(self, "mode")

So now that you know how to make nodes with changing sockets, it is now time to show how to write the execution
code in that case. The solution is to define a new function called getExecutionFunctionName(self). It
returns a string that contains the name with the function that should be called at that moment. Basicly it looks like this:
1 def getExecutionFunctionName(self):
2 if self.mode == "LINE":
3 return "execute_Line"
4 elif self.mode == "CIRCLE":
5 return "execute_Circle"
6

7 def execute_Line(self, amount, start, radius):


8 # do something
9

10 def execute_Circle(self, amount, radius):


11 # do something different

With that new knowledge it is easy to fill in the missing code in the correct functions to get the final node. I’ll just skip
forward to the end now because how to calculate points on lines and circles is not part of this tutorial. However here
is the code:
1 import bpy
2 from bpy.props import *
3 from math import sin, cos, pi
4 from ... data_structures import Vector3DList
5 from ... base_types import AnimationNode
6

7 modeItems = [
8 ("LINE", "Line", "Distribute points on line", "", 0),
9 ("CIRCLE", "Circle", "Distribute points on circle", "", 1)
10 ]
11

12 class GeneratePointsNode(bpy.types.Node, AnimationNode):


13 bl_idname = "an_GeneratePointsNode"
14 bl_label = "Generate Points"
15

16 mode = EnumProperty(name = "Mode", default = "LINE",


17 items = modeItems, update = AnimationNode.refresh)
18

19 def create(self):
20 self.newInput("Integer", "Amount", "amount")
21 if self.mode == "LINE":
22 self.newInput("Vector", "Start", "start")
23 self.newInput("Vector", "Direction", "direction")
24 elif self.mode == "CIRCLE":
25 self.newInput("Float", "Radius", "radius")
26 self.newOutput("Vector List", "Points", "points")

310 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

27

28 def draw(self, layout):


29 layout.prop(self, "mode")
30

31 def getExecutionFunctionName(self):
32 if self.mode == "LINE":
33 return "execute_Line"
34 elif self.mode == "CIRCLE":
35 return "execute_Circle"
36

37 def execute_Line(self, amount, start, direction):


38 points = Vector3DList()
39 for i in range(amount):
40 points.append(start + i * direction)
41 return points
42

43 def execute_Circle(self, amount, radius):


44 points = Vector3DList()
45 if amount <= 0: return points
46 factor = 2 * pi / amount
47 for i in range(amount):
48 points.append((cos(i * factor) * radius, sin(i * factor) * radius, 0))
49 return points

Socket Types

A socket is the point where 2 nodes can be linked. Therefor sockets are the main interface between a node and the
user. You might think having many different socket types is unnecessary but it has very important advantages.
• It can help finding which sockets make sense to connect; Although this is not always the case because some
sockets change there type automatically when they are linked.
• The clearer a socket is defined the better the performance of a node because it doesn’t have to check the input
type which adds a lot of overhead. That is also the main reason why Python is slower than many compiled
languages.
Currently there are 36 different socket types, but this may change over time. To see which sockets you have installed
go to the addon directory and take a look into the sockets folder. All files except __init__.py and info.py
represent one socket.
Many sockets come in pairs. E.g. there is an Object and an Object List socket. List sockets are by default just
an empty python list (not a tuple!). To get the bl_idname of a list socket take the base id name and insert List
before Socket. Sockets that have a corresponding list data type are often called base sockets.

2.3. Socket Types 311


Animation Nodes Manual, Release 2.0

All Data Types

Data Type bl_idname Has Function or the data it carries


List
BMesh an_BMeshSocket No BMesh
Boolean an_BooleanSocket No True or False
Color an_ColorSocket No List with four floats: [red, green, blue, alpha]
Edge Yes
an_EdgeIndicesSocket Tuple containing two integers
Indices
Float an_FloatSocket Yes Normal python float value
Generic an_GenericSocket No Can contain anything; Take care when converting to another
type
Integer an_IntegerSocket Yes Normal python integer value
Interpola- No
an_InterpolationSocket Tuple: (interpolation function, settings;
tion is often None)
Matrix an_MatrixSocket Yes Matrix
Mesh Data an_MeshDataSocket No Class that contains vertex locations and edge/polygon
indices
Node No
an_NodeControlSocket Contains no data; the function depends on the node where it
Control is used
Object an_ObjectSocket Yes Object (can be a mesh, lamp, camera, ...) or None
Object No
an_ObjectGroupSocket Object Group or None
Group
Particle an_ParticleSocket Yes Particle object or None
Particle Yes
an_ParticleSystemSocket Particle System object or None
System
Polygon an_PolygonSocket Yes Contains vertices, area, center, normal and material index
Polygon Yes
an_PolygonIndicesSocket Tuple containing at least 3 integers
Indices
Sequence an_SequenceSocket No Sequence
Spline an_SplineSocket Yes Either a poly or bezier spline object
String an_StringSocket Yes Normal python text
Text Block an_TextBlockSocket No Text or None
Vector an_VectorSocket Yes Vector
Vertex an_VertexSocket Yes Contains a location, normal and vertex group weights

Node API

All nodes are subclasses of bpy.types.Node and animation_node.base_types.node.AnimationNode.


This second super class allowed me to add many functions that make working with nodes very easy.
Each node has a unique identifier.

Class Properties

bl_idname: Unique string that identifies the node type. Make a good decision here because later changes will break
existing files. Examples are an_FloatMathNode or an_EvaluateSpline.
bl_label: String that will be used as default name and in the search box.
The next class properties are only optional.

312 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

searchTags: Can be two different things:


• Just a list of strings that will be shown in the search box so that the user can find the node easier. (e.g.
searchTags = ["Object Replicator (old)"])
• A list of tuples. Each tuple has the normal search string and a dictionary which contains default values for
specific node properties when the search tag was selected.
1 searchTags = [ ("Blend Matrices", {"dataType" : repr("Matrix")}),
2 ("Blend Vectors", {"dataType" : repr("Vector")}),
3 ("Blend Floats", {"dataType" : repr("Float")}) ]

onlySearchTags: When True the bl_label won’t be used in the search box.

Handling events invoked by the user

The create function

The edit function

The duplicate function

The delete function

Reacting on socket changes

Data Interface

This is a passive node that stores data so that other scripts can access (and change) it. The main idea is that another
script references this node and calls the getValue or setValue function.
Here is an example on how to access the data:
1 import bpy
2

3 tree = bpy.data.node_groups[INDEX_OR_NAME]
4 if tree.bl_idname == "an_AnimationNodeTree":
5

6 node = tree.nodes[INDEX_OR_NAME]
7 if node.bl_idname == "an_DataInterfaceNode":
8

9 node.setValue(VALUE)
10 node.value = VALUE

2.5. Data Interface 313


Animation Nodes Manual, Release 2.0

11

12 // or
13

14 value = node.getValue()
15 value = node.value

Note: After restarting Blender the stored data will not be available anymore.

Documentation Guide

Formatting examples

Sidebar Title

Optional Sidebar Subtitle


Subsequent indented lines comprise the body of the sidebar, and are interpreted as body elements.

Subheadline

Leverage agile frameworks to provide a robust synopsis for high level overviews. Iterative approaches to corporate
strategy foster collaborative thinking to further the overall value proposition. Organically grow the holistic world view
of disruptive innovation via workplace diversity and empowerment.
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a
new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User
generated content in real-time will have multiple touchpoints for offshoring.

Subsubheadline

Capitalise on low hanging fruit to identify a ballpark value added activity to beta test. Override the digital divide with
additional clickthroughs from DevOps. Nanotechnology immersion along the information highway will close the loop

314 Chapter 2. Developer Guide


Animation Nodes Manual, Release 2.0

on focusing solely on the bottom line.

Attention: To show the user this information is a must read.

Caution: To tell the user to be extra carefull.

Warning: To warn the user.

Danger: I wouldn’t use ‘danger’ in this documentation context.

Error: I wouldn’t use ‘error’ in this documentation context.

Note: To note some information.

Hint: We should give tips instead.

Important: If some information is important but need no ‘attention’.

Tip: For certain tips for the user.

1 def my_function():
2 "just a test"
3 print(8/2)

Todos

How to add a todo

Example how to add a todo in your file.


.. todo:: description of todo

If it’s in an empty page use following lines:


.. include:: /includes/workinprogress.rst
.. todo:: No content in file {path to file}

List of current todos in the documentation

2.6. Documentation Guide 315


Animation Nodes Manual, Release 2.0

316 Chapter 2. Developer Guide


CHAPTER 3

Release Notes

Release Notes for Version 1.5

Custom Frequency Ranges

It is possible to bake a custom amount of frequency ranges in the Sound Bake node. Previously there were 10 hardcoded
ranges.

317
Animation Nodes Manual, Release 2.0

Conditional Debug Nodes

The Debug and Debug Drawer node have a Conditional input now (which is hidden by default). This allows more
precise and easier debugging in loops and other cases where a node is executed multiple times with different inputs.

Get Selected Objects Node

This node can easily be used together with the new conditional debug nodes. It’s important to know that this node will
only work while during creation of the node tree. When you start the render it is disabled, because your render should
not depend on the selection.

Basic Shape Key Implementation

The two new socket types Shape Key and Shape Key List are part of AN now. Also the Object Instancer node handles
objects with shape keys much better in v1.5.

Basic Font Implementation

There are two new socket types for fonts (Font and Font List). Furthermore you have the ability to set the font of a text
object using the Text Object Output node now.

318 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Extended Math Nodes

New Snap and Absolute operation that can be used in the Vector, Euler and Quaternion Math node. This enables you
to snap values to specific increments.
Note: Snap operation is also added to Float Math node, while removing the Round operation from the list. (To round,
you can use Snap by setting Step Size to 1, 0.1, 0.01 etc. Or use the independent Round node)

Quaternion Math Node

Previously you were not really able to work with quaternions in a more complex way.

3.1. Release Notes for Version 1.5 319


Animation Nodes Manual, Release 2.0

Parse Number Node

This node can convert a text into a number which is handy when you want to parse a text block or something similiar
that contains numbers.

Extended Rotation Matrix Node

The Rotation Matrix node allows to create a rotation matrix for all 3 axis at once now (previously you had to create
three individual matrices and combine them or misuse the Compose Matrix node which is slower).

Shear Matrix Node

The Shear Matrix node calculates a matrix that can be used to shear meshes. You can’t use this matrix on objects
because it cannot be decomposed into location, rotation and scale. Instead it can be used with the Transform Vector
List node.

320 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Rotation to Direction Node

This is the reverse of the Direction to Rotation.

BVH Tree

Next to the KD-Tree which can be used to find close points, you have access to Blenders BVH-Tree module now. A
BVH Tree is a data structure that allows quick ray cast operations on many polygons. Make sure to use Blender 2.77
when you use these nodes because there is a bug in the previous version. The Raycast and Find Nearest Surface Point
nodes have additional Min/Max Distance inputs and a Polygon Index socket output which you can unhide in the node
panel in the right.

3.1. Release Notes for Version 1.5 321


Animation Nodes Manual, Release 2.0

Sequence Info Node

Access many different properties of a given sequence (the image doesn’t show all).

Access Hair Data

The Particle Info node gives you access to some more particle properties like hair points now (the image only shows
a subset of the possible outputs).

322 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Get Random List Elements Node

The same node can be archieved with a combination of some existing nodes, but having a specialised node for that
makes everything easier.

Dynamic Node Labels

Dynamic node labels allows you to have cleaner node trees because some nodes can show useful information in their
label, which allows you to collapse them without disadvantages.

Shift List Node

Data Interface Node

This node allows other addons to exchange data with AN. More information is available here: http://
animation-nodes-manual.readthedocs.org/en/latest/dev_guide/data_interface.html

3.1. Release Notes for Version 1.5 323


Animation Nodes Manual, Release 2.0

ID Key System

The ID Key system got a major overhaul again. It is much more stable now, which means it doesn’t accidently remove
some sockets. In general the ID Key System allows you to store data for individual objects in custom properties. The
best known usecase for that is to store initial transformations of multiple objects so that you can still access them when
the objects were moved by AN.

Improved Support for Multiple Scenes

The Object Instancer takes Scene List as input instead of only one scene now. This allows you to put the the instances
into multiple scenes without having to make multiple Instancers.
Each node tree has a global Scene that is used in all Scene and Scene List sockets by default. The global scene can by
changed in the Animation Node Tree panel. It is never None.

List Operations

There are two new nodes that deal with lists now. The Set List Element and Remove List Element nodes.
The Remove List Element node has three modes:
• Remove only the first occurrence of an element (limited to certain types)
• Remove all occurrences of an element (limited to certain types)
• Remove the element at a specific index (works with all list types)

324 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Condition Socket for Reassign Parameter Node

This allows to model functions for eg finding the minimum and maximum using a Loop. The Condition socket is
hidden by default.

Object Group Operations

This new node allows you to dynamically link and unlink objects from an object group.

3.1. Release Notes for Version 1.5 325


Animation Nodes Manual, Release 2.0

List Math Nodes

The Number List Math node has a new operation now that can be used to quickly calculate the average of multiple
numbers.
The new Vector List Math supports adding multiple vectors together as well as calculating the average.

Overview and Statistics

The Overview panel allows you to turn Auto Execution on and off for multiple node trees at once. Beside that you can
jump to a specific tree by clicking on its name now.
Clicking on the Statistics button opens the new Statistics View that can give some interesting insights into how large
your node tree is. The two numbers in the Nodes column is the total node count as well as the functional nodes
(Reroute and Frame nodes are excluded).

Set Vertex Color Node

The Set Vertex Color node didn’t change much in its appearance but it is 15x faster now. What makes this node so
special is that it is the only non-hacky way to modify colors of individual objects that use the same material. (A hacky
way would be to missuse the pass_index property.) Also it has very little overhead when the same color is already set.
The ultimate solution to this problem is to get access to Custom Properties of individual objects in Cycles materials.

326 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Sort List Node

Sorting lists was only possible using Expression or Script nodes so far. Using the new Sort List node this is not needed
anymore. The node automatically adapts to the list type that it is connected to. There are two sort types that work with
all list types:
• Custom: You’ll get a little text box in which you can insert an expression that will be used to get the
sorting-key of the individual objects.
• Key List: In this mode you can provide the node with an extra list that has the same length as the list you
want to sort. The second list contains the sorting-keys for the individual objects. Most of the times you
will need to make a simple loop with a generator output to create this key list. Supported key list types are
Float and String.
Beside these two generic sorting modes, there are some simple sorting templates for specific list types (currently only
for object lists). We can add more of these templates over time when needed. The node uses a stable sorting algorithm.
Warning: Moving and sorting objects based on their position is not always a good idea, because it leads to flickering..

Geometry Nodes

A small set of geometry nodes has been added to make certain operations easier.

3.1. Release Notes for Version 1.5 327


Animation Nodes Manual, Release 2.0

Object Output Nodes

The object output nodes have been unified into more similiar nodes.
The Set Splines on Object node does not exist anymore. It is part of the Curve Object Output node now.
Previously we had three nodes to replace the mesh of an object: Set Mesh Data on Object, Set BMesh on Object and
Set Vertices on Object. These are all part of the Mesh Object Output node now. Additionally we can set material
indices of polygons with this new node.

328 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Change Text Case Node

Smaller Changes

The Get List Element node has a Clamp checkbox now, that allows you to clamp the index to the length of the list.
The Create List node displays the amount of elements in the output list.
The Object Mesh Data node outputs the name of the mesh now (the socket is hidden by default).
The Random Text node has a Node Seed property now.

The Number, Vector, Euler and Quaternion Wiggle nodes have a Speed socket again and a better default speed than
before.

3.1. Release Notes for Version 1.5 329


Animation Nodes Manual, Release 2.0

The Auto Execution panel changes when preview rendering is enabled now. This is to make it more appearent that the
Always option is turned of in that case.

The List category got submenus for the Create and Combine List nodes in order to force the user to make a type
decision right at the beginning. It is possible to change that type later, but it might not be obvious. (The recommended
way to insert specific Create/Combine List nodes is to use the search.)

330 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

The Transform Polygon can be used with a custom pivot point now.

There is a Boolean List socket now.

3.1. Release Notes for Version 1.5 331


Animation Nodes Manual, Release 2.0

When a user tries to connect a link to a Script node he now gets an info popup that explains that he should use the
Invoke Subprogram node to execute the script.
AN uses a new better algorithm to sort the nodes before the execution now. This results in a small speedup when
working with many nodes and large networks.
The Object Instancer node supports creation of empty objects now.

The Frame and Reroute nodes are now in the menu like in the other node systems.
The Direction to Rotation node also outputs a rotation matrix and a quaternion now.

Release Notes for Version 1.6

Execution Triggers

Until now Auto Execution of node trees was limited to certain predefined events like Always, Frame Changed, etc.
Most people don’t like to have Always enabled all the time because slows down the scene and heats up the cpu. This is
a problem because sometimes the result of the node tree only depends on the location of an object. So it would make
sense to only execute the tree when the location changes. This is exactly what these new Execution Triggers allow you
to do.

332 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

You just need to create the trigger, select an object and write/paste the data path to the property. For convenience some
nodes have a button in the advanced settings that quickly creates the Trigger for this specific node.

Network Navigation

The functionality of the TAB key has been improved. It has context sensitive behaviour now. Before this release it
was only possible to jump from an Invoke Subprogram node to the corresponding subprogram. Now function depends
more on the active node. Just try it out. It should become pretty clear what happens when certain nodes are selected.
More information can be found in this GitHub Issue.

Select Area

I always found it annoying to use Blenders text editor together with AN, mainly because it required so many click to
setup it up. For this release I developed a new operator that makes it much faster to setup the text editor. The operator
itself is very generic, it allows you to create/select an area in the Blender interface, the caller than decides what to do
with this area. It is already used in multiple places: Script node, Text Block socket, Debug Loop and in the Developer
Panel.

Popup to Rename Objects

The button to assign the active object to an object or spline socket got a new functionality. When you hold down Ctrl
and click it you get a little popup that allows you to rename the object in place. This is very handy when you want to
clean up your scene but don’t want to seach all the objects in the outliner or the 3d viewport.

Bake to Keyframes

Baking animations is often required before rendering. Sometimes because AN is unstable during rendering (often
this can be fixed by locking the UI during rendering!) or AN just does not exist on the computer that will render the
animation (think about renderfarms).
You could already create keyframes before using the Set Keyframes node but it can be easier than that. And it is now.
The Bake to Keyframes button can be found in the Overview panel. Basicly it works in three steps:
1. Change the execution code type (more info below) to Bake
2. Visit each frame in the timeline once
3. Change the execution code type to Default

3.2. Release Notes for Version 1.6 333


Animation Nodes Manual, Release 2.0

If you want to exclude certain node trees from the baking progress you can just disable Auto Execution for them.
This operator can bake everything that can be animated with keyframes. That excludes spline, text and mesh animation!
This nodes support baking so far: Object Attribute Output, Object Data Path Output, Object Matrix Output, Object
Transforms Output, Object Visibility Output, Curve Object Output (limited), Text Object Output (limited) and Text
Sequence Output (limited).

334 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Change Matrix Pivot Node

This node is mainly a companion or complement to the transform nodes. It helps setting a custom “pivot point” for the
transformation operations, a process similar to parenting. Basically it replaces the need for some matrix construction
setups that can prove to be confusing sometimes and not very “artist friendly”
Basic usage examples:
• transform (rotation) of object goes around Empty
• Rotation around axis, where X and Z are defined by points

3.2. Release Notes for Version 1.6 335


Animation Nodes Manual, Release 2.0

336 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

It does define the reference pivot in several ways, from simple location to matrix or combinations of vectors and
directions.
A classic and very used case, would be “flipping” a polygon around an edge, where defining Z as normal and a side
(0-1) as center and X direction. (this can be defined otherwise with matrices etc. but can prove quite complex setup)

3.2. Release Notes for Version 1.6 337


Animation Nodes Manual, Release 2.0

Note: When used along with a Transform Polygon node, the pivot type of that node should be set to World.

Structs

Structs are a new socket type. It can store multiple values in one socket. Having such a type has multiple benefits:
• It’s easier to manage many records.
• Can replace Generic Lists in some cases (generic lists are bad because they don’t which data type
they contain)
• Allows us to have a new set of nodes in the future. E.g. for automatically reading and parsing .csv
files.

338 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

It’s also worth mentioning that struct nodes make sure that data types stay correct.

BMesh Mesh Data

This is a node that exposes vertices, edges and faces as mesh data (Vectors and Indices) or Animation Nodes Vertes
and Polygon data, just like the Object Mesh Data node, but from BMesh.

This comes handy when you need certain mesh data processed (like recalculatng normals) and then use it further
without the need to put it into a “real” blender object. Also may find it useful for having Polygon or Vertex data out of
mesh data made by nodes.

3.2. Release Notes for Version 1.6 339


Animation Nodes Manual, Release 2.0

In the example, we use the transform polygon template, but to provide polygons out of the grid mesh, this bmesh to
mesh data is used.

Geometry Nodes

There is a new set of tools (and menu) called Geometry. This contains “helper” functions to process some data or
establish relations between elements, somehow more complex than vector math or matrix or rotation functions.

340 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Text File Reader

This node can read a text file from the hard drive without having to open it in Blender. You can also specify an encod-
ing. Most common are ascii and utf8 but there are much more. A full list can be found in the python documentation
on codecs.
The node caches the text internally and only reloads the text when the file changed.

Expression Node

The Expression node got two improvements in this release.


1. When it is collapsed the expression will be in the node label now.

3.2. Release Notes for Version 1.6 341


Animation Nodes Manual, Release 2.0

2. Previously the expression node was almost always used together with a Convert node. This is not necessary
anymore because the output socket of the expression node changes its type automatically now. Furthermore the
data type of the expression result is checked and corrected if possible. This is to make sure that the node does
not infiltrate the node tree with invalid data. The automatic type checking can be turned off in the advanced
settings to remove overhead in extreme cases. The output data type can be changed manually by clicking on the
little button next to the expression field.

More Dynamic Labels

Dynamic labels are becoming more and more important in AN in order to create cleaner looking node trees. They
allow you to collapse nodes without loosing any information on what they are doing. Here are some examples:

342 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Slice List

The slice list node has been extended to support all the different slice that Python supports. The Start, Stop and Step
sockets be enabled and disabled as needed.

Splines from Object Node

This node has two options now. You can either load all splines on a curve object or only one with an index. Previously
you would import all splines first and pick one of them with the Get List Element node afterwards. Unfortunally this
adds unnecessary overhead because you imported the other splines although you don’t need them.

3.2. Release Notes for Version 1.6 343


Animation Nodes Manual, Release 2.0

Repeat and Fill List Nodes

Convert to Integer List Node

Developer Tools

Execution Code Types

AN can generate different execution codes based on the same node tree now. This is used for some features which
make the execution slower but should have zero overhead when they are disabled. Currently there are four different
execution code types:
• Default: This should be turned on most of the time. It just creates the execution code like before
without any extra features enabled.
• Monitor Execution: This creates a try-except block around the execution code of every node.
Furthermore it checks if all the linked outputs have been calculated or if a node forgot something

344 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

(this would raise an Exception in another node). This mode is helpfull when a node raises an
exception but you cannot tell which one. It should only be turned on when there are problems.
• Measure Execution Times: Measure the total and average time each node takes to execute and
display the results in the node editor. I personally use this a lot when I try to improve the
performance of certain nodes but it also helps to find the performance bottlenecks of whole
node trees.
• Bake: This is mainly used by the new bake function and should not be activated manually (although
it is no problem to activate it). When it is enabled nodes like the Object Transforms Output node
automatically create keyframes for the properties they change.

Function Profiling

This feature is more important to people who develop AN, but it can also be useful for others to find out which
functions make your node tree slow. Unfortunally it isn’t very easy to understand the profiling output if you don’t
know anything about programming.

Minor Changes

The execution time is now drawn into the top left corner of the node editor to make it visible when the toolbar is
closed.
The Compose Matrix node is roughly 40% faster now.
The Splines from Object node is 30% faster for bezier splines.

3.2. Release Notes for Version 1.6 345


Animation Nodes Manual, Release 2.0

The Interpolation from Curve Mapping node does not remap the values anymore. If you need an overshoot in the
interpolation you can press the minus-icon to zoom out.
The Shade Object Smooth node is twice as fast now.
This Floating Advanced Panel that you can open with the U key is fixed now.
The width and location of the selected node in the Node Panel aren’t visible anymore when Debug is disabled in the
user preferences of AN.
The Change Text Case node has two new modes: Capitalize Words and To Title Case.
To make you aware of any problems in the node tree there will be a thin red border around the node editor now (only
when problems exist obviously).
For ages there was a double update whenever a node has been created or removed. This is now fixed. This is especially
important for large node trees when the code generation takes a noticeable amount of time.
AN always creates a python script based on your node tree. This script needs to be recreated each time the node tree
changes. In setups with only a few nodes you never notice that because it is fast but as soon as you have more than a
few hundred nodes the time spend for the code creation can become noticable. With this release the code generation
process is 2-3x faster for large node trees.
You can sort the generator outputs of a loop now. To do it you need to select the corresponding Loop Input node and
go into the advanced settings.

Help the user to remember to enable the socket when it is linked:

I moved the settings for the Debug Drawer node into the advanced settings (in the right sidebar of the node editor, or
press U while the node is selected). The reason for that is that I rarely need to change these settings and they took too
much space.

346 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Broken Nodes

I’m not 100% if this is a full list but you’ll definitly have to replace these nodes when updating older files to this
release:
• Splines from Object
• Object Matrix Output

Release Notes for Version 2.0

Key Features

Cython

Many parts of Animation Nodes has been rewritten using the Cython programming language. It’s a language that mixes
Python and C and is perfectly suited to develop addons with high performance for Blender. There is one disadvantage
though, we now have different versions of Animation Nodes for different platforms. So you have to download the
correct version for your platform.
Subsequently, generating vectors is now 400x faster compared to non cythonized versions. Maths is also 200x faster.

Vectorization

Lists are an essential part of Animation Nodes. In previous versions the only way to use lists effectively was to use
loops. These have an advantages as they give you a lot of flexibility. However, in many cases the flexibility of loops
are not needed. This release includes an alternative approach to edit lists: Vectorized Nodes. A vectorized node is a
node that can work on individual values as well as on lists. Together with Cython, this leads to big speedup for some
operations.
Currently, vectorized nodes can be visually distinguished: When no links connected, all vectorizable sockets, including
input(s) and output(s), are temporarily displayed in a color with transparency of 0.8 (while for any list data type, the
socket transparency is 0.5; and for any base data type, the color is solid). Transparency will be shifted to 0.5 when
connecting with valid list data.

3.3. Release Notes for Version 2.0 347


Animation Nodes Manual, Release 2.0

Not all nodes which could have this functionality have it yet. Fortunately, vectorizing a node does not break it, so
some nodes can be vectorized after the first release of AN 2.0.

Falloffs

While the first two key features were mainly targeted at all users of Animation Nodes, falloffs have been designed
specifically for motion graphics designers. In general, a falloff is a function that tells an effect how much it should
influence a specific object. You can think of it like a mask for an effect (similar on how we can use weight painting to
control the influence of some modifiers).

Compatibility

Similar to the last releases, this release will break most existing files in a way so that they don’t work anymore in this
release. This is necessary to not slow down future development (keeping old stuff working always means that some
new features would not be possible). There might be some files that still work in this release but you should not expect
that.
Updating files to work in this version is easy in some cases but very difficult in others. In general I suggest to either
use the old version for old files or rebuild the node trees from scratch.
It is also possible to change existing files in a way that they automatically load the correct version of AN when loaded.
This might also be useful when you want to render animations that use AN on a renderfarm, basically you can put the
.blend file and the addon into a .zip file and upload it to the renderfarm (Note: this is only possible when the renderfarm
allows you to execute python scripts, sometimes you first have to ask for permission). For more information contact
me (mail@jlucke.com).

348 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Documentation

Every node is documented in this manual now. We now start to improve the documentation of individual nodes step
by step. Every help is welcome, mainly to make it more useful for artists.

Changes in Detail

Misc

Sockets

New socket type: Falloff.


Removed socket types: Vertex, Polygon.
The BMesh socket has a new color.

Data Inputs

Input of data input nodes like input integer, float are now hidden because it confuses people. It can be unhidden just
like any node if needed.

Converter

Converter node now has a lock button to lock the data type and stop it from changing the output socket automatically.

3.3. Release Notes for Version 2.0 349


Animation Nodes Manual, Release 2.0

Loops Generator Output

Generators are now vectorized which means they can append multiple values if given a list.

350 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Groups

In the Group Input node the socket is renamed from New Parameter to New Input.
In Group Output node, the socket is renamed from New Return to New Output.

Expression

There are two new advanced settings:


• Inline Expression Reduces function call overhead. The speedup is only notable when the expression is very
small. When deactivated expressions like sin(x) can be used. To archive the same thing when the setting
is activated use math.sin(x).
• Fixed Data Type Forbid the node to change the output type automatically. This is automatically activated when
the output type is selected manually.

3.3. Release Notes for Version 2.0 351


Animation Nodes Manual, Release 2.0

Keyboard Shortcuts

Animation Nodes currently uses the W, E and U key in the node editor. The W and E key have not changed since the
last release but the U key now opens a popup that not only shows the advanced settings of a node but also its sockets.
This is useful as some nodes have hidden sockets or allow reordering/deletion of sockets.
Furthermore there is a new shortcut (shift ctrl Q) to disable Auto Execution for all AN trees. This is helpful when you
accidentally made a mistake and the execution time becomes very long.

3D Viewport

An option to show the indices of vertices, edges and polygons is available under the display panel in properties menu
now. Note that this option is designed to be used in object mode.

352 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Templates

Templates were removed. There will be a better template system in the future.

Remove Node Tree

There is now a button to remove the current node tree.

Measure Execution Time

The Measure Execution Time tool now displays the minimum execution time instead of average.

3.3. Release Notes for Version 2.0 353


Animation Nodes Manual, Release 2.0

Performance Mode

Performance Mode was removed. It was absolutely useless for users.

Lists

Create List

Remove Inputs in advanced node settings became Remove Unlinked Inputs which removed inputs if they weren’t
connected to any other node.

Get List Element

The advanced node settings were moved to the node itself for easier and faster access. The node can now get multiple
elements if given a list of integers that represent their indices. To do this check Use Index List button. Note that Edge
Indices and Polygon Indices can be converted to an Integer List implicitly like in the example below.

354 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Mask List

This new node selectively removes list elements based on a boolean list.

3.3. Release Notes for Version 2.0 355


Animation Nodes Manual, Release 2.0

Sort List

Name, Post Distance and Direction options were removed because they can be achieved using other options.

Random List

This node was newly added. It simply returns a list that contains some random elements from the input list. Unlike
the multiple option in the Get Random Element node, elements can be repeated and thus the length of the output node
can be larger than the input list.

356 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Mesh

This category is one of the heavily updated one, a lot of nodes were removed and a lot were added.

Object Mesh Data

Vertex and Polygon data outputs were removed as well as their data types, they are no longer available in AN 2.0. As
an alternative, some new outputs are available: Vertex Normals, Polygon Centers, Polygon Normals, Local Polygon
Areas and Material Indices. The new outputs are pretty much what the polygon and vertex data included, so there no
loss of flexibility here, in fact it is much more efficient.

Vertex Group Input

This newly added node return the weights of the selected vertex group.

Cylinder Mesh

This newly added node creates the mesh data of a cylinder.

3.3. Release Notes for Version 2.0 357


Animation Nodes Manual, Release 2.0

Grid Mesh

Grid Mesh generator was redesigned and can now be defined either using grid dimensions or step sizes for cells.

Find Close Points

Find Close Points (previously named Find Close Vertices) node has been redesigned. There are now two modes:
Amount and Distance. The node also returns distances between points as an output.

Edges To Planes

Edges To Planes node was removed and replaced by Edges To Tubes node.

Edges To Tube

This node was newly created as a replacement to the Edges To Planes node and it simply create tubes in places of
edges.

Create Edges

This node was newly created and it returns edges info for edges that connects each two vectors in the two input vector
lists. The first vectors in both lists are connected together, the second vectors in both list are connected together and
so on.

Create Polygon Indices

A new option was added to create indices of the pattern 0,1,2,3, ... ,n where n+1 is an input integer. This
is helpful if vertices are in the right order. The node also support the creation of multiple indices list with different
number of indices by checking the Use List button next to the type menu.

Edge Info

This node was newly added and it return some information about the input edge data like their centers, length, starting
and ending points.

358 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Create Bmesh

This node was newly added and it create a bmesh data type from a mesh data type.

Mesh Data From Object

This node was newly added and it returns the mesh data of the input object. See example above.

Replicate Mesh Data

This node was newly added and it instances the mesh data and transforms it based on the input transformation matrices
(or vectors).

Extract Polygon Transforms

This node was newly added and it returns transformation matrices that describe the location and orientation of the
input polygons. The local x axis is aligned with the direction of the first edge of each polygon.

Prepare Polygon Transformation

This node was newly added. It separates the input polygons and return them in their unity position, that is, they are
located at the center of the world and lie on the xy plane. It also return a list of transformation matrices that if used to
transformed the output polygons, the result will be the polygons in their initial position and orientation. This node is
useful when used with transform polygons.

Transform Polygons

This node was newly added and it transforms input polygons based on an input transformation matrix. Note that the
individual polygons should be separated from each others for this operation to make sense.

Separate Polygons

This node was newly added and it simply separate the input polygons, the result is exactly the same if you used the
Prepare Polygon Transformation node and transformed the polygons based on the transformation matrices given.

Mesh Object Output

Advanced settings have been changed and extended. Now, with the new Ensure Animation Data feature (enabled by
default), it allows exporters (mainly Alembic) to export the mesh correctly.

3.3. Release Notes for Version 2.0 359


Animation Nodes Manual, Release 2.0

Get Bounding Box

Get bounding box node now returns the mesh data of the bounding box as well as its center.

Polygon Info

Polygon Info node was removed.

Vertex Info

Vertex Info node was removed.

Texts

The old term “String” has been renamed to “Text” in many places.

Repeat Text

Fill Text node was renamed repeat text for convention.

360 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Replicate Text

Replicate Text node was removed because the same function can be done using the repeat text node by leaving the text
input empty. See example above.

Reverse Text

Reverse Text node was added that reverse the input text’s character’s order.

Text Object Output

Implemented Horizontal and Vertical Alignment. Also it has been vectorized.

Separate Text Object

Added an advanced setting to hide relationship lines.

Sounds

Sound nodes have been redesigned visually and had some inputs renamed but functionally it is still very similar.
The Single and Equalizer sound types are called Average and Spectrum now. These names are used more often in
other software as well.
Also the output of the Evaluate Sound node is called Volume/Volumes now depending on which sound type is selected.

3.3. Release Notes for Version 2.0 361


Animation Nodes Manual, Release 2.0

Many common sound animations can be achieved using the new sound falloff.
Of course the older, more flexible approach, is still available.

362 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Note: Often it is useful to enable the AV Sync option in the timeline.

Vectors

Random Vector

Random Vector node can now generate a list of random vectors. This can be done by checking the Create List button
beside the node seed. The node is now 400x faster than before. A Normalized Vector feature was added as an
advanced setting.

3.3. Release Notes for Version 2.0 363


Animation Nodes Manual, Release 2.0

Vector Wiggle

Vector Wiggle node can now generate a list of vectors.

Transform Vector List

Transform Vector List node was removed because now the Transform Vector node is vectorized and can operate on
lists of vectors.

Offset Vector

This new node was added to make use of falloffs with vectors. The node simply translate the vector based on a
translation vector, the factor of translation is controlled by a falloff.

Viewer

Debug nodes are now called viewers.

Viewer

The Debug, Debug List and Debug Drawer nodes were combined into a single node called Viewer. It automatically
determines whether data should be drawn inline (single element) or in a box (list, or a long text), and returns infor-
mation such as datatype and list length (depending on input datatypes). The result can also be output to text block or
console.

364 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

3.3. Release Notes for Version 2.0 365


Animation Nodes Manual, Release 2.0

3D Viewer

This newly added node draws point an empty like objects in the 3D viewport. If vector(s) were given, then points are
drawn in their locations. If matrices were given, then empty like objects are drawn to show their orientation as well as
their location.

Numbers

All number nodes that can be vectorized are now vectorized.

366 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Float Range

Float Range node can now generate floats inside the closed interval [start, stop]. This can be done by choosing
the Start/Stop option. The node now is 400x faster than before.

Random Number

Random Number node can now generate a list of random floats. This can be done by checking the Create List button
beside the node seed. The node is now 400x faster than before.

3.3. Release Notes for Version 2.0 367


Animation Nodes Manual, Release 2.0

Map Range

Map Range node has a new UI for easier and faster workflow. And it is vectorized, so it can now remap a list of floats.

368 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Float Math

Math node is now 200x faster. It is vectorized such that you can operate on two lists element wise, operate on a single
list for single input operations and operate on a list and a value where the value is added, multiplied, etc to all the value
of the list.
The math node also have a new UI feature: A small menu called Quick Settings will appear whenever the node
is duplicated. This menu includes four buttons which convert the type of the math node to addition, multiplication,
subtraction or division. This allow faster conversion if needed. If you don’t want to convert, then pressing the check
mark will hide the menu telling AN that this is the type you want. Moreover, a button is present in the advanced node
settings that hide the menu for all nodes in the current node tree.
Float can now be automatically converted to Integer without an extra node.

Constants

There is a new Number Constants node which provides easy access to a few constants.

3.3. Release Notes for Version 2.0 369


Animation Nodes Manual, Release 2.0

Matrices

Distribute Matrices

This node was newly added and it generate a list of transformation matrices distributed on a line, grid, circle or mesh
vertices.

Replicate Matrix

This newly added node instances and transforms input transformation matrices based on some other input transforma-
tion matrices (or vectors).

Transform Matrix

This node transforms a matrix (or matrix list) by another matrix input.

Offset Matrices

This newly added node makes use of falloffs with matrices. It transforms all input matrices in a certain way. The
falloff controls how much each matrix is influenced. There are also a couple of advanced settings which control the
transformation behavior.

Change Matrix Pivot

Change Matrix Pivot node was removed.

Objects

Object Transforms Output

The Object Transforms Output node has a new UI for enabling transformation channels. The node now supports
editing the delta transforms of object. Delta transforms are transforms that are added on top of the current transforms.

370 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

So now you can define objects relative transforms without any ID keys. If you want to change the delta transforms
you have to enable this option in the advanced settings. The node is also vectorized, so you may edit delta transforms
for multiple objects.

Object Attribute Input

The node now has an operator to create an execution trigger for the property at the input path ID.

Object Attribute Output

The node is now vectorized and can take a list of object. When the input is a list of object, thee Multiple Values
option appears. Now you have two options. To set the input value to all object or to provide a list of values to be set to
objects element wise.

Object Data Path Output

Has a new cache to allow faster execution. The cache can be cleared from the advanced settings.

Armature Info

This node was newly added and it gives access to some information about bones of the input armature like their centers,
transformation matrix, directions, lengths, tails, heads and more.

Object Instancer

The object instancer node now have an option to hide the source object.

Splines

Append Point To Spline

A radius input was added to the node to set the radius of the newly created point.

Spline From Points

You can now set the left and right handles of the spline points manually as well as setting their radius.

Replicate Spline

This newly added node instances splines and transforms them based on the input transformation matrices.

Spline Info

Spline Info node now returns the locations of the handles of the points as well as the radii and amount of points.

3.3. Release Notes for Version 2.0 371


Animation Nodes Manual, Release 2.0

Splines From Object

There is now an option to return the splines in World Space.

Change Spline Type

This newly added node convert spline to a poly or a bezier spline.

Set Spline Radius

This newly added node set the radius of the points of the input spline.

Splines From Edges

Two options to define the radius of spline points were added. The first options sets the radius per point, so it expects a
float list of the same size as the vertices of the edges. The second option sets the radius per edge so it expects a float
list with the same length as the edges indices list. It should be noted that the node is vectorized, so you might just enter
a single float and it will be set as the radius of all points and edges and the option won’t matter.

Project On Spline

A new output Distance was added and it is equal to the distance between the input point and the projected point. In
other words, it is the shortest distanced between the input point and the closest point on the spline. Or in other words,
it is the length of the line that is perpendicular to the tangent at the surface and starts at the input point and ends at the
point of tangency.

Trim Spline

Trimming a bezier spline produces much cleaner results now. Also the node has been vectorized.

Booleans

Compare Node

There is a new condition (Is None) which checks if the input is a Python None object. Many types in AN are (by
definition) never None. However certain types (like Object, Sequence, Generic, ...) are allowed to be None, so this
mode only makes sense when used with one of those types.

372 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Logic Operators

Two new operators were added: Not (A and B), Not (A or B).

Boolean List Logic

Two new options were added to the boolean list logic node: Not All True, Not All False.

3.3. Release Notes for Version 2.0 373


Animation Nodes Manual, Release 2.0

Number To Boolean

This node converts a number into a boolean in a standard way. If the number is zero, it will return False and otherwise
True.

374 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Falloff

This whole category was added and it provides a high level approach to controlling effects and animating them. Below
are some of the nodes it includes.

Fade Falloff

This falloff can be used to fade between two values.

Delay Falloff

This falloff can be used to delay the effect of some objects based on time. In the example below we make some objects
appear earlier than others. It works good in conjunction with the Object ID Key node.

Wiggle Falloff

This falloff can be used to control an effect based on a noise function. So far there is only 1D noise meaning that the
effect strength only depends on the time and not on the location of a vertex.

Random Falloff

Much like the wiggle falloff, this can be used to control and effect based on a random factor except this factor is
completely random and can’t be animated, it is much faster than wiggle falloff so use this node if you are not going to
animate.

3.3. Release Notes for Version 2.0 375


Animation Nodes Manual, Release 2.0

Index Mask Falloff

This falloff chooses between two values based on a pattern. Currently two patterns are supported: Every Nth and
Random.

Object Controller Falloff

This falloff is a wrapper for multiple other falloffs to make them easier and faster to use in practice. So far it supports
spherical and direction falloffs.

Sound Falloff

Sound falloff provide a much more efficient way to evaluate baked sound data. You can evaluate the sound data based
on the object indices or based on another falloff. So you may use a point distance falloff to evaluate the sound data
resulting in this radial sound visualization:
Or you can do an index based evaluation of the sound to control the scale of some radially distributed objects resulting
in:
To create a normal equalizer animation, start with something like that:

Spline Falloff

The spline falloff enables you to control an effect based on the shortest distance to a spline.

Constant Falloff

This is the default falloff. With this every effected element is effected with the same strength.

Custom Falloff

A custom falloff lets you create a falloff from a list of factors for total control.

Directional Falloff

A directional falloff lets you control an effect based on the distance along some vector from some point. It is the same
as the direction option in the object controller falloff but inputs are exposed and not controlled by an object.

Point Distance Falloff

A point distance falloff lets you control an effect based on the distance to some point. It is the same as the sphere
option in the object controller falloff but inputs are exposed and not controlled by an object.

Interpolate Falloff

With this you can edit a falloff. For this node to make sense the input falloff should only produce factors between 0
and 1. Most of the common falloffs do this anyway.

376 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Remap Falloff

This node remaps the floats of the input falloff to a new range. The node assumes that the original range was [0,1],
which is usually the case.

Invert Falloff

This node invert the factors of the input falloff.

Mix Falloff

This node mixes between two or more falloffs. It supports multiple modes: Max, Min, Add, Multiply.

Evaluate Falloff

This node evaluates the falloff for the given inputs. So it returns a list of strenghts (a number one for every element).
This can be used to control custom effects.

ID Keys

An ID Key allows to store custom values on a per object basis. The Id Keys system got a major update.
Until now there was only one ID Key by default (Initial Transforms). Now there is a second one (Index) which can be
used for all kinds of things. E.g. it can be used to sort objects before passing them to Animation Nodes. There are a
couple of operators that help with that.
It is possible to create a new ID Key now. Note that it might disappear after a restart when it is not used anywhere.
Furthermore some ID Keys can be removed as well. Wether a ID Key can be removed depends on where it is used. It
cannot be removed when a Object ID Key node uses it or when it is one of the default id keys.
Animation Nodes currently supports 4 different types of ID Keys: Transforms, Text, Float and Integer. All of these
can be accessed using the Object Id Key node.

Generating Index ID Keys

Similar to how Transforms ID Keys can be loaded from the current transforms of an object, integer ID Keys can be
generated in multiple ways.

Selection Order Method

Random Method

Distance Method

Axis Method Other options includes alphabetical sorting of object.

3.3. Release Notes for Version 2.0 377


Animation Nodes Manual, Release 2.0

Rotations

Random Euler

Random Euler node can now generate a list of random eulers. This can be done by checking the Create List button
beside the node seed. The node is now 400x faster than before.

Geometry

Point in Camera Frustrum

This node returns four outputs: Image U, Image V, Z Depth and a Visible boolean. Image U and V represent the point
position in a UV coordinate based on the active camera view, while Z Depth tells you how far the vector is away.

378 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Note: the object input must be a Camera object.

Triangulate Polygons

Triangulate Polygons has been removed because it is nearly never used and hard to maintain. However, it may be
rewritten in a better form in the future.

Intersect Polyline Plane

Intersect Polyline Plane was removed because it is nearly never used and hard to maintain

Interpolation

Curve Interpolation

The Interpolation From Curve Mapping node was renamed to Curve Interpolation. The node now support caching
of interpolation for tremendously faster if it has to be evaluated very often. Below is a curve interpolation with and
without cache option.

3.3. Release Notes for Version 2.0 379


Animation Nodes Manual, Release 2.0

Mix Interpolation

This newly added node mixes between two interpolation using one of two algorithms. Overlay which simply over-
lay both interpolation where zero means the first interpolation and 1 means the second. Chain which stack input
interpolations beside each others.

Mirror Interpolation

This newly added node inverts the interpolation and possibly combine it with the original if chain was checked.

KD & BVH Trees

Pretty much all nodes that can evaluate BVH or KD Trees are vectorized.

Ray Cast BVH Tree

There is now an option to start the ray at infinity.

Construct BVH Tree

BVH tree can now be constructed directly from object.

380 Chapter 3. Release Notes


Animation Nodes Manual, Release 2.0

Particle System

The particle system category was redesigned to be more compact and useful.

Particle Data

This newly added node combines the filter particles and particle list info node. It filter particles based on the selected
options, then it return particle info like their locations, velocities, sizes and so on.

Hair Data

This newly added node returns the particle system hair as a list of splines.

Get Particles

Get Particles node was removed.

Particle System Input

Particle System Input node was removed.

Filter Particles

Filter Particles node was removed.

Particle List Info

Particle List Info node was removed.

Particle Info

Particle Info node was removed.

Support

There are a many ways to support the development of Animation Nodes.


• Create video/text/... tutorials. Feel free to contact me so that we can make your tutorials better together.
• Help with the official documentation. For example you can provide better descriptions for existing nodes or
create images/gifs that show use cases for some nodes. Just send your results to me, I can insert it into the
manual if you don’t want to do all the git-stuff.
• Help me financially. This will become more and more important for me personally as I have to pay my bills and
AN development takes a lot of time. Also this allows me to pay for the Blender Conference and other Blender
related things. Below you will find two ways to donate.
• Share, share, share. Every day I search for new things people created with Animation Nodes. Everything I
find motivates me to work on AN even more. Also it might attract new people to start using Animation Nodes.

3.3. Release Notes for Version 2.0 381


Animation Nodes Manual, Release 2.0

• Get involved in the development. If you already have some programming experience with python I’d love to
help you get started in developing new nodes and other features for Animation Nodes.

Donation Links

• One time donation via Paypal: https://www.paypal.me/jacqueslucke


• Small recurring donation via Patreon (preferred): https://www.patreon.com/jacqueslucke

382 Chapter 3. Release Notes


CHAPTER 4

External Links

Youtube Channel of the Main Developer: English (Videos): https://www.youtube.com/channel/


UC5ABAuGEvBMmau-1xJsNw6w
Blender Diplom: English (Video Tutorials): http://www.blenderdiplom.com/en/tutorials/animation-nodes.html
German (Video Tutorials): https://www.youtube.com/playlist?list=PL310M9jJ4pH8OP21jCQba5dA2R4-rtrM5
Blender Sushi: English (Blog): http://blendersushi.blogspot.de/search/label/anstudy
English (Live Noding): https://www.youtube.com/playlist?list=PLsbztkb4az9gVNKH1ai7Kxj37e7gZPD75
Blender Stackexchange: English (Questions): http://blender.stackexchange.com/questions/tagged/animation-nodes
Local Guru: English (Experiments): http://www.local-guru.net/blog/tag/animation%20nodes
LollypopMan: English (Video Tutorial): http://lollypopman.com/tag/animation-nodes/
ONELVXE Studio: English (Video Tutorials): https://www.youtube.com/playlist?list=
PLV9xOovGG3hhavLVC3Zh-90R2rAESw24f
Zach Hixson: English (Video Tutorials): https://www.youtube.com/playlist?list=
PLJSCK4DjIWhk-JIGOIJKLUB1bGXfDBgzZ
Omar Ahmad: English (Text and Animation Tutorials): https://squircleart.github.io/posts.html
BIG3: English (Video Examples): https://www.youtube.com/playlist?list=PLxhvHjvBEdqgvnNKQmdedLz9pwXEaPTYe

383

You might also like