|Please note that this is a BETA version of the document. All information presented is correct but we are working on improving the details.|
The Flow Editor's node graph is saved into files called Compound. These files have the .xcomp filename extension.
A unique feature of compounds is that they can be opened and saved within other compounds.
Aximmetry comes with libraries that contain many compounds.
These compounds can be used to easily set up complex projects by adding them to your compound. Also, these compounds can be opened and edited to fit your needs.
Before starting to build your own compound, it is recommended to check these libraries to see if they have relevant compounds.
Such libraries of compounds are:
Common\Compounds - contains over 300 general compounds, these compounds are usually not much more complex than modules.
Common_Studio\Compounds - contains complex compounds for studio and virtual reality productions.
Tutorials\ - contains various example projects for learning purposes.
Studio\ - contains example virtual studios.
Note, if you didn't install these libraries through Aximmetry's installation process, you can still install them using: https://my.aximmetry.com/User/MyPackages
Once the libraries are installed, you need to add them through Preferences>General>Project root folders.
To create a new compound within a compound use the right mouse click on the Flow Editor and select New Simple Compound:
It is also possible to create a compound from existing modules using the Group Selection options:
Once you created a new compound, you can add new input and output pins to the compound by exposing the pins inside the compound:
The pins on the compound's node function like the pins on the module nodes. They can be connected with other pins on nodes or edited in the Pin Values panel.
Compounds can contain compounds that are saved into a separate file. Aximmetry calls these compounds linked compounds.
Creating Linked Compounds
To create a linked compound from a simple compound use the Save Compound And Link option:
Save Compound And Link... will create a new compound file (.xcomp).
Or it is possible to add a compound as a linked compound to an opened compound. For example by drag and dropping it:
Once a linked compound is created, it will be in a locked mode. This is visible from the chain sign:
While in locked mode, the linked compound can only be edited in its original file (import source).
Any changes made in the original file will automatically apply to the linked compound.
To enter a linked compound and edit it, the linked compound must be set to Edit Compound In-Place:
Once a linked compound has been selected for Edit In-Place, the chain sign changes into an edit sign:
Linked compound nodes have round edges like modules, while compound nodes that you can enter (simple compound and edited linked compound) have hard edges:
Unlink Or Save Edited Compound
A linked compound under Edit In-Place can be changed into a simple compound using the Unlink Compound option. Once the compound is unlinked, it is no longer saved into a separate file.
Changes in the linked compound under Edit In-Place can be saved to the original file using the Save In-Place Modifications option.
While Revert In-Place Modifications option will return the linked compound to its locked form and the compound will lose all edits.
Working with compounds from Aximmetry library
Never use Save In-Place Modifications option on a compound that is located inside Aximmetry's library!
If you do, Aximmetry will overwrite your saved compound the next time you install or update Aximmetry.
Instead, use Unlink Compound and save the compound outside the Aximmetry's library folder:
And then Save Compound and Link... :
Exposing means connecting out pins to the left or the right side of the Flow Editor.
In the case of a compound within a compound, such exposed values won't appear on the dashboard or as an output.
Instead, they appear as new pins of the compound's node from outside of the compound:
Inside of the compound:
Such exposed connection appears with a dotted line. The dotted exposed line represents that the connection might not be connected to any module outside of the compound. And it also helps to easily navigate inside your compounds.
An incoming exposed connection can not be multiplied, for that, it is recommended to use a copy module:
Reorder Exposed Pins
The Reorder Pins window allows fast reordering and organization of the pins of a compound. To open it, right-click on the left or the right side of the Flow Editor:
Multiple pins can be selected in the Reorder Pins menu. They can be moved together. Or even renamed together:
A compound can have any amount of compounds within a compound hierarchy.
The hierarchy is visible at the top of the Flow Editor.
When clicking on a name in the hierarchy, the Flow Editor will open that parent compound:
When clicking on the arrow ▶ after a compound's name in the hierarchy, a menu is displayed with every compound in that level of the hierarchy. Locked compounds are not listed in this menu:
Use the leave compound icon to go to the parent compound.
And use the back, and forward icons to move between previously opened compounds, similar to history navigation:
Array Compounds will execute special array modules as many times as is the Array Compound's item size.
This enables processing data with many data points in one frame using only one compound and a few modules.
Compounds can be turned into Array Compounds using the Setup Array... option:
Example Array Add
Special array modules have their names start with "Array". One such module is Array Add.
In this example, the In pin has the value 1, this is added to gather 5 times:
The array compound from outside with the return value of 5, because 1+1+1+1+1 = 5:
When adding another Array Add module, it will add values after the first Array Add module is executed 5 times:
So the result is 25. Because the first Array Add has the result 5 and this is repeated 5 times in Array Add 2 (5+5+5+5+5 = 25):
Example Array Index
Array index will return the current id of the item within the array. For example, if the array size is 5, then it will return 1,2,3,4, and 5 within the compound.
In this example below, the Array Index returns 1,2,3,4, and 5, which then are added together by the Array Add module:
The array compound will return 1+2+3+4+5 = 15:
Example Vector Concat
In the following example, the A pin has the value of 10. To this 10 value, the Array Index's value is added 5 times. Then the Array Vector Concat module puts these 5 values into one vector:
This will result in a vector with 5 items, where each item is 10+1, 10+2, 10+3, 10+4, and 10+5 = 11,12,13,14,15:
When peeking on pins within an Array Compound, it shows the pin values in the first array item (where the Array Index is 1). Except when you peek after a special array module like Array Add.
Compounds can have special pin names, these names are usually used when adding the compound to the Control Board. These special pin names also work with the Pin Collector and are documented in the Pin Collector documentation.
But there is a very special pin name that does not work with Pin Collectors, this is the selector pin.
Selector pins make it possible to select between nodes within the compound and edit their input pin values.
For example, in this compound, we can select between the 3 nodes (Copy Scalar, Keyer_CleanPlateGenerator, and Pin Collector) using the Name pin:
The compound contains the 3 nodes that we can select from:
For all this to work, the Selector pin must be named the following way.
First, it has to start with $SelSub. Then the name of the pin. And then the names of the nodes inside the compound. In this example, the pin name is: $SelSub,Name,Copy Scalar,Keyer_CleanPlateGenerator,Pin Collector
Famously, the same system is used when selecting between keyers in the camera compound's control board.