# Live Link Content:  Active Puck Static Meshes

## Overview

OptiTrack's plugin for Unreal Engine includes an array of content options. the 5.3 plugin includes the following new content:

* ActivePuckMesh
* CinePuckMesh
* MotiveAvatarMesh
* MotiveSkeletalMesh
* MotiveSkeleton

This page covers the Active Puck and CinePuck static meshes, using the Active Puck as the example.&#x20;

<div><figure><img src="/files/zwehtEJRjVscDlUbuFvk" alt=""><figcaption><p>Scaled-to-fit Active Puck.</p></figcaption></figure> <figure><img src="/files/3gQnFZvFB5LhS0iufnRs" alt=""><figcaption><p>Scaled-to-fit CinePuck.</p></figcaption></figure></div>

The Active Puck Mesh provides a couple of different use cases:

1. Data validation. Tracking an active puck in the physical volume using the OptiTrack Live Link display provides a point of reference that allows you to validate rotation, placements, and even the scale of your volume.
2. Lens calibration device. Because the static mesh is the same scale as a real puck, its markers can be used for calibration purposes. Please see the section [Create a Lens Calibration Device](#create-a-lens-calibration-device), below, for more details.&#x20;

{% hint style="info" %}
We used the standard *InCameraVFX* template in Unreal Engine for our sample project. The template includes all the necessary macros and assets needed for virtual production.&#x20;

This template is located under *Film / Video & Live Events* in the Unreal Project Browser. &#x20;
{% endhint %}

## Add a Puck to an Unreal Engine Project

This section walks the user through adding the puck static mesh to a project and aligning it with the puck streaming from Motive.&#x20;

### Show Plugin Content

* From the Content Browser window, click the <img src="/files/tuFgvqc0OsdTmXR71TVg" alt="" data-size="original"> button.
* Check the boxes for *Show Engine Content* and *Show Plugin Content*.

<figure><img src="/files/tpf5Y2ODegW9iHBuTYNb" alt="" width="158"><figcaption><p>Content Browser Settings in UE.</p></figcaption></figure>

* The Content Browser’s Navigation pane will now show the Engine Content, where the Plugins folder resides.
* Open the OptiTrack—Live Link Content folder.

<figure><img src="/files/uy6bUI3V9qajU4s0LYeP" alt="" width="563"><figcaption><p>OptiTrack's Live Link Content for Unreal Engine.</p></figcaption></figure>

* Open the *ActivePuckMesh* folder. If using a CinePuck, open the *CinePuckMesh* folder .

### Create Labeled Markers

The Live Link asset automatically aligns with its source in Motive. The *Markers* settings display a visual map of the marker locations. This map is helpful for confirming the alignment of a static mesh to a streamed asset.&#x20;

* In the Live Link pane, select *OptiTrack*.
* In the *Markers* section of the OptiTrack Properties pane, set *Create Labeled Markers* to true.

{% hint style="info" %}
To open the Live Link pane, select *Virtual Production → Live Link* from the *Window* menu.
{% endhint %}

<figure><img src="/files/lNd2FppjOSqWt0M7Freh" alt="" width="500"><figcaption><p>Live Link Pane in Unreal Engine: Create Labeled Markers. </p></figcaption></figure>

<figure><img src="/files/7cI1pZ2VMayI9MwJb8Rb" alt="" width="206"><figcaption><p>Labeled Live Link Markers in UE.</p></figcaption></figure>

### Create Blueprint Class

* Right click in the Content Browser to open the menu.
* Under *Create Basic Asset*, select *Blueprint Class*.

<figure><img src="/files/t1fIMyGXOQd3knuYnWG4" alt="" width="258"><figcaption><p>Create Blueprint Class from Content Browser menu in UE.</p></figcaption></figure>

* Select Actor as the Parent Class.
* Double-click the name to give it a more meaningful name. In our example, we renamed the component *BP\_CalibratorPuck.* We will use this puck later to create a [Lens Calibration Device](#create-a-lens-calibration-device).&#x20;

<figure><img src="/files/8hkYcYmjrTMyFYPsbWsu" alt="" width="463"><figcaption><p>Unreal Engine: Pick Parent Class for a new blueprint.</p></figcaption></figure>

### Add the Static Mesh

* Open the newly created Blueprint linked to the puck streaming from Motive. &#x20;
* This will open a new tab. Click the <img src="/files/STq5sup3dEsEOGOcAvJ5" alt="" data-size="line"> *Add* button in the top left of the Component pane and select *Static Mesh* from the list of options.

<figure><img src="/files/O9HwMOwBRR5HF17W3WGw" alt="" width="191"><figcaption><p>Add components menu in UE.</p></figcaption></figure>

* Double-click the newly created static mesh in the list of components to rename it. In our example, we called it *ActivePuck*.
* Select the static mesh in the Components pane to display its properties in the Details pane.&#x20;
* Click the Static Mesh property (set to None by default) to select the asset to use.&#x20;
* Select *SM\_ActivePuck\_Opti* for the Active Puck, or *SM\_CinePuck\_Opti* if using a CinePuck.

<figure><img src="/files/RCDBsF9jtbcBrfTO5WN8" alt="" width="409"><figcaption><p>Details for a Static Mesh component in UE.</p></figcaption></figure>

The Active Puck static mesh will now appear in the scene.&#x20;

## Create a Lens Calibration Device&#x20;

An Active Puck can serve as a lens calibration device in Unreal Engine by aligning calibration points to the markers at each of the four corners. &#x20;

For accuracy and precision, use the *Top* view in the UE Viewport.&#x20;

<figure><img src="/files/cfVHqKNLhZpFY2RopEb3" alt=""><figcaption><p>Change the Viewport angle in UE.</p></figcaption></figure>

### Add Calibration Points

* Select the Active Puck in the Viewport and click the <img src="/files/2D7t1XgqRn1CsgZ4dSFr" alt="" data-size="line"> Add button on the Components tab.&#x20;
* Search for and select *Calibration Point* from the list of options.&#x20;

<figure><img src="/files/wcXiFYoh4efy91PM884k" alt=""><figcaption><p>Top down view of the Active Puck Static Mesh in Unreal Engine. </p></figcaption></figure>

* Click to rename the Calibration point. We recommend using names that match the point's location, such as top left, bottom right, etc.&#x20;
* Drag the newly created point to align it with the center of the corner marker.

<figure><img src="/files/jhc3enKImANTm8KCDc1m" alt="" width="300"><figcaption><p>Adding a Calibration Point to the Active Puck Static Mesh in UE.</p></figcaption></figure>

* Use **Ctrl + D** to *Duplicate* the point to make the next one.&#x20;
* Rename the second point and drag it to the appropriate location, aligning it with the previously placed point on either the X or Y axis.&#x20;
* Repeat these last two steps until each of the four corners has a Calibration Point at its center.
* Select the ActivePuck in the list of components. The four calibration points should be nested underneath.&#x20;
* Click the *Compile* button on the main toolbar, then *Save* and Close the tab for the Blueprint.

<figure><img src="/files/MNvP9XAc2HGQ7JeIrZN1" alt="" width="323"><figcaption><p>Compile changes to the Static Mesh in UE.</p></figcaption></figure>

### Link the Static Mesh to the Live Link Asset

* In the project, click and drag the Blueprint created in the prior steps into the project.&#x20;
* In the Outliner pane, drag the Blueprint under *OptiTrackLiveLinkDisplay.*
* &#x20;In the Transform Section of the Details pane, click the <img src="/files/sO29MYRsYSOUSWQJodtY" alt="" data-size="line"> button to the right of the Location settings to reset all location values to zero.&#x20;

<figure><img src="/files/LOeBHyeHnbOo5InCuMnt" alt=""><figcaption></figcaption></figure>

* Click the <img src="/files/rzksAKIzkGuZmsRUEmH2" alt="" data-size="line"> Add button in the Details pane. Search for and select *Live Link Controller*.&#x20;
* Under Subject Representation, click and select *ActivePuck* from the list of available assets (below, left).
* This will link the static mesh to the puck. The Labeled Markers setting shows the device properly aligned (below, right).

{% hint style="info" %}
Use the translate tool to reorient the static mesh if the OptiTrack brand and the status lights on the mesh do not align with those on the physical puck.&#x20;
{% endhint %}

* Having confirmed the alignment is correct, you can turn off the [Labeled Marker](#create-labeled-markers) display. The Live Link display settings can also be closed.&#x20;
* The puck is now available as a tracked calibrator tool that can be used in conjunction with a lens file in Unreal Engine for lens calibration.

<div><figure><img src="/files/eIKGzxOAlsA7lRxybZtS" alt="" width="506"><figcaption><p>Select a Subject Representation for the <br><em>LiveLinkComponentController</em> in UE.</p></figcaption></figure> <figure><img src="/files/Sq3qKD0fyeT4309LjOB4" alt="" width="404"><figcaption><p>A fully aligned Active Puck Static Mesh in UE.</p></figcaption></figure></div>

### Create a Lens File

* Right click in the  Content Browser in the folder where you'd like to save the lens file.
* Search for and select Lens File from the list of Content types and give the file an appropriate name, such as *35mm\_Lens*.&#x20;
* Open the Lens File.

<figure><img src="/files/xb6hmRU3fwQlfCRofHVr" alt=""><figcaption><p>Lens File settings in Unreal Engine.</p></figcaption></figure>

* Click *Lens Distortion* on the *Calibration Steps* tab.
* In the *Lens Distortion Algo* setting on the right, select *Lens Distortion Points Method*.&#x20;
* The *Calibrator* setting will default to the calibrator puck.&#x20;
* Select the current calibrator point in the camera viewport to complete the alignment.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.optitrack.com/plugins/optitrack-unreal-engine-plugin/unreal-engine-optitrack-live-link-plugin/live-link-content-active-puck-static-meshes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
