Search
Start typing to search...

Additional Control with Blueprints

Author:

Introduction

In this document, we will describe how to implement controls over Unreal Engine by sending data from Aximmetry DE. Additionally, we will cover how to transmit video content from Unreal Engine back to Aximmetry DE.
These capabilities are particularly useful for users looking to gain finer manipulation over their scenes in Unreal Engine, such as moving objects, adjusting light intensities, starting animations, and managing models or textures from Aximmetry DE.

Level Blueprint

All operations mentioned in this document will be conducted within the Unreal Editor's Level Blueprint. The Level Blueprint is a specialized type of blueprint, functioning as a global event graph for an entire level.

To access the Level Blueprint, select the Blueprints icon within the editor and choose Open Level Blueprint:

Aximmetry Blueprint Nodes

Unreal Engine for Aximmetry includes specialized blueprint nodes capable of receiving data from Aximmetry DE.

To add these nodes within a blueprint, perform a right-click in the empty space of the Event Graph. Then, look for the Aximmetry category in the node list to find all available Aximmetry blueprint nodes:

These nodes are designed to handle distinct data types, including Color, Integer, Logical, Scalar, Text, Transformation, Trigger, Vector, and Video. For the Video data type, it's also possible to send video content from Unreal to Aximmetry.

After updating the pin list by clicking the red chain link button on the Unreal module in Aximmetry, the blueprint nodes will appear as pins:

In Live Sync Mode, the chain link button appears automatically when the Play button is pressed in the Unreal Editor. However, in cooked mode, the project must be cooked for the chain link button to appear.

Typically, an Aximmetry blueprint node includes the following pins:

  • Name: Sets the pin's name within Aximmetry's Unreal module. Providing a name is mandatory.
  • Order Index: Determines the pin's listing order within Aximmetry's Unreal module. Higher Order Index numbers result in lower pin positioning, except for 0 indexed pins, which are placed at the very end.
  • Default Value: Establishes the pin's default value within Aximmetry's Unreal module, if the pin is not connected.
  • Return Value: The value that is received from Aximmetry.

The Name, Order Index, and Default Value pins are static. Meaning, that they are unaffected by connections to these pins in the blueprint.

NOTE: If multiple objects within a scene have the same blueprint (not Level Blueprint), they can only receive identical data from the Aximmetry node. Because the static nature of the node's name prevents dynamic distinction between objects. To facilitate object-specific data handling, it's necessary to create separate blueprints for each object or implement a method for parsing the data uniquely for each object.

NOTE: All the Aximmetry blueprint nodes are built into the Unreal Engine for Aximmetry.They are not available in the vanilla version of the Unreal Engine.

Examples

Get Aximmetry Logical

The Logical pin data type functions as a binary ON/OFF switch within Aximmetry, enabling straightforward toggling of elements in Unreal.

For example, to hide an actor object:
First, add an object to the Level Blueprint by dragging and dropping it from the outliner:

NOTE: Only Level Blueprints allow referencing objects from the Outliner due to their direct connection to the scene (level).

Next, add and connect the Set Actor Hidden In Game, Get Aximmetry Logical, and Event Tick nodes:

NOTE: Event-type nodes have a special execution pin, which triggers the activation of a blueprint node. In the case of the Event Tick node, the execution pin triggers execution at every frame. The execution pin mechanism is unique to Unreal. In contrast, Aximmetry's Flow Editor adopts a more automatic system for module execution.

In Aximmetry, the red chain link button should appear and after clicking on it, the logical pin (Hide Floor) will be added to the Unreal module. The pin's state can be toggled on and off from within the Pin Values panel if the Unreal module is selected:

Get Aximmetry Transformation

The Transformation pin data type represents the spatial combination of position, rotation, and scale.
This is particularly useful for moving objects within a scene in Aximmetry DE, without the need to frequently alternate between Unreal Engine and Aximmetry DE. Additionally, it facilitates dynamic object movements, for example by using animations in Aximmetry.
In this section, you will learn how to control the Transformation of an actor object from within Aximmetry DE.

Initially, ensure the object is set to Movable; otherwise, it cannot be relocated after the scene starts running. This option is located in the Transform section within the Details panel:

Next, add the object to the blueprint. Similar to the previous section, drag and drop objects from the Outliner into the Level Blueprint. In our example, a Cube-like object is used for demonstration.

Then add and connect the Set Actor Transform, Get Aximmetry Transformation, and Event Tick nodes:

NOTE: If the object is not an actor, an alternative node to Set Actor Transform may be required.

Once the Transformation appears in Aximmetry after clicking the chain link button .
There are several methods to manipulate the object's transformation. Here, we outline three common methods:

  • Pin Value Edit:
    To accurately set static position values, edit the created transformation pin of the Unreal module on the Pin Values panel:

  • Direct Value Control: 
    For dynamic control over individual transformation values, use the Transformation Compose and Vector Merge modules:


  • Using Sequencer for Animation:
    To create animations that alter the object's transformation over time, pair the Sequencer module with a Sequence Node module:


  • Using Scene Node module:
    A practical way to control the transformation is to add a Scene Node module and connect its World Transf pin (initially concealed — reveal it by clicking the expand list button at the upper right corner) to the Unreal module's pin which was created in the Unreal Blueprint:

    Activate Edit mode by choosing a preview window in the Edit / Edit Scene On menu or by using the quick button on the menu bar:

    NOTE: Make sure the Preview pin of the camera compound is connected to the preview's output channel.
    Select the Scene Node module, this enables transformation adjustments for the object directly on the preview screen:

    For detailed information on the Edit Scene On feature visit the Transformation Gizmo and Edit Scene Settings documentation.

