Unreal Engine / FreeD Integration¶
Flair outputs real-time camera position and lens data over FreeD protocol for use in Unreal Engine virtual production setups. This guide covers network configuration, Flair setup, Unreal LiveLink settings, CineCameraActor configuration, and how to handle multiple render nodes using the VP Sync Box.
Network considerations¶
Most Flair PCs run INtime, and the real-time data output does NOT come out of the Windows network adapter. It comes out of the Network Direct port that connects to the network switch in your Flair flight case and to the RT unit (RT12/14 etc.).
Your receiving Unreal computer must:
- Have an IP address in the
192.168.1.xxxrange - Have a different IP from the Flair PC and any other device on the network (such as the RT14)
- Have subnet
255.255.255.0 - Have the gateway field blank
Subnet conflicts with robots
If you put the Unreal network on the same 192.168.1.xxx subnet as Flair, this can cause issues with network-controlled robots (Mitsubishi, Bolt X). Unreal networks are often on a different subnet, which avoids this. If they must share a subnet, use an advanced router to prevent backflow.
Step 1 — Configure Serial Devices Setup in Flair¶
Go to Setups > Serial Devices Setup (also called External Devices Setup). Add a destination with the IP address and port number of the receiving computer. Flair supports up to 3 output destinations by default.
Use the Serial Tester app to confirm your receiving computer is receiving FreeD data before proceeding to Unreal. Download Serial-Tester.exe →
Step 2 — Set Focus and Zoom export format¶
Go to Setups > Transform Export and configure:
- Focus Export: set to Millimeters
- Zoom Export: set to mm × 1000
This approach eliminates the need for a lens file or lookup table, and removes the need for complex unique equations per zoom lens type. The result is that Flair sends the focal length in units of 1/1000 mm (so a 35mm lens sends 35000).
Step 3 — Configure Unreal FreeD LiveLink¶
In Unreal Engine, open the FreeD LiveLink dialog and configure the Focus and Zoom inputs:
Focus settings (FreeD LiveLink)¶
- Minimum:
15 - Maximum:
1000000 - Mask:
65535
The values shown in the FreeD Livelink dialog itself may appear incorrect. Use the focus settings section of the dialog (which shows what UE thinks the received distance is) — this gives the accurate value. The Livelink dialog's main display shows incorrect values due to a known UE quirk.
Mask and focal length > 65mm
The mask value of 65535 (hex 0xFFFF) will truncate data for focal lengths above 65mm. If you experience issues with longer focal lengths, reset the mask to the default value 1277715 (hex 0xFFFFFF). Unreal uses 3 bytes to transfer each data item — the full 24-bit mask is the correct one. The truncation is not required and is a misconfiguration.
Zoom settings (FreeD LiveLink)¶
The zoom values in the FreeD Livelink setup must match the Flair lens focal length multiplied by 1000. For a 16–35mm lens:
- Minimum:
16000 - Maximum:
35000
This ensures smooth results because the focal length sent by Flair is 1000× the actual mm focal length.
Step 4 — Configure CineCameraActor in Unreal¶
In the CineCameraActor Settings, specify:
- Sensor size (matching your physical camera sensor)
- Focal length minimum and maximum (matching your lens range in mm)
These settings are required for Unreal to correctly interpret the incoming focus and zoom data.
Step 5 — Blueprint (turntable only)¶
If you are using a turntable to rotate your subject, you will need a blueprint to deal with the transformation offsets introduced by the turntable. If there is no turntable, the blueprint is not required.
A project blueprint file is referenced in the forum post (Blueprint file link).
Troubleshooting¶
Unreal not receiving FreeD data:
Try setting the Flair output IP to 0.0.0.0. Sometimes Unreal will only start receiving FreeD when the IP is set to the wildcard address.
Lens file conflicts:
If a blueprint has been added to the project, Unreal may pick a default lens file. Ensure that Use Camera Range is selected in the lens settings.
Only Z axis (up/down) data received:
This has been reported in UE 5.2. Try restarting Flair and/or Unreal. Restarting once may restore all axes. Migrating assets from an older UE project can trigger this.
Zoom lens freaking out at a specific focal length:
This is typically caused by the mask truncation issue. Reset the mask to 1277715 (the default 24-bit value, hex 0xFFFFFF).
Bolt Jr+ must be at Home before enabling NDisplay:
Set the Bolt to the Home position before turning the NDisplay instance on. This ensures correct tracking alignment.
Multiple render nodes — VP Sync Box¶
Flair's External Devices Setup supports up to 3 output destinations. If your virtual production setup has more than 3 render nodes (e.g. one master and three render nodes = 4 destinations), you need the MRMC Virtual Production Sync Box (also called RT Sync Box).
The VP Sync Box:
- Receives one FreeD data stream from Flair
- Repeats the data to up to 10 different machines over IP
- Can also accept a genlock signal and use it to extrapolate and re-time the Flair position data to match the genlock frame timing — reducing minor image jitter on the LED wall
- Combined with a router, it bridges the Flair
192.168.1.xxxnetwork to the Unreal network (which is typically on a different subnet)
Genlock and timecode note (from Simon Wakley):
Genlock (not timecode) is what synchronises the Unreal world to the cameras. Genlock is an analogue signal generated by a master clock (such as an AJA Gen10) that locks the camera image timing and the LED wall scanning to a common reference. LTC timecode is just an audio-encoded clock — it does not do this job. Unless you are doing repeat passes, Flair itself does not need to be locked to the genlock signal at all.
Related Issues¶
- FreeD Receiver Cannot See Flair on Network
- FreeD Output Sends All Zeros — Wrong Output Type Selected
- FreeD Protocol — ±180° Pan Angle Hard Limit
- FreeD / Unreal Troubleshooting
- FreeD in LiveFX — Focus Distance Units
Source: Unreal Integration — basic first steps · Flair & Unreal — basic considerations & set up — talk.mrmoco.com