Unreal Engine guide

Connect with FreeD and Live Link

Send position, rotation, and lens data from an Android phone to a CineCamera actor, then use Unreal Pixel Streaming as an optional return viewfinder.

FreeDAbout 15 minutes

What you need

  • An ARCore-capable Android phone running 6DoF Camera Tracker.
  • A Windows computer running Unreal Engine with a project containing a CineCamera actor.
  • The phone and computer on the same local network.
  • A UDP port available for the FreeD source. Use the same port in Unreal and the app.
Tracking and video are separate connections

FreeD carries camera and lens data into Unreal. Pixel Streaming sends rendered video back to the phone. Complete tracking first, then add the viewfinder.

Prepare Unreal Engine

  1. Open Edit → Plugins and enable Live Link and Live Link FreeD. Restart the editor if requested.
  2. Open the Live Link panel from Unreal's Virtual Production tools.
  3. Add a FreeD source and choose a UDP port that is not already in use.
  4. Allow Unreal Engine through Windows Firewall on private networks when prompted.

The Live Link source should remain visible even before packets arrive. Its subject becomes active when the phone starts streaming.

Configure the Android app

SettingRecommended valueReason
ProtocolFreeDNative camera-tracking path for Unreal Live Link.
Target IPUnreal computer's local IPv4 addressSends directly to the workstation.
Target portSame port as the FreeD sourceBoth ends must match.
Send modeUnicastLowest-overhead choice on a normal Wi-Fi network.
Axis mappingDefault presetStarts with the app's Unreal-oriented coordinate mapping.
Space scale1Keep the physical tracking scale unchanged initially.
6DoF Camera Tracker stream settings for configuring a receiver
Set the Unreal computer address, the matching UDP port, and FreeD before starting the stream.

Drive a CineCamera actor

  1. Add or select a CineCameraActor in the level.
  2. Add a Live Link Controller component to the camera.
  3. Select the subject created by the FreeD source and use the camera role/controller available in your Unreal version.
  4. Start tracking in the app, set the phone down at the intended origin, and press Zero pose.
  5. Calibrate zoom, focus, or iris in the app before expecting physical lens values in Unreal.
Do not compensate twice

Start with the app's Default mapping and neutral offsets. If one axis is reversed, correct it in one place only: either the app mapping preset or the Unreal camera setup.

Verify one axis at a time

  1. Move the phone right, forward, and up separately. Confirm the virtual camera follows each direction.
  2. Turn right, tilt up, and roll clockwise separately. Check for the expected response without cross-axis movement.
  3. Walk a measured distance and confirm the virtual translation matches the stage scale.
  4. Stop and restart the stream to confirm the source reconnects cleanly.

Add the Unreal viewfinder

Once tracking works, configure Unreal Pixel Streaming and enter its signalling-server address under Settings → View / Preview Input. Switch the viewfinder to UE to see the rendered camera feed while the app continues sending FreeD.

Unreal Pixel Streaming viewfinder configuration in 6DoF Camera Tracker
The UE viewfinder is a return video path; it does not replace the FreeD tracking connection.

Troubleshooting

SymptomCheck
No Live Link subjectConfirm the target IP, matching UDP port, private-network firewall permission, and that streaming is running.
Rotation works but position does notUse ARCore rather than IMU-only tracking and confirm camera permission and tracking status.
Wrong axis or directionReset the app to the Default axis preset, then adjust only the incorrect channel.
Lens values do not changeEnable and calibrate the required lens channel in the app.
UE viewfinder is blankTest the Pixel Streaming URL separately and remember that tracking can work without return video.