NOTE: To convert positions or transformations from Unreal to Aximmetry's coordinate system, use the [Common_Studio]:Compounds\Tools\Unreal_Transformation.xcomp compound.

Get Aximmetry Trigger

The Trigger pin data type functions as a start or stop signal that can be used to start/stop various animations or timing functions.

Add and connect the Get Aximmetry Trigger, Event BeginPlay, Bind Event to Trigger, and Custom Event nodes.
The Bind Event to Trigger node is only searchable if the Context Sensitive search is turned off.
The Event BeginPlay node must be used instead of the Event Tick node from the previous examples.
Connect the desired blueprint logic to the CustomEvent's execution pin. For instance, in our example, we linked the activation of a particle system to the event:

In Aximmetry, utilizing the trigger pin can be achieved through various methods. One practical approach involves placing the trigger on a Control Board as a button. This can be achieved by using a Control Board and a Pin Collector special compound:

This setup allows convenient access to trigger the particle system within your production:

NOTE: It is possible to expose the other types of Get Aximmetry nodes to the Control Board.

Get Aximmetry Video

The Video pin data type can function as a video frame or an image (static texture).

The following example applies a video received from Aximmetry DE onto a plane in the Unreal scene.
This technique is often used to create virtual screens (like televisions) within the scene.

Creating the Material

This material will serve as a base for the dynamic material on the plane. For more detailed information on materials, refer to the Unreal Engine documentation).

To create a new material, right-click in the Content Browser, and select Create Basic Asset / Material:

We have labeled ours 'VirtualDisplay'.

Open this material by double-clicking on it in the Content Browser.

In the Details panel on the left of the new window, change the Shading Model of the material to Unlit:

NOTE: This adjustment is done to mimic a real-world light-emitting screen.

Add a Texture / TextureSampleParameter2D node from the right-click menu of the Material Graph. You may name this parameter as you wish, but it is crucial to use the exact name in the Blueprint we will create later. We have named ours DisplayTexture:

Connect the RGB output of the texture parameter to the Emissive Color input of the material:

Save the material.

NOTE: While this material can be further customized to achieve various effects, such discussions are beyond the scope of this document.

Applying the Material to an Object

Next, apply the material to an object intended for displaying the video. This can be done, for example, by dragging and dropping the material from the Content Browser onto the actor's Materials field. In our case, we utilized a simple plane actor object.

Set Up a Blueprint

We now proceed to integrate the object and video from Aximmetry into the Level Blueprint.

Create a reference to your target object by dragging it into the Level Blueprint from the Outliner, like in this previous section.

Add and connect the Event BeginPlay, Create Dynamic Material Instance, Set Material, Event Tick, Get Aximmetry Video, and Set Texture Parameter Value nodes.
The Set Texture Parameter Value node is only searchable if the Context Sensitive search is turned off.
Ensure you select the Set Material node that targets the Primitive Component, not the Volumetric one. It is distinguished by its indentation, found under Rendering / Material.

Set the following node pins:

  • Create Dynamic Material Instance - Parent pin: Select the material created in the first step.
  • Get Aximmetry Video - Name pin: This will be the video input pin's name in Aximmetry.
  • Set Texture Parameter Value - Parameter Name pin: This must exactly match the name of the TextureSampleParameter2D parameter of the material you created in the first step.

NOTE: The Set Material node requires a static mesh component for the Target pin. When connecting an actor directly, Unreal automatically generates the necessary static mesh component conversion node:

Within Aximmetry

Utilizing the Video pin in Aximmetry can be achieved through various methods, including creating a Video Button on a Control Board.
A relevant compound with such buttons implemented is found at: [Common_Studio]:Compounds\Overlays\Overlays_Vid_Ins_Logo_Crawl_Green.xcomp

Using the Video buttons enables easy management and switching between different videos:

Gamma Correction Option

The Get Aximmetry Video blueprint node features an S RGB pin, which dictates whether the received video is treated as sRGB or linear.

S RGB should be enabled for textures containing color information (camera footage etc. that will be rendered into the scene) and disabled for textures used in shader numerical calculations  (e.g., normal maps, masks). This option impacts only 8-bit textures, as Unreal considers all non-8-bit and floating-point textures to be linear.

Video from Unreal

Currently, passing data from Unreal to Aximmetry is limited to video outputs but will be expanded in the future to cover other data types.

The Set Aximmetry Video blueprint node enables sending a texture to Aximmetry. It is possible to use multiple Set Aximmetry Video outputs by assigning distinct names to each. 

The Set Aximmetry Video itself does not perform any gamma correction. The generated output depends on the settings and pixel format of the connected texture or render target. The default output is always treated as sRGB regardless of pixel format.

Without Set Aximmetry Video nodes in the scene, the Unreal Project module's default output mirrors the scene as it would be displayed on the screen by Unreal, functioning similarly to an invisible Set Aximmetry Video node labeled “out”. This default output's format can be configured in Edit / Project Settings - Rendering / Default Settings / Frame Buffer Pixel Format:

Context Sensitive

By default, not every blueprint node is displayed when attempting to add a new blueprint node.
Should you find that a particular blueprint node is not listed, turning off the Context Sensitive search option will expose all available blueprint nodes:

Article content

Loading
Close
Loading spinner icon
1/10