Please note that this is a BETA version of the document. All information presented is correct but we are working on improving the details. |
Introduction
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 Libraries
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\Camera - contains camera compounds for studio and virtual reality productions.
Common_Studio\Compounds - contains compounds related to 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
NOTE: Once the libraries are installed, you need to add them through Preferences->General->Project root folders.
Compound
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.
Linked Compound
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:
NOTE: 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 dragging and dropping it:
Locked Compound
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).
NOTE: Any changes made in the original file will automatically apply to the linked compound.
Edited 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:
NOTE: Locked linked compound nodes are designed with round edges similar to modules, indicating they can not be edited directly. In contrast, compound nodes that allow entry, such as simple compounds and edited linked compounds, exhibit hard edges:
The compounds that can not be edited are loaded from the linked compound. Meanwhile, compounds that permit entry (identified by hard edges) are loaded from and saved into the root compound.
Unlink Or Save Edited Compound
A linked compound under Edit In-Place can be changed into a simple compound using the Unlink Compound option.
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 the 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
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 an 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:
It is possible to create drop-down lists of exposed █ Integer pin data type and also show pins of other modules or compounds, this is detailed in the Special Pin Names documentation.
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 window. They can be moved together. Or even renamed together:
Compound Navigation
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.
NOTE: 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 Compound
Array Compounds will execute special array modules as many times as 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 of Array Add
Special array modules have their names starting 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 of Array Index
The 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:
Note that 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 the Array Add.
Example of Array Vector Concat
In the following example, the A pin has a 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:
Example of Array Restriction
Array Restriction limits the modules inside a compound to be executed only once at a specific index of the array.
For example, the following Array Restriction compound will return only the third Index inside an Array.
Inside the Array Restriction compound, there is only a Copy module:
Which is connected to an Array Index module outside the Array Restriction compound.
And all of it is inside an Array compound with a size of 5.
This setup will output a value of 3. Since the Array Restriction compound will only output the values executed at the 3rd Index of the array:
This can also be demonstrated using an Array Vector Concat module. In this case, we are using an Array Size module, which gives back the Array compound's size (5). And this value (5) is restricted to the 3rd index: