# About CameraTwin

Transform your smartphone into a sophisticated virtual production camera

**CameraTwin** is democratizing the landscape of Virtual Productions by harnessing the capabilities of modern smartphones and Unreal Engine. Our system, designed with simplicity and affordability in mind, is breaking down the entry barrier to cinematic creativity, and making high-quality virtual production an intuitive process at the palm of your hands.

### How to get CameraTwin

1. Install our mobile App [here](/cameratwin/installation/installation-mobile-app)
2. Log in to our [dashboard](https://app.cameratwin.com/)
3. Download and install our plugin [here](/cameratwin/installation/installation-unreal-engine)


# Installation

How to install the CameraTwin mobile app and Unreal Engine plugin

At the core of CameraTwin's virtual production toolkit are two essential components: the mobile application and an integrated Unreal Engine plugin, which work in tandem to transform your smartphone into a dynamic virtual production camera. CameraTwin tracks the spatial location of your device and streams synchronized camera video and position data in real time to compatible receivers, such as Unreal Engine.

Make sure to go through the detailed installation guides for both the [Mobile app](/cameratwin/installation/installation-mobile-app) and the[ Unreal Engine plugin](/cameratwin/installation/installation-unreal-engine) in the following pages to get started.


# Installation - Mobile app

This page guides you through the simple steps to install the CameraTwin app on your smartphone.

## App Installation

### Android

{% embed url="<https://play.google.com/store/apps/details?id=org.realtwin.camera_twin>" %}

<div align="left"><figure><img src="/files/eaKkLRyhZCXUqYS6ylX0" alt="" width="375"><figcaption></figcaption></figure></div>

### iPhone

{% embed url="<https://apps.apple.com/us/app/camera-twin/id6468929721>" %}

<div align="left"><figure><img src="/files/7D2N5iNNRPvvm2CPlTew" alt="" width="375"><figcaption></figcaption></figure></div>


# Installation - Unreal Engine

This page guides you through the simple steps to install the CameraTwin plugin in Unreal Engine.

## CameraTwin Plugin Installation

To install the CameraTwin UE Plugin, simply choose the appropriate version for your Unreal Engine 5 setup from the links below:

## V2.0.1

* [CameraTwin - Unreal Engine 5.5](https://drive.google.com/file/d/1NoHJYvZ9f-x7qAmnQ5spwSIG2jTtUHrG/view?usp=drive_link)
* [CameraTwin - Unreal Engine 5.6](https://drive.google.com/file/d/1tnW2yQEb1ZvIDOI0LGNT_nhMzOkLZGs8/view?usp=drive_link)
* [CameraTwin - Unreal Engine 5.7](https://drive.google.com/file/d/1IMRl4jitaV0soGCDzZgIc9yyfrCgvU6s/view?usp=drive_link)

{% content-ref url="/pages/AjwOhksVKypnfCkpfMU5" %}
[Changelog](/cameratwin/installation/installation-unreal-engine/changelog)
{% endcontent-ref %}

{% hint style="info" %}
Starting with v2.0.1, the NDI plugin is bundled in Unreal Engine Editor and no longer requires a separate installation.
{% endhint %}

Unzip the Prebuilt plugin folders and follow the instructions below:

* Choose the folder that corresponds to your Unreal Engine version
* Engine Plugin Installation:
  1. Copy and paste the Internal plugin folder named “CameraTwin” to the folder
     1. \<Disk Letter>:\Program Files\Epic Games\UE\_\<Major Version>.\<Minor Version>\Engine\Plugins
     2. For the Unreal Engine 5.1 and the main windows disk the path above is\
        C:\Program Files\Epic Games\UE\_5.1\Engine\Plugins
* Project Plugin Installation:
  1. Copy and paste the Internal plugin folder named CameraTwin to the Plugins folder of your project. If there is no such a folder you can create one.
* To enable the plugin, when you open your project, go to Edit->Plugins and search for the CameraTwin plugin.

Now that both the mobile app and the plugin are set up, you can proceed to the [Get Started](/cameratwin/get-started) page.


# Changelog

Here you can check the changes and updates of our plugin over time.

## v2.0.1

Date: 27/02/2026

<details>

<summary>Release Artifacts</summary>

* [CameraTwin - Unreal Engine 5.5](https://drive.google.com/file/d/1NoHJYvZ9f-x7qAmnQ5spwSIG2jTtUHrG/view?usp=drive_link)
* [CameraTwin - Unreal Engine 5.6](https://drive.google.com/file/d/1tnW2yQEb1ZvIDOI0LGNT_nhMzOkLZGs8/view?usp=drive_link)
* [CameraTwin - Unreal Engine 5.7](https://drive.google.com/file/d/1IMRl4jitaV0soGCDzZgIc9yyfrCgvU6s/view?usp=drive_link)

</details>

#### Additions:

* eliminate the need of installing the NDI plugin separately
* add Runtime Mode support for the core functionality of the plugin
* add support for nDisplay

#### Fixes & Optimizations:

* fix "Create Sequence" action of Recording Asset, not working in some versions of UE Editor
* fix AR composition Materials to correctly compose the CG layer with the appropriate mask
* fix Quick Actions to work with any kind of blueprint, not just Editor Utility Blueprints
* minor issues with Recording Asset

#### Known Issues:

* LiveLink Preset  with CameraTwin Soruce is not serialized correctly

Mobile app Compatibility List

<table><thead><tr><th width="369">Android - Play Store</th><th>iOS - App Store</th></tr></thead><tbody><tr><td><a href="https://play.google.com/store/apps/details?id=org.realtwin.camera_twin&#x26;hl=en">v1.0.3</a></td><td><a href="https://apps.apple.com/us/app/camera-twin/id6468929721">v1.0(4)</a></td></tr></tbody></table>

***

<details>

<summary>Previous Versions</summary>

## Production Builds

## v1.2.0

Date: 15/01/2026

#### Additions:

* Support Unreal Engine 5.5 (dropping support of Unreal Engine 5.2)
* Upgrade to NDI v3.8 Unreal Engine Plugin

#### Fixes & Optimizations:

* Fix a rare issue while creating a LevelSequence

#### Known Issues:

* Quick Actions are only bindable in Editor Utility Blueprints

## v1.1.1

Date: 04/11/2025

#### Additions:

* Automatic Source selection when one Camera source is connected

#### Fixes & Optimizations:

* Color Space correctly set to Linear Rec.709 during recording (instead of sRGB)
* minor bug fixes

#### Known Issues:

* Quick Actions are only bindable in Editor Utility Blueprints

## v1.1.0

Date: 21/6/2025

#### Additions:

* Audio Recording
* Timecode Synchronization
* Recording Asset
* Integration with Sequencer
* Minor utilities added

#### Fixes & Optimizations:

* Performance improvements
* minor bug fixes

#### Known Issues:

* Quick Actions are only bindable in Editor Utility Blueprints

## Closed Beta End

## v0.5.3

#### Additions:

* add support for SceneCapture2D components and Camera Actor variations which uses SceneCapture2D component to capture the CG layer, this allows for Lumen, TSR and other rendering features to work with the CG captures in contrast to the default Composition Capture Element
* add new record signal to trigger Take Recorder from the mobile apps record button
* add Camera Parameters Controller to allow for a simple CG Focus mode where the physical camera will focus at certain distance based on the distance between your virtual camera and the CG object of focus.
* add Multi-Camera Support: now you can have multiple CameraTwin sources working at the same time. To make it work correctly, multiple Camera Actors should be placed in the level and each one should be explicitly set to receive all LiveLink subject from a specific source.

#### Fixes & Optimizations:

* minor UI changes
* minor bug fixes

#### Known Issues:

* Extreme values of White Balance and Tint have different results on Android, iOS and UE

### v0.5.0

Date: 6/3/2024

**Additions:**

* add support for camera parameters control
* add camera parameters control example scene and example sequence

**Fixes & Optimizations:**

* fix the random freeze of the camera stream update

**Known Issues:**

* Extreme values of White Balance and Tint have different results on Android, iOS and UE

### v0.4.0

Date: 17/11/2023

**Additions:**

* add support for the iOS mobile application
* add Stream Recording capabilities supporting multiple image files and export to Video and Metadata files (if FFmpeg encoder is set in the Project Settings)
* add Control Panel tab with stream recording settings
* add Recording Settings in the Unreal Engine Project Settings
* *QuickActions* are now managed in the Control Panel and are globally defined, they can be grouped and saved in *QuickActionsSet* assets
* add *QuickActions* Editor utilities for better user experience and user error avoidance

**Fixes & Optimizations:**

* Frame synchronization done in UE instead of the phone
  * Stream Buffering options to let user find balance between stability and lag
* Correctly apply FIZ values
* Drop Saturation in favor of Tint to pair with White Balance

**Known Issues:**

* Extreme values of White Balance and Tint have different results on Android, iOS and UE
* Random Android preview and stream stuttering, usually resolved by pausing the stream for a few seconds and resuming afterwards

### v0.3.0

Date: 20/10/2023

**Additions:**

* add support for the "Untracked Mode" offering extra camera adjustments capabilities without motion tracking
  * Video stabilization
  * Fine control of:
    * Zoom
    * Focus
    * Shutter Speed, ISO
    * White Balance, Saturation

**Fixes & Optimizations:**

* minor UI fixes

### v0.2.0

Date: 10/10/2023

**Additions:**

* Quick Actions now act as global events and can be bound by multiple custom events from any blueprint.

**Fixes & Optimizations:**

* minor fixes

### v0.1.0

**Additions:**

* add *BP\_CameraTwinCameraActor* with the ability to receive the motion tracking data and Camera Parameters via the LiveLink system
* add Composition Layer inputs receiveing the streamed camera feed
* add StaticMesh LiveLink Controller able to apply the streamed camera feed on the mesh (i.e. the camera feed is rendered on a plane)
* add *QuickActions* support

**Known Issues:**

* *QuickActions* can be bound only by a single BP custom event

</details>


# Get Started

This page contains easy-to-follow steps for initializing your virtual production journey with CameraTwin.

## Installation

If you haven't installed both the Mobile Application (iOS or Android) and the Unreal Engine Plugin please follow our instructions here:

{% content-ref url="/pages/vBiOgJ6NKmkZieyZtpsj" %}
[Installation](/cameratwin/installation)
{% endcontent-ref %}

## Overview

You can watch this video with our detailed steps or check out the written version of our guide to learn how to:

1. [Configure your API Key](#step-1-configure-your-api-key)
2. [Setup your Level](#step-1-setup-your-level)
   1. [Open one of our Example Levels](#step-2a-open-on-of-our-example-levels)
   2. [Setup your own Level](#step-2b-setup-your-own-level)
3. [Configure the Mobile Camera App](#step-2-open-the-cameratwin-mobile-app)
4. [Connect with LiveLink](#step-3-connect-cameratwin-livelink-source)
5. [Setup your Stage](#step-4-optional-setup-your-stage)
6. [Start Streaming](#step-5-start-streaming)
7. [Record](#step-6-record)
8. [Preview in Sequencer](#step-8-preview-in-sequencer)

{% embed url="<https://youtu.be/2yU1fFphE8c>" %}

## Step 1 : Configure your API Key

To configure your API key you should follow the instructions below:

1. Sign in to the [CameraTwin dashboard](https://app.cameratwin.com/dashboard/api-keys)
2. Go to the [API Key Section](https://app.cameratwin.com/dashboard/api-keys)
3. Acquire the API Key
   1. Generate new API key from the button at the top and copy it\
      or
   2. Copy your existing API Key from more options button at the right of the API Key entry
4. Open the Unreal Engine Project and go to the Project Settings-> CameraTwin
   1. Find the API key property and paste your API key in the field.

{% hint style="info" %}
For more details about API Key configuration check out [here](/cameratwin/documentation/unreal-engine-plugin/api-key-configuration)
{% endhint %}

## Step 2 : Setup your Level

For this step you can either open one of our Example Levels (highly suggested) or setup your own Level.

Make sure that Unreal Engine is set to show the plugin's Contents. If you don't know how to do it, please follow the steps [here](/cameratwin/documentation/unreal-engine-plugin#show-plugin-contents).

### Step 2a: Open one of our Example Levels

You can select any of the following Example Levels according to your needs.\
You will find these in your Content Browser, navigate to **All -> Plugins -> CameraTwin Content -> Examples**.

1. **\[ Recommended ] ArSimpleCompositionExample:**\
   Suitable for beginners that want to familiarize with the composition concept similar to Augmented Reality (AR), meaning the virtual elements are augmented to the real world view. i.e. A virtual robot character standing in your actual living room.
2. **ArAdvancedCompositionExample:**\
   Suitable for intermediate users that want to familiarize with a more complex setup of a composition similar to AR, but with added lighting and shadow details.
3. **ArSceneImagePlateExample:**\
   Suitable for beginners that want to easily preview the AR view of their concept without fiddling with the UE's composure composition intricacies. *Note: for smooth preview in the viewport pilot your Virtual Camera.*
4. **CameraParametersExample:**\
   This example is combined with the **CameraParametersLevelSequence** and will show you how you can script your camera parameters changes inside a LevelSequence to achieve a repeatable capture pattern.
5. **SimpleCompositionExample:**\
   Suitable for beginners that want to familiarize with the basic composition setup of a green-screen (blue-screen). *Note: this example setup won't have great results with Lumen, ray-tracing and advanced lighting setups.*
6. **AdvancedCompositionExample:**\
   Suitable for intermediate users that want to achieve best results of the green-screen setup combined with advanced lighting setups including Lumen and ray-tracing.
7. **StaticMeshExample:**\
   In this example the camera stream is projected in a static mesh inside the scene, suitable for fast debugging and simple static shots.

### Step 2b: Setup your own Level

To setup your own Level you will need to add the appropriate Virtual Camera Actor and setup the appropriate composition layers if needed.\
You will find these in your Content Browser, navigate to **All -> Plugins -> CameraTwin Content -> Blueprints**.

You can select between three ready-to-use Virtual Camera Actors.

1. **BP\_CT\_CameraActor**\
   A custom Cinecamera Actor with the appropriate LiveLink controllers and components to enable CameraTwin functionality. This Actor is suitable for all general purposes and Virtual Production setups.
2. **BP\_CT\_Capture\_CameraActor**\
   A specialized Camera Actor with a Scene Capture Component suitable for capturing accurate color and ray traced light effects. This Actor is suitable for use with Composure Composition layers\
   [*For more details about scene capture components check this out*](/cameratwin/documentation/unreal-engine-plugin/scene-capture-components)
3. **BP\_CT\_Plate\_CameraActor**\
   A specialized Camera Actor with a Image Plate ready to project the Camera Stream inside the scene at a given distance. This Actor is suitable for AR compositions and easy in Scene preview of the video stream.

{% hint style="info" %}
It is possible to create custom Camera Actor setups specialized for your use-case. We recommend to start from the generic BP\_CT\_CameraActor and build up your setup.
{% endhint %}

If you select a Virtual Camera Actor other than the **BP\_CT\_Plate\_CameraActor** you will most probably need to setup the right composition Layers.\
Open the **Composure Compositing** Window and right click to **create a new Comp** then add the following Layers by opening the context menu of the newly created Composition and selecting the **Add Layer Element** option. In the pop up window expand the **ALL CLASSES** section and add the following layers one at a time.

1. **BP\_CT\_InputStreamElement:**\
   This Layer Element will receive the camera stream and will be used to key the texture of your green-screen setup.
2. **BP\_CT\_CG\_Element** *(Not needed in case of BP\_CT\_Capture\_CameraActor)***:**\
   This Layer Element will capture the Virtual Scene from the perspective of your Virtual Camera Actor and will be used to composite your virtual objects and characters inside the composition.

Finally, select your Composition Actor in the Outliner Window and setup the input and transform passes according to your desired composition needs. You can always reference one of our Example Levels to replicate the composition setup (Compositions are not transferable between scenes) or check our detailed guide about [Composition Setups](/cameratwin/documentation/unreal-engine-plugin/composition-setups).

## Step 3: Configure the CameraTwin Mobile App

Open the CameraTwin mobile app and select the name of your device, it will be included to your Source name as well. You can leave it to default which is your smartphone's model.

| Mobile Startup iOS               | Mobile Startup Android           |
| -------------------------------- | -------------------------------- |
| ![](/files/yZByLOWMGVmiMMZYYcCD) | ![](/files/eeprGmsP6EXqlHTTNuGY) |

{% hint style="info" %}
In case you are using an Android device, enable the "Tracking" toggle. in order to also stream the camera pose.
{% endhint %}

## Step 4: Connect CameraTwin LiveLink Source

After the mobile application is started you can connect to its stream by using the Live Link window.

**Steps**:

1. Open the LiveLink window, by searching for it under the Window menu of the Unreal Engine’s top bar ([video](https://www.youtube.com/watch?v=lg5BIxMjEfA))
2. Inside the Live Link window ([video](https://www.youtube.com/watch?v=q4ffqLQdzOI))
   1. Click the ![](https://lh7-us.googleusercontent.com/OLqC57oqBlS-6Jf_6D1QflQ8LXCpBqnlhnFXR1nosw-H8Dt4mG8iYRCvI2qYAIZ-9D_UD8SLxqdwGqFh0y84s7aOFcjivShrlIKrOQr19zVamNsec_v_Xhum1WU9nvGXsJkdmS4mJDQdNZNovypZ7ww) button
   2. Hover over the CameraTwin option
   3. Select your desired CameraTwin Source as CameraTwin source
3. Setup your LiveLink Controllers to listen to the newly created LiveLink subjects of your CameraTwin Source ([Step 3 of CameraTwin LiveLink Setup](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup#step-3-setup-livelink-subjects))

Here you can find detailed steps regarding CameraTwin LiveLink Source Setup:

{% content-ref url="/pages/q4WOq7c5CJOSuYct7tOU" %}
[CameraTwin LiveLink Setup](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup)
{% endcontent-ref %}

## Step 5 (Optional): Setup your Stage

If you want, you can set up your stage by tapping on specific points to create the outline of your stage area. The outline will be presented in your Unreal Engine Level in order to make it easier for you to select your shooting location inside the Virtual setting.

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

**Steps**:

1. Enter stage setup mode from the main screen by pressing the <img src="https://lh7-us.googleusercontent.com/p23eHQclLiszLo1Iw5ex_QkKlx-bG5uhqdJ1HlrHu2BkqOi06Cxn-b87taE1-WQ7DHMdEbH8tXppvdcz6_7S5mVC26CxnKKstk2uIic0DBvTluhA0PpSOjKjSOgAQ1E7krL5v-Rz48UV9_tbCfX6a94" alt="" data-size="line"> button in the main drawer.
2. \[Optional] Move the device around until surfaces are recognized and displayed.
3. Point the target marker at the center of the screen over the location of the first point to be placed.
4. Tap anywhere on the screen to place the point.
5. Repeat steps 3-4 until at least 3 points have been added.
6. Press the <img src="https://lh7-us.googleusercontent.com/TbkdZp-DseZECbxc3MXrChqlKFD_R7I5YvD0s8HTs0oUzmn_OjrCycWqUDam7-hDAC9K1UTbi9TYrrdf5BNRXcKz0scrHywZVxg4F--JmUQLSe-4IwNzeEqaS6nzm5xx1WKtdkF4Zd2KgOTSug9gCWs" alt="" data-size="line"> button to accept the current stage.

At any point, the <img src="https://lh7-us.googleusercontent.com/xjIgSXhidaIS4Trjy9Cn47RhtGwCQmr0TsnhxEOaZztML2cRGLhP4-6T_kc02pfSeSALxhPPD0qv-kLWCqWt62jq1GcQuu313QUGmXeLv3a4epKHGjLqaR1TBbcK7cwleJYNcBqgBxQ0cZhdi56TR9s" alt="" data-size="line"> button can be used to remove the last placed point. Additionally, the <img src="https://lh7-us.googleusercontent.com/ihdVEZ4pjjBo8QSnqowP0qCUwGQAOuZo9MCBm5id7bDg1RcU3Raf7qDHtQctlOJEVRi7Vp0rVHnoNIugwFbx6yytFY7gnsJDJ8yOmGT50emRwFhGndUM_58PiGO5G9AcbUJw8hDCmGOVLxbDWjpv3xg" alt="" data-size="line"> button can be pressed to cancel the input and return to the previously set stage (if any). Finally, pressing the <img src="https://lh7-us.googleusercontent.com/TbkdZp-DseZECbxc3MXrChqlKFD_R7I5YvD0s8HTs0oUzmn_OjrCycWqUDam7-hDAC9K1UTbi9TYrrdf5BNRXcKz0scrHywZVxg4F--JmUQLSe-4IwNzeEqaS6nzm5xx1WKtdkF4Zd2KgOTSug9gCWs" alt="" data-size="line"> button with fewer than 3 points placed will clear the stage entirely.

### Stage Options in Unreal Engine

After the stage setup in the mobile application, the parameters of the stage are transmitted to Unreal Engine and the BP\_CT\_CameraActor renders the stage outline in a bright green color.

In the CameraTwinStage component there are the following parameters:

* Snap Parent to Ground

{% embed url="<https://www.youtube.com/watch?v=40J6wgPp7eQ>" %}

* Ground Level

{% embed url="<https://www.youtube.com/watch?v=nUfzpMQTiLo>" %}

Here you can find details steps regarding Stage Setup:

{% content-ref url="/pages/OH3xFGbxNSgqvMZMoNC1" %}
[Stage Setup](/cameratwin/documentation/stage-setup)
{% endcontent-ref %}

## Step 6: Start Streaming

If you haven't already started streaming from the phone, you can do it now. To start streaming you can press the streaming button <img src="https://lh7-us.googleusercontent.com/Rl8LalHWr9xLAWhrdkFtNKApM6FseElYco36wYkBg9K7ubQzDwRcyXFrgHrZWp1M1CmxJKEOeb_7jFV4JiaTAiNJh2I6Xf_b4wkC7Wjtq8xqsupc9PAbFEx35auoIuT42JeIKBoQUcB6hQyFObLNBYU" alt="" data-size="line"> to toggle it to streaming state <img src="/files/s0T5yjR0WA94E111Ilx8" alt="" data-size="line">.\
\
Make sure the LIveLink subjects turn from yellow to green (all but the stage Subject), that means that the phone successfully streams video, pose and camera parameters information to the Unreal Engine.

<figure><img src="/files/TVKhnM51vDakP4oVEvq7" alt=""><figcaption><p>LiveLink Subjects indicated with green, meaning they receive data regularly (@ 30fps)</p></figcaption></figure>

{% hint style="warning" %}
If anything is wrong about the stream follow the troubleshooting options found [here](/cameratwin/troubleshooting/my-stream-seems-frozen-in-unreal-engine).
{% endhint %}

## Step 7: Record

Tap the record button on the Phone and film your shot.\
According to the [Recording Settings](/cameratwin/documentation/unreal-engine-plugin/cameratwin-settings/recording-settings) and the enabled [Recording Events ](/cameratwin/documentation/unreal-engine-plugin/recording-events)of your project the record button will trigger whichever event is enabled.

You can adjust most of those settings in the [Control Panel](/cameratwin/documentation/unreal-engine-plugin/control-panel).

## Step 8: Preview in Sequencer

After you finish the Recording:

1. Find your [Recording Asset](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder/cameratwin-recording-asset) in your defined folder in the Content Browser (Default: CameraTwin/Recordings/)
2. Open the Context Menu and click the Create New Sequence Action
3. Make sure the desired Camera Actor Blueprint is Selected and Click Apply

A new Sequence is created with all tracks required to preview your shot.

To preview your shot with Composure Layers:

1. Go to the Input Layer Element and in the details Panel under Composure->Input->Inputs
2. Add another input of the type "Texture Input"

   <figure><img src="/files/b2ZGbN8XLLHijujqD6NL" alt="" width="375"><figcaption></figcaption></figure>
3. Apply the texture that is used by default in the sequence media track, in the properties tab

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

## All set for your first Shot

Now that you have a better understanding of CameraTwin's capabilities, you can keep on using the example level and try different shots or you can load the rest of the examples and follow our [Tutorials](/cameratwin/tutorials).


# Documentation

## CameraTwin Documentation

Here you can find the CameraTwin Documentation. It is split in:

* [Mobile Applications](/cameratwin/documentation/mobile-applications)
* [Unreal Engine Plugin](/cameratwin/documentation/unreal-engine-plugin)

and two guides that involve both the Mobile apps and the Unreal Engine Plugin:

* [Stage Setup](/cameratwin/documentation/stage-setup)
* [Mutli-Camera Setup](/cameratwin/documentation/multi-camera-setup)

Don't forget to check out our tutorials:

{% content-ref url="/pages/20HYRT48TBqghTrHY0Zs" %}
[Tutorials](/cameratwin/tutorials)
{% endcontent-ref %}


# Mobile Applications

This page contains information about the Mobile Applications of CameraTwin

## CameraTwin Mobile Application

The CameraTwin Mobile application is available both for the Android and the iOS platforms.

<figure><img src="/files/8LqzrQ3fZcZldulSRtRF" alt=""><figcaption><p>CameraTwin Logo</p></figcaption></figure>

{% hint style="info" %}
You can find more about the installation process of the applications [here](/cameratwin/installation/installation-mobile-app).
{% endhint %}

## Mobile Applications Highlights

{% content-ref url="/pages/L9Z3jKno05IwK1ZyW1DO" %}
[Entry Screen](/cameratwin/documentation/mobile-applications/entry-screen)
{% endcontent-ref %}

{% content-ref url="/pages/BOgmQizWJRgKUZ8vC6Ak" %}
[Main Camera Screen](/cameratwin/documentation/mobile-applications/main-camera-screen)
{% endcontent-ref %}

{% content-ref url="/pages/DdsDXKvenQ2X0kjZzjJC" %}
[Menu Drawer](/cameratwin/documentation/mobile-applications/menu-drawer)
{% endcontent-ref %}

{% content-ref url="/pages/2tmQ2694eW1uKhw0e0jc" %}
[Advanced Camera Controls](/cameratwin/documentation/mobile-applications/advanced-camera-controls)
{% endcontent-ref %}


# Entry Screen

This page contains information about the Entry Screen of the mobile applications

## Entry Screen of the Mobile Application

As of now the CameraTwin app doesn't support an Offline Capture without the need of an Unreal Engine workstation, but we intend to support it soon as long as there is enough demand from the users. Please make sure to let us know if you want this by clickng the "Ve the First to Know" link and declaring your interest.

| Mobile Intro iOS                 | Mobile Intro Android             |
| -------------------------------- | -------------------------------- |
| ![](/files/ClrMWQ5ahtt0WUkD52A1) | ![](/files/fisugXXXrRItBfxO5OTa) |

## Onboarding Steps Pop up

The first time you open the application, a helpful pop up will be shown with specific links to this documentation page

| Mobile Onboarding iOS            | Mobile Onboarding Android        |
| -------------------------------- | -------------------------------- |
| ![](/files/gmNwrFx2tlUy7I2aayn5) | ![](/files/GWryL7nv2Hu7OaAjXPQ1) |

## Connect to Unreal Engine

In this screen you can actually edit the device name from the default one which is your model. This name will be used as the Source Name in the dashboard, in Unreal Engine menus and in the Recordings, so make sure it's unique within you Camera Sources especially if you plan to use more than one camera Sources at the same time (👀 [Multi-Camera Setup](/cameratwin/documentation/multi-camera-setup))

| Mobile Startup iOS               | Mobile Startup Android           |
| -------------------------------- | -------------------------------- |
| ![](/files/yZByLOWMGVmiMMZYYcCD) | ![](/files/eeprGmsP6EXqlHTTNuGY) |

For the Android version there is also an option to toggle Motion tracking hence entering tracked or untracked mode. In Tracked mode the [Advanced Camera Controls](/cameratwin/documentation/mobile-applications/advanced-camera-controls) aren't available due to limitations of the ARCore API, while in Untracked mode you can access the Advanced Camera Controls by sacrificing the camera tracking feature.\\

<figure><img src="/files/n3zXCYNv5k2HOQElPhRe" alt="" width="188"><figcaption></figcaption></figure>

{% hint style="info" %}
For more details you can check out [Android Untracked Mode](/cameratwin/documentation/mobile-applications/advanced-camera-controls/android-untracked-mode)
{% endhint %}


# Main Camera Screen

This page contains information about the Main Camera Screen of the mobile applications

## Main Camera Screen

The Main Camera Screen is similar for both platforms:

<figure><img src="/files/eQFbipuB2O7HBbpLmwq7" alt=""><figcaption><p>Main Camera Screen - iPhone</p></figcaption></figure>

<figure><img src="/files/8DPh9ysCQGaSImAjPYt4" alt=""><figcaption><p>Main Camera Screen - Android</p></figcaption></figure>

### UI Elements

The Main UI Elements for both platforms are the following

<img src="https://lh7-us.googleusercontent.com/Rl8LalHWr9xLAWhrdkFtNKApM6FseElYco36wYkBg9K7ubQzDwRcyXFrgHrZWp1M1CmxJKEOeb_7jFV4JiaTAiNJh2I6Xf_b4wkC7Wjtq8xqsupc9PAbFEx35auoIuT42JeIKBoQUcB6hQyFObLNBYU" alt="" data-size="line"> : Enable/disable transmission to Unreal Engine

Android - x/60 iPhone - <img src="/files/cYYgwXCueQqFFgghIeqw" alt="" data-size="line"> : Dropped frames / Connection health indicator

<img src="https://lh7-us.googleusercontent.com/2iZD9OcQrHQL_uYdG4QIVZbXVN72dS4_NlzOKea3NAdZF6xpwMkdSsJ57OVAmr_JwbZ0A8VnlFNWM-ZIXipyazU7X6SDjLl-XfcHzGY03MeyqgnEJIfcEUaGJr0lLQiFRIhXQ94M6Sh6LHZM5HLYWDE" alt="" data-size="line"> : Record video (if supported) and camera metadata and/or trigger UE record

<img src="/files/AltvTxenKGxsDnG212pF" alt="" data-size="line"> : Open/close the menu drawer


# Menu Drawer

This page contains information about the Menu Drawer of the mobile applications

### Menu Drawer

<figure><img src="/files/eAhIMlzczUyzjNv6kuob" alt=""><figcaption><p>Menu Drawer - iPhone</p></figcaption></figure>

<figure><img src="/files/ELR7L966AJxYitJv8n0M" alt=""><figcaption><p>Menu Drawer - Android (Tracked Mode)</p></figcaption></figure>

<figure><img src="/files/5lrgUXqzsC3aihJexvUy" alt=""><figcaption><p>Menu Drawer - Android (Untracked Mode)</p></figcaption></figure>

Menu drawer contains a collection of features and settings that are available to the user according to the platform and the mode of operation.\
\
List of features and settings:

* Common:
  * <img src="https://lh7-us.googleusercontent.com/vqFKTwC26YYW91osdFN9wde6-bFzs8kgUko-IDMhyVhX6DtYFZv2YlB0ga9aQWLyfvDeHXBQigHvS65zovoFFOO4yIACHRr2FbqEOnvKyVpJjSL0eVMs26A3p3oaDb19Q2LVpu5rVJ2c1V-5d5yYufI" alt="" data-size="line">: Cycle through available resolutions
  * <img src="https://lh7-us.googleusercontent.com/hDjeXa7KNwvJbjvXnqNCQWggMvCxFhy9YOHe6wo6_0uBXNKhoAMtY8noHH5HdrVebBRgzyC_H8hJFN71VQLAra-KG7kXeqov6PvJxjK4La3htqgGfKHiw0AeA1Fzhay02vZE_zuJ1ezttbZ4fKOHf3Y" alt="" data-size="line">: Show/hide horizon indicator -> [Horizon Alignment](/cameratwin/documentation/mobile-applications/horizon-alignment)
  * <img src="https://lh7-us.googleusercontent.com/-yElOTInQWWuluXsYUDRvt6TpfPq-kbp-L6TJf8tH_H93wdYNI3LBhPXqdI2i0ZdnWXjjaNiipR-ea3JOHJUzi_4I3tDrn4I4A3KK5xOA-29yK48sIKydK22oEX_DGPTNIPrpIXMMBTspH5ybVy9PPI" alt="" data-size="line">: Show/hide quick actions -> [Quick Actions](/cameratwin/documentation/mobile-applications/quick-actions-mobile)
* iPhone & Android Tracked Mode
  * <img src="https://lh7-us.googleusercontent.com/p23eHQclLiszLo1Iw5ex_QkKlx-bG5uhqdJ1HlrHu2BkqOi06Cxn-b87taE1-WQ7DHMdEbH8tXppvdcz6_7S5mVC26CxnKKstk2uIic0DBvTluhA0PpSOjKjSOgAQ1E7krL5v-Rz48UV9_tbCfX6a94" alt="" data-size="line">: Enter stage setup -> [Stage Setup](/cameratwin/documentation/stage-setup)
* iPhone & Android Untracked Mode
  * <img src="https://lh7-us.googleusercontent.com/V2xJYLE_YwrY6UKniCpt_PigSmO2SzSvLEvg5hbedjR1Y2SpsZ9Smyd1ZxaT1vWFYYsctWLzMrN6o1nEpOp6pclkyTy4Kkc9iPnnsYhlw0lwflaPy_5xOUGbTQlki49NQz0DKaBlAxKP8F7u7ZwaIj8" alt="" data-size="line"> : Show/hide advanced camera controls ->[ Advanced Camera Controls](/cameratwin/documentation/mobile-applications/advanced-camera-controls)
  * <img src="/files/IDtJDAC1HSr7QIpfXBlG" alt="" data-size="line"> : Lock/Unlock UI settings
* Android Untracked Mode
  * <img src="/files/yQYTj5wj7WaASVQkkIli" alt="" data-size="line"> : Toggle On/Off video stabilization


# Horizon Alignment

This page contains information about the Horizon Alignment of the mobile applications

## Horizon Alignment Feature

<figure><img src="/files/yAq9L8S56WJKnXXQAHLq" alt=""><figcaption><p>Horizon ALignment - iPhone</p></figcaption></figure>

<figure><img src="/files/ZNRBsv7r6pgVeXimttXi" alt=""><figcaption><p>Horizon Alignment - Android</p></figcaption></figure>

The Horizon Alignment feature is a utility feature that offers visual feedback in terms of the horizontal alignment of the phone in relationship to the horizon line. The dotted line offers a visual indicator of the horizon line while the reticle offers a visual indicator of the phones orientation.


# Quick Actions (Mobile)

This page contains information about the Quick Actions Feature of the mobile applications

## Quick Actions Mobile View

<figure><img src="/files/wIWL1nVzsr0YAXJHNJ81" alt="" width="563"><figcaption><p>Quick Actions Enabled - iPhone</p></figcaption></figure>

<figure><img src="/files/TAC2Ljwh2t7vk4K2YHm0" alt="" width="563"><figcaption><p>Quick Actions re-arrangement - iPhone</p></figcaption></figure>

<figure><img src="/files/DUBcEX7DWPHRYD6ooE8u" alt="" width="563"><figcaption><p>Quick Actions Enabled - Android</p></figcaption></figure>

<figure><img src="/files/ukTZDVIG14jcfJbvtjje" alt="" width="563"><figcaption><p>Quick Actions re-arrangement - Android</p></figcaption></figure>

The Quick actions feature lets you create custom events in Unreal Engine and trigger them through the mobile UI. You can learn more about the Quick Actions feature [here](/cameratwin/documentation/unreal-engine-plugin/quick-actions).


# Advanced Camera Controls

This page contains information about the Advanced Camera Controls that the CameraTwin app offers with the iPhone and the Android Untracked mode.

## Advanced Camera Controls

With Advanced Camera Controls <img src="https://lh7-us.googleusercontent.com/V2xJYLE_YwrY6UKniCpt_PigSmO2SzSvLEvg5hbedjR1Y2SpsZ9Smyd1ZxaT1vWFYYsctWLzMrN6o1nEpOp6pclkyTy4Kkc9iPnnsYhlw0lwflaPy_5xOUGbTQlki49NQz0DKaBlAxKP8F7u7ZwaIj8" alt="" data-size="line"> you can gain full control over your smartphone camera parameters and seamlessly mirroring them in Unreal Engine.

The Advanced Camera Controls are available for the iPhone and for the Android in [Untracked Mode](/cameratwin/documentation/mobile-applications/advanced-camera-controls/android-untracked-mode).

<figure><img src="/files/6MqtVSYnwMLzNxwPIAfB" alt=""><figcaption></figcaption></figure>

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

### Camera Control Pairs

Advanced Camera Controls are divided in pairs:

* Focus and Digital Zoom <img src="https://lh7-us.googleusercontent.com/yHl4lid4p84BRRWLGP_Pn2frNH1gCYFLrwZaOQhdndEg94fBLpWQGe6Gl54LPCqjgQuWZZrLEW5QUBH4iKf16tQ8jFeHOOGACjnYkNAdFZDEawh89aLabpAJ2oPrnIBMrftu8Y6e6G6QSaKYv38Umsk" alt="" data-size="line">
* Shutter Speed (Exposure Time) and ISO <img src="https://lh7-us.googleusercontent.com/kWj-s--Dhbjff4vpvL9Z41wNu42Sf0q8Pb4Ws5twVqwmWzCk0Zph8pZTuDJAebgPAYUd5AQ6O3LYcOv_uY_59ikMqYltB_9elW4C_nJorPCIlU-YTE9APxYOyAjMWidCKH_F5K5n_-txAne_talYBC8" alt="" data-size="line">
* White Balance and Tint <img src="https://lh7-us.googleusercontent.com/liwnI8o6WFeevQ9y2kVi-DdCvfN-2T92okVv475VRZxGKm3IW3Y8O9uTSsFigKqA6krsXzV3qLEi7rOXSF6sZZPESn95e4Jszekbb_qqDUwfqMUZlAaEbYOfaGrQHT7CmqOwKY-NKM_7rxPpMyHiyQo" alt="" data-size="line">

### Camera Control Modes

Each Pair has 4 modes of operation:

* <img src="/files/oiEeEpVeJYZxaJ3RZZC8" alt="" data-size="line"> - **Auto** : The phone adjust automatically the values according to the environment lighting and objects of focus.
* <img src="/files/oUeJ21nrOysIuHIPl8Nn" alt="" data-size="line"> - **Locked** : The phone is locked to the last value of the parameter just before the toggle was locked.
* <img src="/files/itSctouJcCCldfq51nAO" alt="" data-size="line"> - **Manual** : the phone shows rotary sliders in order for the user to manually adjust the values of the parameters.
* <img src="/files/vsg0jdcwrN47Ajd1lvCa" alt="" data-size="line"> - **Remote** : The phone applies the values that it receives from the Unreal Engine.

{% hint style="warning" %}
The **Digital Camera Zoom** is the only parameters which doesn't follow all the modes of operations and is a special case that is manually adjustable in all modes except in the <img src="/files/vsg0jdcwrN47Ajd1lvCa" alt="" data-size="line">Remote mode where it is controlled by the Unreal Engine.
{% endhint %}

## Examples

Manual Focus and Zoom example usage

{% embed url="<https://www.youtube.com/watch?v=wZyebezOJ78>" %}

Manual Shutter Speed and ISO example usage

{% embed url="<https://www.youtube.com/watch?v=oWeS_UqSmK4>" %}

Manual White Balance and Tint example usage

{% embed url="<https://www.youtube.com/watch?v=4o38UOtrcC0>" %}


# Android Untracked Mode

This page contains information about the Untracked mode of operation of the Android platform

{% hint style="info" %}
Due to specific limitations in ARCore, CameraTwin on Android devices offers distinct 'Tracked' and 'Untracked' modes; whereas in iOS, these modes are seamlessly blended, providing a more integrated experience
{% endhint %}

For detailed still shots you can bypass the limitations of ARCore with Untracked Mode, gaining full control over your smartphone camera parameters. Camera tracking is disabled in this mode but it supports advanced camera controls

<figure><img src="/files/5lrgUXqzsC3aihJexvUy" alt=""><figcaption></figcaption></figure>


# Unreal Engine Plugin

This page contains information about the CameraTwin Unreal Engine Plugin in general and useful tips for Unreal Engine.

## CameraTwin Plugin for the Unreal Engine

<figure><img src="/files/8LqzrQ3fZcZldulSRtRF" alt=""><figcaption><p>CameraTwin</p></figcaption></figure>

The CameraTwin plugin for the Unreal Engine (UE) is an essential component of the system as with this plugin the smartphone can be discovered within the UE Editor, can be connected utilizing the UE's LiveLink system and distributes the correct data to the appropriate Actors and Components to fulfill the needs of every production that is based on UE.

The CameraTwin plugin is deeply integrated with UE's ecosystem and specifically focusing on modules like:

* LiveLink
* Composure
* CineCamera Actor
* Sequencer

{% hint style="info" %}
The CameraTwin Plugin is dependent on the NDI plugin for Unreal Engine. Please make sure you have both NDI and CameraTwin plugins installed before usage to ensure proper functionality.\
\
In case you haven't installed our plugin or its dependencies yet, please follow our instructions [here](/cameratwin/installation/installation-unreal-engine).
{% endhint %}

## Plugin Highlights

{% content-ref url="/pages/q4WOq7c5CJOSuYct7tOU" %}
[CameraTwin LiveLink Setup](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup)
{% endcontent-ref %}

{% content-ref url="/pages/b7qAyXR01FS2NbsrNm4w" %}
[Control Panel](/cameratwin/documentation/unreal-engine-plugin/control-panel)
{% endcontent-ref %}

{% content-ref url="/pages/rkOsgtCOj8ZY6OA3NI5U" %}
[Quick Actions](/cameratwin/documentation/unreal-engine-plugin/quick-actions)
{% endcontent-ref %}

{% content-ref url="/pages/IK1mMr5G2Uigp4Flm281" %}
[CameraTwin Recorder](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder)
{% endcontent-ref %}

{% content-ref url="/pages/eFaengqiCk5bdtHgTdDO" %}
[Camera Parameters Manager](/cameratwin/documentation/unreal-engine-plugin/camera-parameters-manager)
{% endcontent-ref %}

## Useful Unreal Engine Tips

### Show Plugin Contents

To show plugin contents in the content browser:

1. Open the Content Drawer
2. At the top right corner of the Content drawer open the Settings
3. Find and check the option Show Plugin Content, it’s under the Content section

{% embed url="<https://youtu.be/dKIXQNHbzZs>" %}


# API Key Configuration

To configure your API key you should follow the instructions below:

### Step 1: Sign in to the [CameraTwin Dashboard](https://app.cameratwin.com/)

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

After entering your email address you will receive an email with your One-Time-Password (OTP). You should use this code in the following screen in order to login, no other password is required.

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

### Step 2: Go to the [API Key Section](https://app.cameratwin.com/dashboard/api-keys)

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

### Step 3: Acquire the API Key

Generate new API key from the button at the top and copy it

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

Or

Copy your existing API Key from more options button at the right of the API Key entry

<figure><img src="/files/6jQtHulYkYGBALnlZ8ot" alt=""><figcaption></figcaption></figure>

### Step 4: Open the Unreal Engine Project and insert the API Key to the Project Settings->CameraTwin

1. Open the Unreal Engine Project and go to the Project Settings-> CameraTwin
2. Find the API key property and insert/paste your API key in the field.

{PLACEHOLDER: Screenshot CameraTwin Project settings, highlight API Key Field}

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


# CameraTwin LiveLink Setup

This page contains easy-to-follow steps for connecting your smartphone to Unreal Engine via the CameraTwin system.

## Step 1: Open LiveLink Window

Open the Live Link window, by searching for it under the Window option of the Unreal Engine’s top bar

{% embed url="<https://www.youtube.com/watch?v=lg5BIxMjEfA>" %}
Search and Open LiveLink Window
{% endembed %}

<figure><img src="/files/RCpcLM5Qps4gtAIDuFnK" alt=""><figcaption><p>LiveLink Window</p></figcaption></figure>

## Step 2: Create CameraTwin LiveLink Source

To create a CameraTwin LiveLink Source:

1. Click the ![](/files/6QHVWxV6RYDjPhN3wwPT) button inside the LiveLink Tab
2. Hover over the CameraTwin option
3. Select your desired CameraTwin Source from the drop-down menu
4. Click the "Ok" button

{% hint style="info" %}
The drop-down menu will be populated with all CameraTwin sources detected on your network. Please make sure that your computer and your smartphone are connected to the same Local Area Network (LAN) in order for CameraTwin to be able to detect your phone.
{% endhint %}

{% embed url="<https://www.youtube.com/watch?v=q4ffqLQdzOI>" %}
Create CameraTwin LiveLink Source
{% endembed %}

## Step 3: Add the Camera Actor of your preference

You can select between three ready-to-use Camera Actors.

1. **BP\_CT\_CameraActor**\
   A custom Cinecamera Actor with the appropriate LiveLink controllers and components to enable CameraTwin functionality. This Actor is suitable for all general purposes and Virtual Production setups.
2. **BP\_CT\_Capture\_CameraActor**\
   A specialized Camera Actor with a Scene Capture Component suitable for capturing accurate color and ray traced light effects. This Actor is suitable for use with Composure Composition layers\\
3. **BP\_CT\_Plate\_CameraActor**\
   A specialized Camera Actor with a Image Plate ready to project the Camera Stream inside the scene at a given distance. This Actor is suitable for AR compositions and easy in Scene preview of the video stream.

{% hint style="info" %}
It is possible to create custom Camera Actor setups specialized for your use-case. We recommend to start from the generic BP\_CT\_CameraActor and build up your setup.
{% endhint %}

{% hint style="info" %}
To learn more about Scene Capture Components and understand the practical differences of ***BP\_CT\_CameraActor*** and ***BP\_CT\_Capture\_CameraActor*** and their intended usage, check out our [**Scene Capture Components** page](/cameratwin/documentation/unreal-engine-plugin/scene-capture-components)
{% endhint %}

## (Optional) Step 4: Select the right Source in your Camera Actor

By default when you connect just one CameraTwin Source, this source will be automatically selected in the current Level Camera Actor.

{% hint style="warning" %}
For the correct behavior only a single Camera Actor should exit in the same Level, if you need multiple Camera Actors in your level you should manually select the Source in the details panel of your desired Camera Actor every time you connect your CameraTwin source.
{% endhint %}

{ PLACEHOLDER: Image showing the source selection in the camera Actor}

<figure><img src="/files/83Hbps2Gv2DdvxbaMhAW" alt=""><figcaption></figcaption></figure>

## (Optional) Step 5: Check Synchronization Status in The Control Panel

Open the [Control Panel](/cameratwin/documentation/unreal-engine-plugin/control-panel) and check the[ Synchronization status](/cameratwin/documentation/unreal-engine-plugin/control-panel#synchronization-status) of the Connected source

{ PLACEHOLDER: Image of the Control Panel with focus on the Synchronization Status}

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

{% hint style="info" %}
For more details about Timecode Synchronization check out [here](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup/timecode-synchronization)
{% endhint %}

## Troubleshooting: Manually Setup or Check LiveLink Subjects

Setup all CameraTwin LiveLink Subjects to the LiveLink Controllers of your Actors & Composition Layers

### Camera Actor

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

#### Pose LiveLink Controller

| Select LiveLink Subject                                             | Select Component to Control                                         |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| <img src="/files/WMEN5ITkHJbLNz9Cc9nJ" alt="" data-size="original"> | <img src="/files/KcyhgX2kqow0BtILwlJk" alt="" data-size="original"> |

#### Camera Attributes LiveLink Controller

| Select LiveLink Subject                                             | Select Component to Control                                         |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| <img src="/files/OHM6KrIPyaf8lOaaiWR7" alt="" data-size="original"> | <img src="/files/RPoMiCPRUwOw81UlWTi0" alt="" data-size="original"> |

#### Stage LiveLink Controller

| Select LiveLink Subject                                             | Select Component to Control                                         |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| <img src="/files/X4Ue55dEci2emRGyDhbD" alt="" data-size="original"> | <img src="/files/3WiFPNagLA86b5pvcq0v" alt="" data-size="original"> |

### Composition Layer

<figure><img src="/files/QoXhSIji5ywyuAtKinHQ" alt=""><figcaption><p>Composition Layer of CameraTwin Video Stream</p></figcaption></figure>

#### Video LiveLink Controller

<figure><img src="/files/ZRfiuR9ImMRKcbhAmyXQ" alt="" width="335"><figcaption><p>Video Stream LiveLink Subject Setup</p></figcaption></figure>

### Static Mesh Actor

<figure><img src="/files/9MyJEsCkuMFCR1iWuhDF" alt=""><figcaption><p>Static Mesh Actor with CameraTwin Video Stream Projection</p></figcaption></figure>

#### Video LiveLink Controller

| Select LiveLink Subject                                             | Select Component to Control                                         |
| ------------------------------------------------------------------- | ------------------------------------------------------------------- |
| <img src="/files/bMZDW6exEjJd0AgIWkDa" alt="" data-size="original"> | <img src="/files/Er8HNZ8C7PR9MVG3ZOUT" alt="" data-size="original"> |

{% hint style="info" %}
Please note that you need to write the appropriate Parameter name so that the controller can set the texture to your Material. The Texture of the default material is named "Video Texture"
{% endhint %}

## Troubleshooting

{% content-ref url="/pages/nOitKCUwGyEEnM7jU8MP" %}
[My device is not showing up in the LiveLink sources list](/cameratwin/troubleshooting/my-device-is-not-showing-up-in-the-livelink-sources-list)
{% endcontent-ref %}


# Timecode Synchronization

This page contains information about Timecode Synchronization between Unreal Engine and CameraTwin Sources

## Timecode

**Timecode** is a standardized system for labeling each frame of video or audio with a unique timestamp. In Virtual Productions, timecode ensures that all elements, cameras, audio, visual effects, and external devices, are perfectly aligned in time. This synchronization is essential for:

* Matching live-action footage with virtual elements.
* Ensuring precise playback and editing.
* Maintaining frame-accurate control across multiple systems.
* Simplifying post-production by providing a common temporal reference.

Timecode is the backbone of reliable, frame-accurate workflows in complex, multi-device environments.

## Unreal Engine Timecode Provider

A **Timecode Provider** in Unreal Engine is a module that supplies timecode information to the engine, allowing it to synchronize its internal clock with external sources. This is crucial for integrating Unreal with other hardware and software in a virtual production pipeline.\
\
Timecode Provider in Unreal Engine can be any of the following:

* AjaTimecodeProvider
* AppleARKitTimecodeProvider
* BlackmagicTimecodeProvider
* LiveLinkTimecodeProvider
* NDITimecodeProvider
* SystemTimeTimecodeProvider

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

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

## CameraTwin Timecode Synchronization

Although a CameraTwin Source could act as a Timecode Provider itself and we could create a specific CameraTwin Timecode Provider our team opted to offer the option to synchronize the internal Timecode of CameraTwin Source with the Selected Timecode Provider of Unreal Engine. That way CameraTwin Source would be in position to synchronize with external software or hardware Timecode Providers via the Unreal Engine and allow for flexibility on Timecode Providers

To achive the timecode synchronization CameraTwin Sources start a brief synchronization process when they are connected with the Unreal Engine. This process shouldn't take more that a couple of seconds and most times it's almost instant. To allow users to chekc the status of the synchronization we offer that information as a simple label in the Control Panel.

Synchronization accuracy is mainly affected by the roundtrip delay between the messages that are transmitted between the CameraTwin source and the Unreal Engine. Roundtrips of <8ms are considered exceptional, <16ms are considered acceptable and above that the synchronization will report a failure. These thresholds are relative to the 30fps target of the CameraTwin system.

Users Can manually trigger a synchronization process from the Control Panel in case they change or re-initialize the Timecode Provider or if synchronization process failed at first due to high wifi traffic.

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

## Timed Data Monitor

The **Timed Data Monitor** is a specialized view in Unreal Engine for monitoring the flow and synchronization of time-stamped data streams. In this view, users can:

* Inspect incoming data from various sources (e.g., motion capture, camera tracking, audio).
* Verify that timecode information is being received and applied correctly.
* Monitor for dropped frames, latency, or synchronization issues.
* Compare timecode from multiple sources to diagnose and resolve discrepancies.
* Calibrate the time offset of the rendering part of Timecode

This tool is essential for troubleshooting and validating the integrity of synchronized workflows such as live streaming.

To access Timed Data Monitor first enable the plugin

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

Open the Timed Data Monitor Tab and observe the Data frames that you receive from the CameraTwin Source (Disable monitoring of the Stage Setup signal). You can see below that the inherent delay of the data being streamed to the Unreal Engine are causing the streams to be out of sync from the presentation Timecode. To achieve in sync presentation you can click the Calibration button or manually edit the ***Global Frame Offset*** value

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

After the calibration of the ***Global Frame Offset*** , in this case the value achieved is 5 frames, the streams are coming in time for the presentation timecode. That means that on average all signals are coming in time within the 5 frames time of 30 fps (5 x 33.33ms = 166.667ms delay).

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

## Timecode Synchronization in Recordings

In CameraTwin, timecode synchronization and embedding timecode information in recordings are critical for several reasons:

* **Frame-Accurate Editing:** Ensures that recorded camera moves, takes, and virtual elements can be matched precisely in post-production.
* **Multi-Device Sync:** Allows footage from multiple devices (e.g., several smartphones, cameras, and Unreal Engine renders) to be aligned perfectly, even if recorded separately.
* **VFX and Compositing:** Facilitates seamless integration of live and virtual elements, as every frame can be matched by its timecode.
* **Troubleshooting:** Makes it easier to identify and resolve timing issues by providing a clear temporal reference in all assets.

Without proper timecode synchronization, even small timing mismatches can lead to significant problems in editing, compositing, and final delivery.


# Composition Setups

This page contains information on how to setup a custom composition setup and detailed information about the example compositions packaged in the plugin

## Overview

A composition in Unreal Engine (UE) is the process of combining multiple visual elements in a single output. Using the Composure plugin, you can layer live camera feeds, CG backgrounds, and effects as needed for your project. CameraTwin integrates with this system, so you can add your CameraTwin camera stream as an input layer in any composition.

We focus on two main categories of composition setups: green/blue screen setups and AR/XR setups. Green or blue screen compositions place your color-keyed real foreground over a virtual background. AR/XR compositions add CG elements into the live camera feed, so digital assets appear within your real environment.

## Getting Started with your Composition Setup

1. You can start by opening the Composure Compositing window by going to the Main menu of UE under the Window → Virtual Production → Composure Compositing or open Window submenu and strat typing "Composure Compositing". You can also dock this window inside your editor if you prefer.\\

   <figure><img src="/files/rIkFi240FyiWJQGz2Z5m" alt=""><figcaption></figcaption></figure>
2. At first, this window will be blank. Add your first composition by right-clicking inside the window and select the option "Create New Comp", this will create your composition in which usually there is a Compositing Element Material Pass where all input layers are composited or blended according to the material logic. You can also add tonemap, post-processing and color grading passes if needed. \\

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

   <figure><img src="/files/jB9Z1Jf3xpgFtDYaxYdE" alt=""><figcaption></figcaption></figure>
3. After creating your composition, add layer elements right-clicking on the composition. Make sure to expand the "ALL CLASSES" section to access predefined layer elements like ***BP\_CT\_InputStreamElement,*** which is the CameraTwin camera stream input and ***BP\_CT\_CG\_Element,*** which is similar to the default CG layer but with the color grading disabled. Color grading is disabled because CameraTwin automatically updates camera parameters of the virtual camera in your scene to match the real camera parameters (i.e. exposure, white balance, tint, ISO). Applying additional color grading on the CG layer would interfere with this automatic color matching feature.\\

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

   <figure><img src="/files/qyXDOq2dNakKiCmWpeT2" alt=""><figcaption></figcaption></figure>
4. Add your desired layer elements to your composition. Start with one ***BP\_CT\_InputStreamElement*** and one ***BP\_CT\_CG\_Element.*** Optionally, group related actors in the Outliner window using a parent-children structure as shown in the image.

   <figure><img src="/files/HRv5vkj8ArSlWYITNvzh" alt="" width="375"><figcaption></figcaption></figure>

   <figure><img src="/files/MEso4e8itO859GWwj0et" alt="" width="375"><figcaption></figcaption></figure>
5. Select the Composition Actor in your Outliner window and assign the appropriate material for your composition. We recommend using one of our ready-to-use materials like the ***M\_CT\_2L\_Composition*** (M = Material, CT = CameraTwin, 2L = 2 Layers), which is simple starting point for blending your color-keyed camera stream over your CG background. Assign the right input elements to the material and your are ready to preview your composition.\\

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

## Green Screen Compositions

:construction:Documentation coming soon :construction:

## AR/XR Compositions

:construction:Documentation coming soon :construction:


# Control Panel

CameraTwin control panel lets the users adjust the recording settings per Source and define globally accessible QuickAction Events.

## Open Control Panel

To open the CameraTwin Control Panel, the user should go to Tools-> CameraTwin Control Panel. A new window will appear with the CameraTwin Control Panel tab which can be docked like similar tabs of the Editor.

{% embed url="<https://www.youtube.com/watch?v=CfKHhWYuDtk>" %}

## Control Panel Tab

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

### Top Level

At the top part of the Control Panel Tab there is a collection of useful Links and at the top right corner a button for the user to manually create a Workstation session if there isn't any or terminate the currently active Workstation session

Collection of Links

* **Dashboard**\
  \&#xNAN;*link to the* [*CameraTwin Dashboard*](https://app.cameratwin.com/)
* **Documentation**\
  \&#xNAN;*link to this* [*Documentation Page*](https://docs.realtwin.org)
* **Open Settings**\
  Unreal Engine Deep link to the Plugin Settings
* (Optional) **New Version!**\
  link to the Unreal Engine latest [Plugin Download Page](/cameratwin/installation/installation-unreal-engine)

<figure><img src="/files/0mlgId3d7rkkeMwP7eZW" alt=""><figcaption></figcaption></figure>

### Recording Events

* **Trigger Record of Sequencer (deprecated)**
* **Trigger Record of Take Recorder**

{% hint style="info" %}
For more details check out the [Recording Events Page](/cameratwin/documentation/unreal-engine-plugin/recording-events)
{% endhint %}

### Source Selection

If there are multiple sources selected the Synchronization, Recording status and Recording Settings Correspond to a single source, the one selected in the dropdown.

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

### Synchronization Status

Right next to the Selected Source dropdown you will find the Synchronization Status for that specific Source\
Possible Statuses:

* No synchronization yet
* Synchronization happened\
  \&#xNAN;*In that case, on mouse hover the detailed synchronization roundtrip will be displayed - roundtrips of < 8 ms are considered exceptional, < 16 ms acceptable*
* Synchronization failed\
  \&#xNAN;*if the synchronization roundtrip is above 16 ms the synchronization step fails*

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

{% hint style="info" %}
For more details check the [Timecode Synchronization page](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup/timecode-synchronization)
{% endhint %}

### Recording Status

The Recording Status can be found right below the Source Selection dropdown and will briefly provide information about the current recording

Possible Statuses

* Idle
* Recording: Frames \<number of received frames> / \<number of expected frames according to time> - Drops \<number of dropped frames>
* Idle | Last Recording: Frames \<number of received frames> / \<number of expected frames according to time> - Drops \<number of dropped frames>

<figure><img src="/files/0PnI4nGmPSTt5sPJZuLR" alt=""><figcaption><p>Recording Status before any recordings</p></figcaption></figure>

<figure><img src="/files/kx3TKEHyfHnGNAwpepsv" alt=""><figcaption><p>Recording Status during recording</p></figcaption></figure>

<figure><img src="/files/MA5TD2bheZCD3qq4cIXl" alt=""><figcaption><p>Recording Status after a recording</p></figcaption></figure>

### Recording Settings

{% content-ref url="/pages/Yt9F9s1nIx5xCkKPuwky" %}
[Recording Settings](/cameratwin/documentation/unreal-engine-plugin/cameratwin-settings/recording-settings)
{% endcontent-ref %}

### Quick Actions Management

{% content-ref url="/pages/rkOsgtCOj8ZY6OA3NI5U" %}
[Quick Actions](/cameratwin/documentation/unreal-engine-plugin/quick-actions)
{% endcontent-ref %}


# Quick Actions

This page contains information about the Quick Actions feature.

## Overview

Quick Actions feature is created to give the users the ability to trigger manually anything in Unreal Engine from the smartphone’s UI. The user needs to define the desired actions in Unreal Engine and bind them to custom events inside of [\*any blueprint\*](#editor-utility-blueprints-restrictio). That way the Quick Actions act as global event triggers that are controlled from the [smartphone's UI](/cameratwin/documentation/mobile-applications/quick-actions-mobile) or the [Control Panel](/cameratwin/documentation/unreal-engine-plugin/control-panel).

#### Editor Utility Blueprints Restriction

{% hint style="warning" %}
Right now the only blueprints that are supported are the Editor Utility Blueprints. The workflow for quick actions is very similar and you can point from the Editor Utility Blueprints to the rest of your blueprints inside the scene. This will be changed in the near future and you will be able to bind Quick Actions in any blueprint
{% endhint %}

## Quick Actions Management

From within the CameraTwin Control Panel, the user can manage all Quick Actions.

### Add new Quick Action

{% embed url="<https://www.youtube.com/watch?v=OJmAONi6Hmo>" %}

### Remove existing Quick Action

{% embed url="<https://www.youtube.com/watch?v=v02XtVlrLrw>" %}

### Rename existing Quick Action

{% embed url="<https://www.youtube.com/watch?v=siOHlKJ4shk>" %}

### Save existing Quick Actions as a Quick Actions Set asset

{% embed url="<https://youtu.be/2Few4hurvxw>" %}

### Load Quick Actions Set asset

{% embed url="<https://www.youtube.com/watch?v=8KhF7EZ4WzE>" %}

## Quick Actions Binding

After the user has defined some Quick Actions, the user can bind any custom event from within any blueprint to specific Quick Actions. To do that, the user can:

1. Inside any Blueprint, press Tab and start typing Bind Quick Action Event
2. After placing the Bind Quick Action Event node
   1. Click and drag with the mouse from the red delegate slot of the node to empty space
   2. Type Custom Event
   3. Place the custom event node and rename it according to the action that will be triggered, this is not related to the name of the Quick Action.
   4. In the Bind Quick Action Event node, there is drop down where the user can select the Quick Action that will trigger the custom event
3. Finally trigger the Bind Quick Action Event by another custom event or any other way that fits the project’s needs

{% embed url="<https://youtu.be/SlVYu8ARrxo>" %}

## Trigger Quick Actions in the app

1. Setup quick actions in Unreal Engine (see above).
2. Connect the phone as CameraTwin source in Unreal Engine
3. Make quick actions visible in the main screen by pressing the <img src="https://lh7-us.googleusercontent.com/-yElOTInQWWuluXsYUDRvt6TpfPq-kbp-L6TJf8tH_H93wdYNI3LBhPXqdI2i0ZdnWXjjaNiipR-ea3JOHJUzi_4I3tDrn4I4A3KK5xOA-29yK48sIKydK22oEX_DGPTNIPrpIXMMBTspH5ybVy9PPI" alt="" data-size="line"> in the options drawer.

After the binding of the events happens in Unreal Engine the Quick Action buttons are shown on the screen of the phone that is connected. The Quick Action buttons are hidden by default, to enable them use the appropriate toggle <img src="https://lh7-us.googleusercontent.com/-yElOTInQWWuluXsYUDRvt6TpfPq-kbp-L6TJf8tH_H93wdYNI3LBhPXqdI2i0ZdnWXjjaNiipR-ea3JOHJUzi_4I3tDrn4I4A3KK5xOA-29yK48sIKydK22oEX_DGPTNIPrpIXMMBTspH5ybVy9PPI" alt="" data-size="line"> from the drawer. After that when a Quick Action button is pressed on the phone the corresponding event will be triggered in Unreal Engine.

Note that the quick action buttons can be rearranged by holding and then dragging to a new position (possible spots will be indicated).

{% embed url="<https://youtu.be/1nMDsz98C8k>" %}

Now that you have a better understanding of CameraTwin's capabilities, you can your


# CameraTwin Settings

The CameraTwin plugin provides a dedicated section in the Unreal Engine Project Settings, allowing you to configure core plugin behavior and optimize your workflow. This page describes the available settings in the **Plugins - CameraTwin** section.\
\
{PLACEHOLDER: Screenshot of CameraTwin plugin settings panel}

## CameraTwin Settings Overview <a href="#cameratwin-settings-overview" id="cameratwin-settings-overview"></a>

The settings are grouped for clarity and cover API configuration, recorder defaults, and asset management. Adjusting these parameters allows you to tailor CameraTwin’s performance and integration to your project’s requirements.

### 1. API Key

* **API Key**\
  The API key is required for the plugin to be able to connect to any source. You can get your API key from the [dashboard here](https://app.cameratwin.com/dashboard/api-keys).

{% hint style="info" %}
For more details about API Key Configuartion check out [here](/cameratwin/documentation/unreal-engine-plugin/api-key-configuration)
{% endhint %}

### 2. Receiver Default Settings

* **Maximum Buffer Size**\
  Maximum number of frames the buffer should store before it starts dropping frames to maintain memory usage. High values may result in increased memory usage in some cases.

### 3. Recorder Default Settings

* **Recorder Threads**\
  Specifies how many threads are allocated for recording tasks, allowing you to optimize for your hardware. You need a high enough number of threads to be able to store every frame that is received and you should not be limited to just the physical core count of your machine, but it also depends on your storage throughput. For more details check in the [CameraTwin Recorder Page](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder).
* **Recorder Tasks Max Queue**\
  Sets the maximum number of queued recording tasks, useful for high-throughput or multi-source environments. For more details check in the [CameraTwin Recorder Page](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder).
* Recorder Settings\
  These settings set the defaults for each recording. For more details check in the [Recording Settings Page](/cameratwin/documentation/unreal-engine-plugin/cameratwin-settings/recording-settings)\
  \\

  <figure><img src="/files/MS2zRoyS2fihQVtBLXFV" alt="" width="563"><figcaption></figcaption></figure>

### 4. Recording Asset

* **Default Recording Actor Blueprint**\
  Specifies the default camera actor blueprint used when creating new sequences from a Recording Asset. You can change this to any compatible blueprint to match your production needs.

<figure><img src="/files/SLvshltFmLI94Tgrw3tg" alt="" width="563"><figcaption></figcaption></figure>

> To change the default camera actor blueprint, select the desired blueprint from the dropdown menu in the “Default Recording Actor Blueprint” field. This blueprint will be chosen whenever a new sequence is generated from a Recording Asset.


# Recording Settings

This page contains information about the Recording settings that the users can adjust to fit their needs.

## Recording Feature

CameraTwin lets you record the incoming stream of every CameraTwin Source. The user can adjust the recording settings to fit the needs of the project.

### Recording Settings Defaults

You can find the Recording settings defaults in the Project Settings -> CameraTwin -> Recorder Default Settings. The default settings are set as initial settings for every newly created CameraTwin Source.

<figure><img src="/files/MS2zRoyS2fihQVtBLXFV" alt=""><figcaption><p>Recording Settings defaults in the Project Settings</p></figcaption></figure>

### Fields of the Recording Settings

Within the control panel the user can find the following settings related to recording the received video and metadata streams.

<figure><img src="/files/awPp5blKjVjqwQ9MaTfF" alt=""><figcaption><p>Recording Settings in the Control Panel</p></figcaption></figure>

#### Fields

1. **Recording Enabled**: toggle on/off the recording in UE.
2. **Folder Path**: the location that the recording files will be stored both inside the Content Folder and inside the Saved folder of the project. The CameraTwin Recording and the SoundWave Assets are stored in the Content folder while the Image and Metadata sequence files as well as the audio file are stored inside the same subfolder in the Saved folder of the project.
3. **Asset Name**: the multiple part name template that will be used for the [Recording Asset](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder/cameratwin-recording-asset) and the recording folder. There is also a result preview of the current selections below these inputs
   1. **Static Part**: This will be included as is. Suitable for entering the Project or scene name here. (It should not include space or special characters apart from '\_' and '-' )
   2. **Include Source Name**: Toggle option to include the respective source name in the template, this is especially convenient for Multi-Camera setups
   3. **Dynamic Part**: Optionally to include a dynamic suffix based on
      1. **None**: this will leave the dynamic part empty
      2. **DateTime**: this will add a suffix based on the date and time at the start of the recording with the following format Day-Month-Year--Hours-Minutes-Seconds e.g. 10-10-2024--10-10-10
      3. **Take**: this will add a "Take\_#" suffix to the recording name with the number of the take starting at 1 and ascending automatically with subsequent recordings. The take number resets automatically if the rest of the name is changed.
4. **Auto Save:** toggle auto save of the Recording Asset or not
5. **Image Format:** The file type that the image sequence files will be encoded and stored.
6. **Est. Disk Bandwidth:** According to the selected image format there is an estimation of the required disk write bandwidth. This is calculated based on FHD resolution and at 30 FPS for 4K it will be about 4 times more.
7. **Image Quality:** It’s only relevant for the JPEG image format with 100 being the greatest quality, but resulting in bigger files while lower values reduce the image quality but significantly reduce the file sizes.


# Recording Events

This page contains information about all the Recording Events that users can enable and will be triggered when they tap the record button on their phone.

## Record Events

A ***Record Event*** is an event that will be triggered as soon as the smartphone's record button is pressed and the recording has started. Apart from our own [Recorder](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder), you can set several other events including on that you can use in blueprints and attach to any custom workflow you desire.

### Take Recorder Event

The Take Recorder Event can be enabled/disabled in the [Control Panel](/cameratwin/documentation/unreal-engine-plugin/control-panel) and it will trigger the Take Recorder's record function.

<figure><img src="/files/M9c1ACilO6rB2Z2AvkcH" alt=""><figcaption><p>Take Recorder Signal in the CameraTwin Control Panel</p></figcaption></figure>

In order for Take Recorder's record to work as expected you should first set the actors and parameters you want to record with Take Recorder. It will then create a new Sequence with the actors and channels for all the parameters changing in the sequence.\
An important note for accurate results with CameraTwin is to disable the "Reduce Keys" option.

<figure><img src="/files/EFQDC1VcigV8O79kjD1y" alt=""><figcaption><p>Take Recorder Settings</p></figcaption></figure>

You can reduce the countdown of the take recorder to 0.0s in order to start recording as soon as possible. Toggle on Take Recorder Settings at the top right corner of the window and scroll down to find the ***Countdown*** field and set it to 0.0s.

<figure><img src="/files/VbLnaPvTpKPfnoNEouiM" alt=""><figcaption><p>Take Recorder Settings - Countdown</p></figcaption></figure>

{% hint style="info" %}
Note that Take Recorder has a slight delay from the record trigger up until it starts recording even with the Countdown to 0.0s
{% endhint %}

### Sequencer Record Event (deprecated in UE)

The Sequencer Record Event is based on a deprecated function of Unreal Engine that was replaced from Take Recorder. It is included for the time being to offer more options to you, but we recommend to avoid it and better use Take Recorder Event.

This event will only emulate the press of the Sequencer record button, so it's your responsibility to prepare a Sequence and select the Camera Actor inside this sequence before you hit the record button.

<figure><img src="/files/43gfFZOPjAAq3UOoWRXc" alt=""><figcaption><p>Control Panel - Sequencer Record Event</p></figcaption></figure>

General steps to follow:

1. Create a Sequence
   1. Set it at 30 fps
   2. Set the duration of your sequence according to the length required from your shot, by changing the end time
2. Add your Camera Actor into the sequence and any other actor you would like to include, Animations etc.
   1. Add the channels for each parameter you want to record.
3. Select the Camera Actor and keep it selected until you hit record with the smartphone.

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

{% hint style="info" %}
Sequencer record also has a Countdown by default you can change that by going to the

**Editor Preferences -> Content Editors -> Take Recorder -> User Settings -> Countdown**

**and edit its value to 0.0s**
{% endhint %}

### Blueprint Record Event

The Blueprint Record Event unlocks all other possible functionalities you may need for your production via the power of blueprints. You can setup these events on any blueprint of your choice, but you need to be able to bind those by using another event, either a custom one that you can expose to the editor and manually press or by attaching an already existing event like the ***Event BeginPlay*** of an Actor or the ***Event On Created*** of a Sequence Director blueprint.

You can set the Record events following these steps:

1. Open your Blueprint
2. Right-click and search for "Bind Recording Events", you will find it under the CameraTwin category
3. Create 2 custom events, name them "Start Recording" and "Stop Recording" or something similar
4. Drag the delegate reference (red rectangle) output of you custom events to the delegate reference (red rectangle) input of the "Bind Recording Events" node
5. Make sure to actually call the "Bind Recording Events" node by another thread of execution
6. Implement your workflows triggered by the 2 custom events you just created. These will be triggered when you start and stop your recording form the smartphone respectively.

Here is an example blueprint setup:

<figure><img src="/files/T8bdpeNFihOOyjBiuoTr" alt=""><figcaption><p>Blueprint Record Signal example setup</p></figcaption></figure>

{% hint style="warning" %}
Right now the only blueprints that are supported are the Editor Utility Blueprints. This will be changed in the near future and you will be able to bind the Recording Events in any blueprint
{% endhint %}


# CameraTwin Recorder

This page contains information about our recording solution that records the receiving camera stream powered by the Unreal Engine capabilities.

## CameraTwin Recorder

In the current version of the recorder there is no UI to show the progress of the recording, the recorder is just a background process that collects and stores in files all the video frames and related metadata with their respective timestamps. You can adjust some parameters of your recording by changing the [Recording Settings](/cameratwin/documentation/unreal-engine-plugin/cameratwin-settings/recording-settings). The recorder is multithreaded and you can set the number of threads that it will use and the maximum amount of frames its going to cache by going to\
\&#xNAN;***`Project Settings -> CameraTwin -> Recorder Default Settings`***\
and change the ***Recorder Threads*** and the ***Recorder Tasks Max Queue***

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

{% hint style="info" %}
Don't be afraid to set the ***Recorder Threads*** to a number more than your physical cores as they are used in IO operations and a single Physical core can handle multiple such threads. That said be careful to select a sensible number for your machine inside the range of 0.5 - 3x your pysical/logical cores.

The ***Recorder Tasks Max Queue*** will only affect your ram usage and you can think of it as the maximum headroom in seconds that the recorder should cache in order to catch up with the recording, meaning at 30fps if you want 2 seconds headroom you should set this to

2 x 30 = 60.
{% endhint %}

\
The recorder is tightly coupled with the CameraTwin Source, so if you have multiple cameras connected each one will have its own recorder and that can affect the performance if multiple cameras are recorded at the same time depending on the computing power of your machine. You might need to adjust the ***Recorder Threads*** and the ***Recorder Tasks Max Queue settings in that case.***

### Recording Asset

After each recording a new Recording Asset is created inside the Folder that is set in the Recording Settings. For more details, check the [CameraTwin Recording Asset Page](/cameratwin/documentation/unreal-engine-plugin/cameratwin-recorder/cameratwin-recording-asset).


# CameraTwin Recording Asset

This page contains information about the CameraTwin Recording asset, its data and its usage in Sequences.

## Overview <a href="#overview" id="overview"></a>

The CameraTwin Recording Asset is a dedicated asset type developed to streamline the transition from virtual production capture to post-production within Unreal Engine. While it shares similarities with standard Image Sequence assets, such as referencing the image files for each camera frame, it extends functionality by also maintaining a direct link to per-frame metadata, the recorded audio file, and the corresponding Sound Wave asset. In addition, the Recording Asset stores key technical information, including the total number of frames, capture framerate, resolution, and the camera’s origin at the time of recording.\
This comprehensive approach enables users to efficiently review, organize, and integrate their recorded shots into Unreal Engine sequences, ensuring a smooth and reliable workflow from shooting on set to editing in post.

## Recording Asset Editor <a href="#recording-asset-editor" id="recording-asset-editor"></a>

The Recording Asset Editor is your central hub for inspecting and managing all aspects of a recording. When you open a Recording Asset, you are presented with a clear layout that includes a P**review Viewport** on the left and two detail panels on the right: the **Details** Panel for general asset information and the **Media Details** Panel for media-specific information. This organized interface ensures that everything you need to know about your recording, such as camera parameters, audio references, and storage locations, is available at a glance, making it easy to verify and utilize your captured content in your workflow.

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

### Information Available in the Recording Asset Editor <a href="#information-available-in-the-recording-asset-edito" id="information-available-in-the-recording-asset-edito"></a>

The editor is divided into several panels, each providing access to specific information and controls:

1. **Preview Viewport**\
   This viewport is the standard media viewport of Unreal Engine where you can open the media and playback using the control buttons on the bottom\\

   <figure><img src="/files/pIbgeGj1KMaYmCAUb5Vc" alt="" width="563"><figcaption></figcaption></figure>
2. **Media Details Panel**\
   This panel summarizes the technical characteristics of your recording’s media files. Here you can quickly check:

   * **Format:** The image format used for the sequence (e.g., JPEG, PNG).
   * **Frame Rate:** The framerate at which frames were captured (e.g., 30 fps).
   * **Frame Count:** The total number of frames in the recording.
   * **Dropped Frames:** The number of frames dropped during capture (if any).
   * **Consecutive Dropped Frames:** The maximum number of frames that were dropped in a row
   * **Duration:** The total duration of the recording.
   * **Resolution:** The captured resolution (e.g., 1280x720).
   * **Resource Size:** The disk space used by the asset.\\

   <figure><img src="/files/O5njYB656LpJU5TITxcD" alt="" width="563"><figcaption></figcaption></figure>
3. **Details Panel**\
   The Details Panel displays comprehensive metadata and configuration options for your recording asset. Here you will find:

   * **Version:** The version of the recording asset
   * **Metadata File:** Location of the metadata file.
   * **Timestamp & Date/Time:** When the recording was captured.
   * **Recorder Settings:** Settings used for the recording session.
   * **Camera Characteristics:** Camera-specific values that are constant
     * Camera Intrinsics
     * Distortion Coefficients <sup>*\*they might be zero if not available*</sup>
     * Sensor Size in millimeters
     * Focus Distance Calibration
       * 1 if it's calibrated, 0 if it's not
   * **Camera Parent Transform:** Transform of the camera's parent actor at the start of the recording.
   * **Recording Files Root:** The root folder that contains all media and metadata of the recording asset
   * **Audio :** Asset reference to the SondWave Asset

   <figure><img src="/files/TJObKm5R4n4IAlWCG1l4" alt="" width="563"><figcaption></figcaption></figure>

   \\

   <figure><img src="/files/AaLRxntGygZOMtEsd15B" alt="" width="563"><figcaption></figcaption></figure>

## How to Use the Recording Asset in Sequences <a href="#how-to-use-the-recording-asset-in-sequences" id="how-to-use-the-recording-asset-in-sequences"></a>

The Recording Asset is designed for seamless integration into your production pipeline, supporting two primary workflows: applying the asset to an existing sequence or creating a new sequence directly from the asset. Both methods ensure that all camera, media, and timing information is synchronized and ready for efficient review or further editing.

### Applying the Recording Asset to an Existing Sequence <a href="#applying-the-recording-asset-to-an-existing-sequen" id="applying-the-recording-asset-to-an-existing-sequen"></a>

You can apply a Recording Asset to any existing sequence that already contains a camera actor. When this action is performed, the system automatically sets the camera’s parent transform to match its position at the start of the recording. For each frame, transform keys and all captured camera parameters, such as white balance, tint, depth of field, and focus distance, are inserted. The sequence is further updated with a camera cut track, a media track for previewing the recording, and an audio track, all of which are aligned using the recording’s timecode information. This workflow is ideal for integrating captured shots within the context of your ongoing project.

<figure><img src="/files/fceGRYb8Iyw5SF1Hy7mJ" alt="" width="563"><figcaption></figcaption></figure>

{% embed url="<https://youtu.be/l1ZJHq2merc>" %}

{% embed url="<https://youtu.be/iHkK6OjDoAk>" %}

### Creating a New Sequence from a Recording Asset <a href="#creating-a-new-sequence-from-a-recording-asset" id="creating-a-new-sequence-from-a-recording-asset"></a>

Alternatively, you can generate a brand new sequence from a Recording Asset using a camera actor blueprint of your choice. This process creates a sequence with all the necessary tracks and keys: the camera actor with its parent transform, per-frame tracking and camera parameter keys, a camera cut track, a media track for composure playback, and an audio track. All tracks are precisely aligned using the captured timecode, ensuring frame-accurate playback and editing. This workflow is particularly useful for rapid review or when building new sequences from scratch based on your recorded material.

<figure><img src="/files/2QdmEUVnqvZ6LMD04O7C" alt="" width="563"><figcaption></figcaption></figure>

You can also customize which camera actor blueprint is used when creating a new sequence. The default blueprint can be changed to any compatible camera actor blueprint to fit your specific production needs. For more information on configuring the default camera actor blueprint, see the related settings documentation.

<figure><img src="/files/jQHiakwTXIc6woPpMihv" alt="" width="563"><figcaption></figcaption></figure>

{% embed url="<https://youtu.be/IuHJFfcwH0Y>" %}

{% embed url="<https://youtu.be/mmGgqMTK3IY>" %}


# Scene Capture Components

This page contains information about the Scene Capture Components of Unreal Engine composition and the ones that are placed inside the level Actors and how CameraTwin supports both.

## Scene Capture Component

The Scene Capture Component of Unreal Engine is used to capture the scene similar to a virtual Camera and render that to texture that can be later used in Composition layers or anywhere else like a normal texture. There are two use cases based on where this component can be attached, It can be attached to

1. A CG Layer or a CG Matte of the Composure system
2. An Actor inside the Level

CameraTwin supports both use cases as they have some differences in terms of rendering result depending on your rendering settings and features.

### Composition Scene Capture Component

The Scene Capture Component is already attached to the CG Layer and CG Matte Composition Layer Element templates, requiring no further setup for the user. You can find an example use case in our ***Composition Example*** Level in our Plugin's Content Folder.

<figure><img src="/files/iY591V8UHz6WpdUUGfMc" alt=""><figcaption><p>Composition Layer - Scene Capture Component</p></figcaption></figure>

{% hint style="info" %}
We have observed that the Scene Capture Component attached to a Composition Layer Element results in different rendering output compared to the Camera Actor Preview and the Viewport. These differences are mostly observed when Temporal rendering features are in place and/or Lumen , Ray tracing features. In that case we suggest you try to use the Level Actor Scene Capture Component approach since it handles all rendering features better.
{% endhint %}

### Level Actor Scene Capture Component

The Scene Capture Component attached to a Level Actor a most probably the Camera Actor is another possible setup.

<figure><img src="/files/xvx4AOoYcjFAjatewAXg" alt="" width="504"><figcaption><p>Level Actor - Scene Capture Component</p></figcaption></figure>

In that case in order to use the Scene Capture with the Composure elements you need to first assign a Render Target Texture to the Scene Capture

<figure><img src="/files/53KhxEogqrW5GvpuRyIw" alt="" width="498"><figcaption><p>Render Target Texture of Scene Capture</p></figcaption></figure>

and use the same Render Target Texture as input texture in the Composition

<figure><img src="/files/AUQbi2G1LwT7BV37znHQ" alt="" width="495"><figcaption><p>Render Target Texture as input in the Composition</p></figcaption></figure>


# Camera Parameters Manager

This page contains information about the Camera Parameters Manager and provides some example use cases.

## Camera Parameters Manager in the Unreal Engine

The Camera Parameters Manager feature allows the control of all of the [Advanced Camera Controls ](/cameratwin/documentation/mobile-applications/advanced-camera-controls)remotely from the Unreal Engine Editor. This feature offers flexibility to the production team by allowing both the Unreal Engine operator and the camera-man to adjust these settings even simultaneously\*. With this feature you can also leverage the power of Sequencer, as you can direct all of your camera parameters changes and transitions into a Sequence and benefit from an accurate and repeatable shooting experience alleviating the stress of performance from the crew members to achieve the perfect shot.

Apart from the flexibility and the Sequencer use-case this feature opens up new opportunities as it can be combined with several controllers, automated or not. The list of controllers can be expanded with new controllers that are designed to cover specific needs. Several controllers can be combined, as long as they are not adjusting the same parameters, in order to provide a flexible and expandable framework to cover every production need.

### List of the Controllers

Here is a list of our Camera Parameters Controllers:

* [CG Focus Controller](/cameratwin/documentation/unreal-engine-plugin/camera-parameters-manager/cg-focus-controller)
* [Advanced Focus Controller](/cameratwin/documentation/unreal-engine-plugin/camera-parameters-manager/advanced-focus-controller) (Coming Soon...)


# CG Focus Controller

This page contains information about the CG Focus Controller of the Camera Parameters Manager feature.

## Controller Description

The CG Focus Controller is a controller that adjusts the desired focus distance of the smartphone's camera according to the distance between the Virtual Camera Actor and the Virtual Object of focus.

### Use Case

The CG Focus Controller was developed to tackle the problem of setting the camera focus distance to match the distance of CG/virtual objects. Since with the CameraTwin application the smartphone's camera parameters are matched with the Virtual CineCamera Actor, that means that the focus distance of both is set based on the focus settings of the smartphone.\
In the case of automatic focus the smartphone is estimating the actual distance of the objects in view and it adjusts the lenses to focus on that distance. In the case of manual focus the phone is focusing on that specific distance. In both cases the Virtual objects, like an AR character, are not perfectly in focus throughout the shoot as the camera is moving. For that reason the CG Focus controller was developed in order to automatically calculate the distance between the Virtual Camera Actor and the Virtual Character or Actor that needs to be in focus. This distance is then set as the desired focus distance to the phone and it dynamically changes on every frame.

## Setup and Usage

### Create the Controller

To create the CG Focus Controller you can either go to the Camera Parameters Manager of your desired Camera Actor

<figure><img src="/files/rCr4PiFP8GC42z9JHP98" alt="" width="501"><figcaption></figcaption></figure>

Add a new Controller in the list of the Camera Controllers

<figure><img src="/files/3uRQYMYRWCYBlxsnNzHp" alt="" width="498"><figcaption></figcaption></figure>

Create a new CG Focus Controller Asset from the dropdown

<figure><img src="/files/A3p2nFNhuswikrTfVkcD" alt="" width="498"><figcaption></figcaption></figure>

Or alternatively right click in content browser and start typing "CG Focus Camera Parameters Controller"

### Set the Actor of Focus

Open the CG Focus Controller Asset and set the "Actor to Focus" field with the Actor you desire to focus on

<figure><img src="/files/knOUmZg0m4uMY1R8Lpto" alt="" width="563"><figcaption></figcaption></figure>

### Usage

Make sure that the phone is set to "Remote" Mode for the Focus-Zoom pair, you can find more information about that [here](/cameratwin/documentation/mobile-applications/advanced-camera-controls#camera-control-modes).

After that you are ready to shoot your AR shot with your CG character in focus!

## Controller of:

{% content-ref url="/pages/eFaengqiCk5bdtHgTdDO" %}
[Camera Parameters Manager](/cameratwin/documentation/unreal-engine-plugin/camera-parameters-manager)
{% endcontent-ref %}


# 🚧Advanced Focus Controller 🔜

## 🚧 Under Construction - Comming Soon 🔜


# nDisplay Setup

This page describes the steps needed for the nDisplay Setup

## nDisplay Configuration

Create your nDisplay configuration with the appropriate render node(s) for your hardware setup. For more information please check out the related documentation from Epic, [nDisplay Quick Start](https://dev.epicgames.com/documentation/en-us/unreal-engine/ndisplay-quick-start-for-unreal-engine)

1. Add an ICVFX camera component in your nDisplay setup if you haven't already<br>

   <figure><img src="/files/mCQiXOnOt1YaOcoSplBQ" alt=""><figcaption></figcaption></figure>
2. Select the ICVFX Camera and find the "Cine Camera Actor" reference in the Details Panel<br>

   <figure><img src="/files/GNRT9KhKyUQ0lKoRfb2x" alt=""><figcaption></figcaption></figure>
3. Select the CT Camera Actor of your level. Note: The level containing your CT Camera Actor must be loaded for it to appear in the dropdown.<br>

   <figure><img src="/files/8rGJJ6idBFeP9njNyXmy" alt=""><figcaption></figcaption></figure>

## LiveLink setup for the nDisplay Nodes

Assuming you have the nDisplay configuration ready and you have added it in your desired level, there are 2 more steps before you can launch the nDisplay nodes

#### Step 1:

Connect the CameraTwin source via LiveLink and save the LiveLink setup as preset&#x20;

{% hint style="warning" %}
You will need to update the LiveLink preset on each session, since it's not serialized properly right now.  [Changelog Known Issues](/cameratwin/installation/installation-unreal-engine/changelog#known-issues)
{% endhint %}

<figure><img src="/files/9c0CBGpLUW6ypz2ax0J1" alt=""><figcaption></figcaption></figure>

#### Step 2:

In Project Settings under the LiveLink category you can find the "Default Live Link Preset"—set this to your preset. This will automatically activate the preset during the launch of nDisplay nodes

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

{% hint style="info" %}
We recommend to perform a quick test of the nDisplay setup using the nDisplay Launch to first ensure that the configuration is working on the same machine.
{% endhint %}

{% hint style="info" %}
Please make sure that all rendering nodes are within the same network and the the CameraTwin Soruce is reachable from all nDisplay nodes.
{% endhint %}


# Stage Setup

This page contains information about "Stage Setup" feature and easy-to-follow steps to setup your own stage.

## Stage Setup

The application allows the user to set up a representation of the stage boundaries, primarily useful for aligning the virtual scene in Unreal Engine.

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

Controls:

<img src="https://lh7-us.googleusercontent.com/orxexJ13oLgavNfcJz0TG_YlPQD2VUvSOjIkY-iHSil9Be8nK_OsaVI4f-c55HrWszHg3TSkAiJy3LnlWRHJDuZj0OtMs7d6pMCtZRq9q2Qyvr7rIkoIeaC1IWeLjNOPCwzLJBAYEffjZb-yf5Ozqrs" alt="" data-size="line">: Cancel stage editing and return to the main screen

<img src="https://lh7-us.googleusercontent.com/C1aVirtRNcL76ou5GO9OOPs8pi6lGBkMs4U1ggGkRamhe0Wm6Ue5f-bquuDO4sRp6HIdfpnxv89m2YYom-c95xv19S88qzPdWttjgWoDXbzCK8eoGNNtIcGEtpkF1Rszj9Kd2iqDHJ34X_xXrfenERI" alt="" data-size="line">: Delete last placed point

<img src="https://lh7-us.googleusercontent.com/ZOIRFdT0HBh0ofoY3D35kKUHlVeOPY7k5V1Sg4Mabzc-vB4JzlsuPtHqL121nPM0D9oOshumYALu8qFDXnCoeVLKcJXKigiiHGS-aKpT-mauaC4xRw2IX9LNowt9JymrbCB6gaAxEL6pvWHIEufFRqA" alt="" data-size="line">: Accept current stage and return to the main screen

### How to setup a stage in the app

**Steps**:

1. Enter stage setup mode from the main screen by pressing the <img src="https://lh7-us.googleusercontent.com/p23eHQclLiszLo1Iw5ex_QkKlx-bG5uhqdJ1HlrHu2BkqOi06Cxn-b87taE1-WQ7DHMdEbH8tXppvdcz6_7S5mVC26CxnKKstk2uIic0DBvTluhA0PpSOjKjSOgAQ1E7krL5v-Rz48UV9_tbCfX6a94" alt="" data-size="line"> button in the main drawer.
2. \[Optional] Move the device around until surfaces are recognized and displayed.
3. Point the target marker at the center of the screen over the location of the first point to be placed.
4. Tap anywhere on the screen to place the point.
5. Repeat steps 3-4 until at least 3 points have been added.
6. Press the <img src="https://lh7-us.googleusercontent.com/TbkdZp-DseZECbxc3MXrChqlKFD_R7I5YvD0s8HTs0oUzmn_OjrCycWqUDam7-hDAC9K1UTbi9TYrrdf5BNRXcKz0scrHywZVxg4F--JmUQLSe-4IwNzeEqaS6nzm5xx1WKtdkF4Zd2KgOTSug9gCWs" alt="" data-size="line"> button to accept the current stage.

At any point, the <img src="https://lh7-us.googleusercontent.com/xjIgSXhidaIS4Trjy9Cn47RhtGwCQmr0TsnhxEOaZztML2cRGLhP4-6T_kc02pfSeSALxhPPD0qv-kLWCqWt62jq1GcQuu313QUGmXeLv3a4epKHGjLqaR1TBbcK7cwleJYNcBqgBxQ0cZhdi56TR9s" alt="" data-size="line"> button can be used to remove the last placed point. Additionally, the <img src="https://lh7-us.googleusercontent.com/ihdVEZ4pjjBo8QSnqowP0qCUwGQAOuZo9MCBm5id7bDg1RcU3Raf7qDHtQctlOJEVRi7Vp0rVHnoNIugwFbx6yytFY7gnsJDJ8yOmGT50emRwFhGndUM_58PiGO5G9AcbUJw8hDCmGOVLxbDWjpv3xg" alt="" data-size="line"> button can be pressed to cancel the input and return to the previously set stage (if any). Finally, pressing the <img src="https://lh7-us.googleusercontent.com/TbkdZp-DseZECbxc3MXrChqlKFD_R7I5YvD0s8HTs0oUzmn_OjrCycWqUDam7-hDAC9K1UTbi9TYrrdf5BNRXcKz0scrHywZVxg4F--JmUQLSe-4IwNzeEqaS6nzm5xx1WKtdkF4Zd2KgOTSug9gCWs" alt="" data-size="line"> button with fewer than 3 points placed will clear the stage entirely.

### Stage Options in Unreal Engine

After the stage setup in the mobile application, the parameters of the stage are transmitted to Unreal Engine and the BP\_CT\_CameraActor renders the stage outline in a bright green color.

{% embed url="<https://www.youtube.com/watch?v=ePdF_NCLIbw>" %}

In the CameraTwinStage component there are the following parameters:

* Snap Parent to Ground ([video](https://www.youtube.com/watch?v=40J6wgPp7eQ))
  * This option allows for easily setting the camera at the right level as it snaps the physical stage level to the virtual ground level, lifting the camera to the right height. This is enabled by default and can be disabled to move the Camera Actor freely.
* Ground Level ([video](https://www.youtube.com/watch?v=nUfzpMQTiLo))
  * This parameter is used to add an offset in cm for the ground level height. Default is 0 cm offset


# Multi-Camera Setup

This page contains information about multi-camera support feature and easy-to-follow steps in order to create your own multi-camera setup

## Select Unique Source Names

When you open the mobile CameraTwin application you will find an edit section pre-filled with your device model. If you have multiple devices with the same model name (i.e. ***iPhone 13 Pro***) then you can try editing those to add a unique number or name (i.e. ***iPhone 13 Pro 1*** or ***iPhone 13 Pro Main***).

| Mobile Startup iOS               | Mobile Startup Android           |
| -------------------------------- | -------------------------------- |
| ![](/files/yZByLOWMGVmiMMZYYcCD) | ![](/files/eeprGmsP6EXqlHTTNuGY) |

This is important as the device name is included in the LiveLink Source name and subjects so the LiveLink system of Unreal Engine can discriminate which Pose subject is coming from which phone and it will make it easier for you to setup your scene as well.

## Add Multiple CameraTwin Sources

For each phone you can follow the regular steps to add it as a CameraTwin LiveLink Source in Unreal Engine. You can find these instructions [here](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup).

Make sure that each Source's set of Subjects is applied to different Camera Actor, you can rename the Actors based on the Source you want to apply to each one to make it easier for you to place them later on where you need them.

## Stage Setup and Location Alignment

As of now the multi-camera feature supports all phones to be connected to Unreal Engine at the same time and all information to be streamed and distributed to all appropriate Actors.\
That said the smartphones are not communicating with each other and the CameraTwin instances are unaware of each other acting as standalone instances. They are not sharing infrormation about their position or their stage setup.\
We are planning to explore the option to add such capabilities like sharing the same instance of stage on multiple phones and having the "perfect alignment" in Unreal Engine. Until then the alignment process is manual.

If you need to align your camera positions and share the same reference point / origin of the world, you can follow these steps:

1. Select a real point of reference that exists on your stage.\
   It could be based on :
   1. the outline of a prop
   2. the outline of your strictly defined stage
   3. a specific pattern of your floor
   4. taped markers on your floor.
2. For every CameraTwin smartphone setup the same stage as accurately as possible based on your selected object/marker mentioned above.
3. Inside the Unreal Engine move all Camera Actors in way that it will align the positions and orientation of all stages.

{% hint style="info" %}
If you need help to learn how to setup your stage check our instruction [here](/cameratwin/documentation/stage-setup).
{% endhint %}


# Tutorials

This page provides practical guides, step-by-step tutorials, and insightful tips designed to help both beginners and advanced users with VP workflows you can achieve using CameraTwin

### CameraTwin Video Tutorial Series

<table data-card-size="large" data-view="cards" data-full-width="false"><thead><tr><th></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-type="content-ref"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>Start Virtual Productions in Unreal Engine with just your smartphone 🎥</td><td></td><td></td><td><a href="/files/dwvYOerbcUcxXMloepBA">/files/dwvYOerbcUcxXMloepBA</a></td><td><a href="https://youtu.be/NtcKTjgs-Hg?si=x3k2h4Afnfxs5z9w">https://youtu.be/NtcKTjgs-Hg?si=x3k2h4Afnfxs5z9w</a></td><td><a href="https://youtu.be/0r7hhMgaIrE">https://youtu.be/0r7hhMgaIrE</a></td></tr></tbody></table>

## Examples

### Typical 2 Layer Composition Setup

This is a common setup of a 2 layer composition. The first layer has the Camera Input stream which is masked by chroma-keying and is rendered on top of the second layer, the CG layer, which renders the virtual world based on the Camera Component of BP\_CT\_CameraActor. While this example focuses on a 2 layer composition, you can create compositions with multiple layers by adding more layers and altering the Main Composition material to support them.\\

**Steps:**

1. Add a BP\_CT\_CameraActor to your Level [using QuickPlace](https://www.youtube.com/watch?v=KBDF1_vomok\&ab_channel=RealTwin) or [from the Plugin's Content Folder](https://www.youtube.com/watch?v=wHLrAkhDNU8\&ab_channel=RealTwin)
2. Go to Window and search for Composure ([video](https://www.youtube.com/watch?v=Rt4nm4wdb9Y\&ab_channel=RealTwin))
3. Right-click inside the Composure window and Create New Comp ([video](https://www.youtube.com/watch?v=CCW0L1kpdZA))
   1. Open ALL CLASSES in the pop up window
   2. Search and select the BP\_CT\_2L\_Composition
4. Right-click on the Composition you just created ([video](https://www.youtube.com/watch?v=f4rhmwfJMX8))
   1. Select the Add Layer Element
   2. Open ALL CLASSES in the pop up window
   3. Search and select the BP\_CT\_InputStreamElement
5. Right-click again on the Composition ([video](https://www.youtube.com/watch?v=WYsrM2uYGIA))
   1. Select the Add Layer Element
   2. Select the common CG Layer
6. Make sure that inside the Transform Passes of the composition under the TransfromPass\_0->Input Elements ([video](https://www.youtube.com/watch?v=FeqF7YOsiXU)) :
   1. The media label has the name of the input stream composition layer (default: layer\_element1)
   2. The cg label has the name of the CG Layer (default: cg\_element1)

The setup explained above can also be found in the Plugin’s Content folder and specifically in the level Examples/Composition Example.

### Plane - Static Mesh Setup

An alternative approach, to the composition setup, would be to add a Plane or any StaticMesh Actor and use it as a projection plane or surface for the incoming video stream. For simplicity the steps below will assume that a Plane is used as the projection surface.\\

**Steps:**

1. Add a BP\_CT\_CameraActor to your Level [using QuickPlace](https://www.youtube.com/watch?v=KBDF1_vomok\&ab_channel=RealTwin) or [from the Plugin's Content Folder](https://www.youtube.com/watch?v=wHLrAkhDNU8\&ab_channel=RealTwin)
2. Add a Plane actor to your level via Shapes->Plane ([video](https://www.youtube.com/watch?v=w8CfJ7mk98M))
3. Set the Material of the Plane Actor to M\_CT\_InputStream ([video](https://www.youtube.com/watch?v=JW-hZY8JXBM))
4. Add a Live Link Controller component to the Plane Actor ([video](https://www.youtube.com/watch?v=QXukvSD6yo4))
5. With the CameraTwin - Live Link Source connected ([video](https://www.youtube.com/watch?v=KCx_c2v90-U))
   1. Select the Video Stream Subject in the Live Link Controllers
   2. Select the Live Link Camera Twin Mesh Controller in the Role Controllers

### Chroma-key Setup

This is a typical setup workflow designed for chroma-keying setups.

1. Prepare your virtual setting in Unreal Engine
2. Add a BP\_CT\_CameraActor to your Level [using QuickPlace](https://www.youtube.com/watch?v=KBDF1_vomok\&ab_channel=RealTwin) or [from the Plugin's Content Folder](https://www.youtube.com/watch?v=wHLrAkhDNU8\&ab_channel=RealTwin)
3. Setup the 2 layer composition
4. \[Optional] setup your Sequence
5. Connect to your CameraTwin Source via the Live Link window
6. Select your composition output and start streaming via the CameraTwin Composition Streamer output, which will create and NDI source, or open the preview window
7. You are now ready to shoot!\\

### AR Composition Setup

This is a typical setup workflow for Augmented Reality (AR) compositions.

1. In the Project Settings got to PostProcessing -> Enable alpha channel support in post processing (experimental) and set it to “Allow through tonemapper”
2. Prepare your virtual setting in Unreal Engine
3. Add a BP\_CT\_CameraActor to your Level [using QuickPlace](https://www.youtube.com/watch?v=KBDF1_vomok\&ab_channel=RealTwin) or [from the Plugin's Content Folder](https://www.youtube.com/watch?v=wHLrAkhDNU8\&ab_channel=RealTwin)
4. Setup the 2 layer AR composition similar to the normal 2 layer composition setup
5. \[Optional] setup your Sequence
6. Connect to your CameraTwin Source via the Live Link window
7. Select your composition output and start streaming via the CameraTwin Composition Streamer output, which will create and NDI source, or open the preview window
8. You are now ready to shoot!


# FAQ

Below you'll find answers to the questions we get asked the most about CameraTwin and its integration with virtual production workflows

<details>

<summary>What is the meaning of the term Virtual Productions?</summary>

Virtual Productions refer to a broad set of techniques integrating real-time visual effects and digital backgrounds with live-action performances. It allows creators to visualize CGI elements interactively during the filming process, making it a powerful tool in modern filmmaking.

</details>

<details>

<summary>How does CameraTwin work exactly?</summary>

CameraTwin tracks the spatial location of your device, and streams synchronized camera video, position data, as well as all camera parameters in real time to compatible receivers. This allows you to create a virtual camera that perfectly mirrors your real camera perspective and colors, enabling you to capture dynamic, realistic compositions in your scenes.

</details>

<details>

<summary>Where Can I find my API Key</summary>

You can find your API key in the CameraTwin Dashboard in the API Key page [here](https://app.cameratwin.com/dashboard/api-keys)

{% hint style="info" %}
For more details check out our instructions [here](/cameratwin/documentation/unreal-engine-plugin/api-key-configuration)
{% endhint %}

</details>

<details>

<summary>How can I Configure my API Key</summary>

To configure your API key you can follow our instructions [here](/cameratwin/documentation/unreal-engine-plugin/api-key-configuration)

</details>

<details>

<summary>Which platforms are compatible with CameraTwin?</summary>

Currently, CameraTwin is compatible with Android/iOS devices and Epic’s Unreal Engine (UE). To use CameraTwin, you will need an ARCore/ARKit enabled, high-end Android/iOS smartphone or tablet, and a computer with the latest Unreal Engine installed. Once you express interest, we'll send you an invitation email with the necessary download links and installation guides.

</details>

<details>

<summary>How does CameraTwin integrate with Unreal Engine 5?</summary>

CameraTwin connects with Unreal Engine 5 via a dedicated plugin. This allows the transfer of high-resolution images, along with camera pose data provided by ARCore/ARKit, from your smartphone device to the Unreal Engine environment, enabling a real-time virtual production experience.

</details>

<details>

<summary>What do I need to start using CameraTwin?</summary>

Besides an Android/iOS device and a computer with Unreal Engine installed, you’ll need a Wi-Fi 6 compatible router for optimal performance. Also, to take full advantage of CameraTwin's capabilities, a green screen setup in your recording space is recommended to take advantage of chroma keying techniques.

</details>

<details>

<summary>Could you explain what the Stage Setup is in CameraTwin and how it is used?</summary>

The Stage Setup in CameraTwin allows you to define a virtual boundary within your real environment. You set this up by placing points in your space, similar to how you place objects in augmented reality. This boundary is then mirrored in Unreal Engine, providing a clear and intuitive way to align your physical and virtual stage.

</details>

<details>

<summary>Can you clarify what Quick Actions are in CameraTwin and how to use them?</summary>

Quick Actions in CameraTwin enable you to manually trigger predefined events such as animations, transitions or effects within your Unreal Engine environment. These events are set up in the CameraTwin plugin and can be activated conveniently from the mobile application while you're in the midst of a shoot.

</details>

<details>

<summary>What creative possibilities does CameraTwin open up?</summary>

CameraTwin elevates your smartphone to a powerful virtual camera within Unreal Engine, versatile for both green screen and classic VFX workflows. This technology seamlessly merges real actors and props with virtual environments, and the reverse, blending virtual actors and props into real scenes. Whether integrating real foreground elements into virtual backdrops or adding virtual elements to real settings, CameraTwin enables a myriad of creative combinations. We're excited to see the innovative uses our creative community will discover. Tell us how you're harnessing CameraTwin's potential!

</details>


# Troubleshooting

This page contains a collection of common issues and their solution.

## Common Issues:

{% content-ref url="/pages/nOitKCUwGyEEnM7jU8MP" %}
[My device is not showing up in the LiveLink sources list](/cameratwin/troubleshooting/my-device-is-not-showing-up-in-the-livelink-sources-list)
{% endcontent-ref %}

{% content-ref url="/pages/eNsZzFR3aqeuFXNt7euY" %}
[My Stream seems frozen in Unreal Engine](/cameratwin/troubleshooting/my-stream-seems-frozen-in-unreal-engine)
{% endcontent-ref %}

{% content-ref url="/pages/xspZFXXUzSxv7ovVakzl" %}
[Cannot connect camera: plan limit reached](/cameratwin/troubleshooting/cannot-connect-camera-plan-limit-reached)
{% endcontent-ref %}


# My device is not showing up in the LiveLink sources list

We've recently identifed an issue with NDI streaming, specifically on Android 14 devices, where the phone is not properly advertising the service and hence isn't being discovered within the UE plugin.

If you are facing this issue, we've prepared a video tutorial with a workaround, which will allow you to use CameraTwin uninterrupted:

{% embed url="<https://youtu.be/YvNDfKmzcs0?si=jwr1QKOg4-AJn9VX>" %}

Unfortunately the issue is related to the NDI framework (which CameraTwin uses) and its compatibility with the latest Android update, so we cannot troubleshoot it directly. We are in close contact with NDI developers who have acknowledged the issue, and hope this will be resolved soon.

In the meantime, make sure to utilise the workaround detailed above. If you are still facing issues, please reach out to us at [**cameratwin@realtwin.org**](mailto:cameratwin@realtwin.org)**.**


# My Stream seems frozen in Unreal Engine

Before everything else make sure that the streaming toggle of your phone is at enabled state <img src="/files/s0T5yjR0WA94E111Ilx8" alt="" data-size="line">. If that's the case try to toggle it off and on again.

Possible Solutions:

* If the LiveLInk subjects are not indicated by a green circle while the smartphone streaming is enabled, you can try removing and adding back the CameraTwin LiveLink Source by following our instructions [here](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup#step-2-create-cameratwin-livelink-source).
* If the LiveLink subjects are indicated by green, but the LiveLink controllers are not responding. Meaning that the Camera Actor is not moving, and/or the composition layer is not receiving the camera feed, and/or the Camera Actor doesn't respond to different camera parameters. Then, you can try setting the right LiveLink subjects to the aforementioned controllers, by following the steps [here](/cameratwin/documentation/unreal-engine-plugin/cameratwin-livelink-setup#step-3-setup-livelink-subjects).
* Additionally to the above, if for any reason the stream seems frozen you can try restarting the mobile application.

If you are still facing issues, please reach out to us at [**cameratwin@realtwin.org**](mailto:cameratwin@realtwin.org)**.**


# Cannot connect camera: plan limit reached

When you attempt to connect a Camera Source, you may see the following Unreal Engine notification:

{% hint style="info" %}
You've reached your plan's limit for workstation sessions, check out your plan details and/or upgrade your plan
{% endhint %}

This usually means that one or more workstation sessions are still active on another machine, or that  previous sessions were not properly stopped when the Unreal Engine Editor was closed (for example, the Editor crashed or was terminated from the Task Manager).

To resolve this:

1. Visit  [Workstation Management](https://app.cameratwin.com/dashboard/workstation-management/).
2. Locate any sessions that are still listed as active.
3. From the Session Menu (three-dot menu), select Suspend Workstation for each active session you want to stop.

After suspending the lingering sessions, try connecting your Camera Source again.

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

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


# Support

Support for CameraTwin Beta

### Reporting Issues

If you encounter any issues while testing CameraTwin, please reach out to us via email at [**cameratwin@realtwin.org**](mailto:cameratwin@realtwin.org). Our support team will review your report and get back to you as soon as possible with further instructions or solutions. Please make sure to attach any screenshots, videos, and additional information that can aid our engineering team in diagnosing and fixing the problem.

### Contact Us

You can use [**cameratwin@realtwin.org**](mailto:cameratwin@realtwin.org) to let us know about further inquiries or suggestions. Your feedback is valuable to us as we are always looking for ways to improve CameraTwin.

### Other Support Resources

* **FAQs:** Visit our [FAQ section](/cameratwin/faq) for answers to common questions about CameraTwin.
* **User Guide:** Consult our [Get Started](/cameratwin/get-started) guide for detailed instructions on installation, setup, and usage of CameraTwin.


