Introduction
Modules are the fundamental nodes of the Aximmetry Composer. They cover a vast range of functionality from simple functions such as adding together values to complex functions such as the depth of field calculation of a 3D scene.
Insert Module
The usual way to add a new module is through the Insert Module window.
Right-clicking on an empty space in the Flow Editor brings up a list with the Insert Module... option:
NOTE: Alternatively, you can use the Module Type Browser panel (shortcut: F6) to insert modules.
After selecting the Insert Module... option, the Insert Module window will appear with many modules to choose from.
The window has a search field, a type category browser, and a selection field:
The colors of the modules in the Insert Module window represent the color of the node in the Flow Editor.
When selecting one of the main categories like 3D or Audio, then the modules are primarily listed by their sub-category and then by their alphabetical order.
Module Auto-Naming
When a module is added to the Flow Editor, it is automatically given the same name as its type. When there is already a node with the same name, then the module's name is incremented by a number.
Here, two Copy Transformation module types have been added to the Flow. Since the name Copy Transformation was already present in the flow, the second module has automatically been named Copy Transformation 2.
It is possible to change this name in the Name field of the module. The Type of the module is also visible:
Changing Module Type
To change an already added module's type, right-click on the module and select the Change Module Type... option. This method will keep the connections if possible:
Module Execution
Optimization of your project's hardware load can greatly affect what is possible to achieve. This is especially true in live productions.
Such optimization is when the Flow Editor is not executing modules that are not in use. This is done automatically by Aximmetry and most of the time doesn't affect the project.
There are some cases however when it can lead to confusion, so it will be discussed in detail in this paragraph.
A module is not in use when the module's output pins are not connected to anything that ends up with an output. In such cases, the module won't be executed. The output can be several things, like video outputs, preview panels, recorder modules, or even the peeker which happens when you press down CTRL while your mouse cursor hovers over a connection.
Execution Indicator of the Peeker
A red line appears on the top of the peeker's window if the module is not being executed:
When peeking at a module that is being executed, no red line is shown.
Below the Video Player module is being executed by being connected to an active video output.
When peeking at a connection between two modules, the execution indicator shows that the source module is not being executed. And the execution indicator won't appear when only the target module is not executed.
Input pins of modules that are not connected to any other node never show the execution indicator.
Example of Preview Panel Executing a Module
In this example, a Video Player module is not being executed or played while it is not connected to an output. This is also visible from the Video Player's position, besides the execution indicator of the peeker.
While the Video Player module is connected to an output the video plays and this fact is visible from the position output pin as its position value increases all along.
While the Video Player module is not connected to an output the video doesn't play and its position is reset to 0. This is visible each time the mouse peeks at the position of the video, it will show that the position starts counting from 0, as the Video Player started playing due to the mouse peek started rendering the position pin's value:
Even if a video is exposed to the right, it doesn't mean that it is connected to an active output.
Here, when the Preview 1 panel's video output index changed to "-" from "1", the Video Player module stops being executed:
The above example is only true if there is no output for that video index elsewhere.
For example, if there is already an output for that video index in the Video output devices, then the Video Player module will be executed even when no preview panel shows that video index.
Force Execution
Some modules have Force All or Force Both pins. If these pins are turned on then the nodes connected to the module are executed even if they are not being selected or used.
IMPORTANT: Use force execution cautiously, as it will cause all connected modules to execute. This can significantly impact system performance if not managed carefully.
Switch Video Mini has such a pin. In the example below you will see how this turns on and off the Delayer module:
When Force All is turned Off, then the Delayer module is not executed while the Switch Video's selected video is the first one. So when the Switch Video selects the second video, then there will be no picture for the period of the delay.
When Force All is turned On, then the Delayer module is executed even when the selected video is the first one. So when the Switch Video selects the second video, then there will be a delayed video right after the switch. As the Delayer module was working all the time and saving the video's frames for the delay.
There is a special module called Force Execution. When the Force Execution module is connected to a module, then that module will be executed even if it is not being used. Like in this example the video will be played even if there is no video index defined for preview and for video output:
In some cases, even the execution order of the modules can matter. In these cases, the Force Execution module with the highest Priority pin value will be executed first.
Show Active Routes
Show Active Routes can be used to easily identify modules that are being executed needlessly.
NOTE: Do not turn on this option during production, as it can impact performance despite only being updated every 0.5 seconds. Show Active Routes should only be used for debugging purposes.
To enable it, right-click on an empty space in the Flow Editor and select Show Active Routes:
Show Active Routes shows which nodes, modules, connections, and pins are being executed. Those not being executed will be grayed out.
For example, when changing the If Video module's If pin from On to Off, the corresponding Then and Else pins get grayed out. Additionally, the connection lines to these pins and any subsequent modules will also be grayed out, as none of them will be executed:
If a subsequent module is connected to an active output, that module will not be grayed out as it will still be executed.
For instance, if Image 2 is exposed to an active output (Out 2), the module is executed and hence not grayed out:
Even if a pin is not connected to anything, it will be grayed out if the module is not using it.
For example, in the If Video module below, the If logical pin is not grayed out as it is used to determine which video pin to use, while the Else video pin is grayed out since the If logical pin has determined that the module uses the Then video pin:
In very rare cases, it might be helpful to know which pin the execution logic reached first within a module. Thus, the output pin that triggered the module's execution is highlighted by a gray background.
For example, in the Image module, the Out pin was first used and the Metadata pin was used after it:
Loops
Show Active Routes also detect loops in the flow editor.
If there are any loops when the Show Active Routes is turned on, messages will indicate the exact locations of these loops:
The loop is also highlighted in the Flow Editor. An orange outline indicates where the loops are closed as the execution chain reaches a module that has already been executed in the current frame. Therefore, modules and their data, which are highlighted by a red outline, were executed in the previous frame.
For instance, in the case below, the Adjuster module's Brightness pin will receive values calculated in the previous frame. This is not always problematic, but it can cause serious issues in some cases:
In the above example, the correct logic would be to use the Measurer module on the video before it gets processed by the Adjuster, as the Adjuster will alter the video’s Luminance if the Brightness pin is changed:
Find Module
The Find Module feature allows you to search within a project. This can be especially useful in large compounds, such as the Camera compounds:
Pressing the ESC key closes the search. You can also access the Find Module option using the common shortcut CTRL + F.
Additionally, there is a Find Module Globally option, which searches through all compounds that are not locked. For more information on (locked) compounds, refer to the Compound documentation.
Pressing the TAB key switches between the different search modes: Name, Index, Type, and File.
NOTE: Since you can change any node's name, you can use the type search to find all instances of a particular module type.