Skip to content

License requirement

The functionality described requires a MANUS Bodypack or a MANUS license dongle containing one of these licenses to be connected:
Core Pro Core XR Core Xsens Pro Core Qualisys Pro Core OptiTrack Pro Demo

Getting Started

This guide will help you get started using the Unreal plugin.

Note

These instructions can be used with Unreal versions 4.27, 5.1, 5.0, 5.2, and 5.3.

Installing the plugin

Start by logging in to our Download Center. If you don't have an account, please create one.

alt text

To add the plugin, you need to download the Unreal LiveLink Plugin for MANUS Core 2 and add it to the Plugin folder in Unreal.

alt text

There is a specific plugin provided for each version of Unreal Engine.

alt text

To install the plugin Engine wide

  1. Navigate to your Unreal Engine installation folder. Generally: C:\Program Files\Epic Games\UE_5.X\Engine\Plugins\Marketplace.
  2. Add the plugin folder named manus for your specific version to the Marketplace folder.

Example with Unreal 5.3: alt text

To install the plugin project wide

  1. Navigate to your Unreal Engine project folder.
  2. Add the manus plugin folder to the Plugins folder in the root of the project.
    • If there is no Plugins folder, please create one.

Example with Unreal project: alt text

Enable the plugin in Unreal Engine

To enable the plugin in Unreal Engine, follow these steps:

  1. Launch your project in Unreal Engine.
  2. Go to Edit > Plugins.
  3. Find the plugin that you added and make sure the checkbox is checked.
    alt text

Warning

When enabling the plugin, Unreal Engine will ask you to restart the editor. Make sure to save your work before doing so.

Starting Unreal with the Plugin

alt text

By connecting to MANUS Core, you can access runtime data from your gloves and more. Connect to MANUS Core by clicking the "Connect to MANUS Core" button in the top bar.

  • If you have multiple MANUS Core instances, you can select the desired instance from the drop-down menu. alt text

  • Once connected, the button icon will turn green, indicating a successful connection.
    alt text

  • You can disconnect from the current host and connect to another host by clicking the button again and selecting a different host from the drop-down menu.
    alt text

Some functions may be unavailable when disconnected from MANUS Core.
alt text

Refresh host list

When you want to refresh the detected MANUS Cores in the host selection dropdown, you can press this button.

alt text

It will scan the network for any MANUS Core active at that time and update it in the host selection list.

Setting up a model to animate

Import FBX model

Import an already skinned and rigged FBX character model.

alt text

After importing your model, you will have something like the following in your content directory:

alt text

Now, right click the Skeletal Mesh and create a new animation blueprint

alt text

Give the animation blueprint a relevant name and double click to open it. You will be presented with a screen like this, but for your specific model.

alt text

In the output post widget drag the Result to the left and select the Manus Live Link Pose.

alt text

From here select the Manus Live Link Pose widget and go to the properties on the right side.

There, select the MANUS skeleton dropdown and create a new asset Manus Skeleton and give it a relevant name. In this example ManusBody is used.

alt text

Compile and save the blueprint.

alt text

Once that is done, make sure that you are connected to MANUS Core. Double click your MANUS skeleton.

alt text

You will be presented with something like the following screen, in this screen set the skeleton type to the type of animation you want from MANUS Core. In this case just a hand.

alt text

Also set the Target Skeleton Type, the default is UserIndexData. This means the user index is used to determine which user is being animated. The value is set further down.

Note

The user index can be left to 0 in most cases. But if you have multiple users, make sure this matches what you see in the MANUS Core Dashboard.

In the MANUS Core Dashboard user list, the top user will be index 0, and the next in the user list will be at index 1 and so forth. If the incorrect index is used, then wrong or no data will be received.

alt text

Now the mesh needs to be selected:

alt text

Select the mesh you imported, and the nodes will be automatically generated. All that is needed now is to define the chains. You can set the chains up manually, but that can be very labor intensive. For this there are 2 more options. Either using auto allocation, in such case MANUS Core tries to figure out the chains from the hierarchy and bone names. However if it fails or is incorrect, it's recommended to manually set it up.

To start this process click, Send to Manus DevTool.

alt text

This will open the DevTools, you will be presented with a screen like the one below:

alt text

For this example, the chains will be auto allocated, and we can immediately export it back to Unreal. Please refer to the detailed DevTools article for more information.

After allocation, press the Send to Plugin button, which will send the model back to the Unreal plugin. Now go back to the MANUS skeleton property window on the Unreal side.

Once this is done and you enter play mode, you can see the animation being streamed from your glove directly into Unreal:

In this example only the left hand was connected.

alt text

Import Metahuman Model

A metahuman model can be imported through Quixel Bridge. For more in-depth information please visit Epic's documentation on this.

Manus component

Once the model has been successfully imported go to the metahuman blueprint BP_{MetaHumanName}, go to Components > Add Component > Manus component. Here, re-parent the Face (+eyelashes, beard, hair, eyebrows, etc), Torso, Legs and Feet to the Manus component. Make sure the Manus component is attached to the root, and everything under Body component is parented to the Manus component.

Manus component should replace Body component. (Do not delete Body component yet.)

Go to Components > Add Component > Live Link and attach this to the root.

alt text

In the Manus component, change the Skeletal Mesh to the same mesh the Body component used. Also create a new Manus Skeleton by going to Details > Manus > Manus Skeleton. Put the Manus Skeleton next to the mesh that Body used. In this case, we are naming the Manus Skeleton the same as the Skeletal Mesh Asset (e.g. f_med_unw_body (_ManusSkeleton)).

Now you can delete the Body component.

Compiling

Once you click Compile, you will get errors, because the Body component is missing. Go through the list of errors in the Compiler Results and drag and drop the Manus component into the Event graph, and reconnect the missing links. When this is done, you will still receive an error message on an event. To solve this, go to the My Blueprint tab (left bottom corner in this case) > Component > Manus component (with a blue line next to it).

Click on the Manus component, and (in this case) on the right side, you will see a list of Events. Click on On Anim Initialized and replace On Anim Initialized (Body) with On AnimInitialized (Manus).

alt text

Click Compile again.

Manus Skeleton Setup

Make sure Unreal is connected with MANUS Core.

Open the Manus Skeleton.

Set Manus | Skeleton Type > Skeleton Type to Hand.

Set Skeletal Mesh to the same mesh you have changed in the previous step (in this case we are using f_tal_nrw_body).

Now you can either send the skeletal mesh to the Manus DevTool and auto allocate the chains there, or Import from mskl file.

In this case, we are going to Auto Allocate the chains in the DevTool, and then hit Send to Plugin again.

Make sure the Manus| Map Skeleton Chains > Skeleton Chain IDs > Left - Hand > Settings > Hand > Hand Motion is set to IMU.

Click save and hit Compile in the Blueprint (BP).

Anim Blueprint Setup

In the Content Browser right-click on the Skeletal mesh (in this case f_tal_nrw_body) and navigate to Create > Anim BP.

This will create an Anim Blueprint. Note that it will do so in a different folder.

alt text

Give it a name, and open the AnimBP.

You will now see the default MetaHuman.

In the Anim Graph, you see Out Pose. Right click in the area around it and add Manus Live Link Pose.

Attach it to the Output Pose and inside the Manus Live Link Pose node > Details > Manus Live Link > attach the Manus Skeleton we have created before.

Compile the blueprint.

If you have a running Manus Core and a glove turned on, you will see the hand moving in the viewport on the left.

alt text

Blueprints

For the details on available blueprint functions, please consult the API reference.

Connecting through blueprints

To find and connect to MANUS Core a blueprint as follows can be used:

alt text

The Find Sessions function is a crucial step in the blueprint. It triggers the plugin to search the network for any active MANUS Core hosts. This function can only be used if there is no current connection active. It may take a few seconds before it returns.

It is important to wait for the success of this function before proceeding with the rest of the blueprint. Upon success, it will return an array of addresses found. These addresses represent the MANUS Core hosts available on the network.

Blueprint making a connection

The blueprint code in UI_ManusDemoMenu > EventGraphpresentation is responsible for handling the environment setup and signaling the plugin which MANUS Core Host address to use.

alt text

Here are the main parts of the code:

  1. Environment Setup:

    • If it's a single player environment, the code directly calls the Open Level function.
    • If it's the host of a multiplayer environment, the code creates a session and then opens the level.
    • If it's a client, the code only joins the session and signals to the plugin that it is set as a client.
  2. MANUS Core Host Address:

    • After the environment setup, the code needs to specify the MANUS Core Host address to use.
    • If the environment is set as the host, the supplied address from the host selection can be input into the Set MANUSCore IP function.
    • The addresses must be found first via the Find Sessions function before they can be used.

Please note that the code follows the standard Unreal network environment setup. For more details, refer to the Unreal forums and documentation.

Alternative way of setting up a model

Here is an alternative way to set up a model in Unreal:

  1. Drag an actor into your level.

    alt text

  2. Select the actor in the sidebar and add the MANUS link to it by pressing the add button.

    A menu will appear, and you can type MANUS in the search bar.

    alt text

    alt text

    Now the MANUS link is added.

    alt text

  3. Import your model by right-clicking in the content space and selecting Import to Game.

    alt text

    Select your model from the file browser.

    Then in the next window, select Import.

    alt text

    The meshes are now loaded.

  4. Select the Manus Skeleton option in the right sidebar of the actor and open the dropdown (currently filled with none). Select Create a new asset > Manus Skeleton.

    alt text

    Create a new skeleton with your preferred name.

    alt text

  5. Right-click the skeleton and select Edit (or double-click it).

    alt text

    The following window opens. Select the Skeletal Mesh dropdown.

    alt text

    In the new menu, select your imported mesh.

    alt text

    Then select the Skeleton Type combobox and choose Hand for this example.

    alt text

  6. Press the Send to Manus DevTool button (Make sure Unreal is connected to your MANUS Core host first).

    Set up the chains of your skeleton in the DevTools and when done, send it back to the Unreal plugin.

    Once done, you will return to this screen and see the chains allocated.

    alt text

    Important: Make sure the Skeleton Target Type matches the target selected, or no/wrong animation data will be received for this skeleton. Usually setting it to UserIndexData and the Target Skeleton user index data to 0 is fine for most use cases. It will take the first user in the MANUS Core user list.

    User indexes start counting from 0 and can be verified in the MANUS Core UI. This will match the MANUS Core user list, with the top user being index 0, and the next in the user list at index 1, and so on. If the incorrect index is used, the wrong or no data will be received.

  7. Return to the main window and right-click the mesh.

    In the dropdown menu, select AnimBlueprint and create a new blueprint.

    alt text

  8. In the sidebar, under the actor, select an animation blueprint in the Anim Class.

    In the dropdown menu, select the animation blueprint that was created.

    alt text

  9. Double-click the animation blueprint that was created.

    Drag the input Output Pose into the blueprint and select Manus Live Link Pose.

    Select the Manus Live Link Pose and choose the Manus Skeleton in the right sidebar. Select the previously created skeleton.

    alt text

    alt text

  10. Don't forget to compile the blueprint.

    alt text

Your actor should now be fully ready to animate when in play mode.

Always make sure the skeleton is setup for the correct user. And of course that the MANUS Core connection is active.