Main Page → OptiTrack Unreal Engine 4 Plugin
Plugin Overview
The OptiTrack Unreal Engine Plugin allows you to stream real-time tracking data from Motive into Unreal Engine. This includes tracking data of rigid bodies, skeletons, and HMDs that are tracked within Motive. This article focuses on how to set up the plugin for those different streaming workflows. For basic instructions on setting up a motion capture system, please refer to the Getting Started guide instead.
HMD Compatibility
Included Plugins:
First of all, follow the below instructions to set up the data streaming settings in Motive. Once this is configured, Motive will be broadcasting tracking data onto a designated network interface where client applications can receive them.
Open the Data Streaming pane in Motive and set the following settings:
Additional Tips
The OptiTrack - Streaming Client plugin is used for most of the general real-time applications including Virtual Reality. It provides streaming of rigid body and skeleton tracking data from Motive into Unreal Engine, and it also includes helper functions and actors to help with quickly integrating the plugin into the scene. Please follow the instructions on this page for setting up this plugin.
The OptiTrack - VR Latency Optimization plugin is an optional plugin for SteamVR projects. When enabled, it provides HMD render compensation to minimize latency in VR applications. For users developing for SteamVR using the OptiTrack plugin, whether or not using the OptiTrack OpenVR Driver, it's suggested to have this plugin enabled.
New in plugin version 2.25. The OptiTrack - Live Link plugin is for virtual production applications that require use of virtual cameras within Unreal Engine. It communicates with Unreal's built-in Live Link plugin by providing a Live Link source for streaming data from Motive in both real-time and runtime. When timecode data is available in Motive, streamed timestamps can be used to align the data with other components within the project. If your application requires this, please follow the Unreal Engine: OptiTrack Live Link Plugin page instead.
Next step is to configure the client. Follow below instructions to install and configure the OptiTrack Unreal Engine plugin to receive the streamed tracking data.
C:\Program Files\Epic Games\4.##\Engine\Plugins
Once the OptiTrack - Streaming Client plugin is enabled, OptiTrack Client Origin will be available in the UE4 . This client origin object will be used as the baseline node for establishing the connection to Motive.
The OptiTrack Client Origin class enables the Unreal Engine (client) to communicate with Motive where the rigid body, skeleton, and HMD tracking data are streamed from.
To add the client origin, simply drag-and-drop the OptiTrack Client Origin from the Modes panel into the level in UE4. Once the client origin is placed within the level, its position and orientation will reconcile the global origin of Motive in Unreal Engine. In other words, the tracking data will be represented according to where this Client Origin object is positioned and how it is oriented.
Global Origin: Both position and orientation of the OptiTrackClientOrigin will represent the global origin of the tracking volume within Motive.
Connecting to a designated IP address
Advance settings: Auto-initialize
Actor objects in Unreal Engine can be animated using rigid body tracking data from Motive. Once the OptiTrack - Streaming Client plugin is enabled in the project, OptiTrack Rigid Body component will be available to use. By attaching this component onto an actor, you can animate its child actors according to the movement of a rigid body in Motive. Each rigid body component is given a Trackable ID value, and tracking of a rigid body asset with the matching Streaming ID, in Motive, will be used to update the transform of the target actor in Unreal Engine.
You can also use the OptiTrack Rigid Body Actor prefab under the Modes panel. This is simply a blank actor with just the OptiTrack Rigid Body component attached to it, and you can use this to easily associate the objects within the scene:
Characters in Unreal Engine can be animated in real-time using skeleton bone tracking data from Motive. However, since the bone structure of the skeleton actor in Motive may not be the same as the bone structure of the character that it's being animated with, the animation may need to be retargeted to match the character. To do this, you can use the plugin to map the bone data onto the character in Unreal Engine.
The skeleton component in the plugin can be used to allow the streaming of the skeleton via bone mapping. This means that the motion of each skeleton bone in Motive can be projected to the bones of the character model. Please note that this is different from skeleton retargeting, the bone segments in Motive get mapped directly to the character model (bone mapping) instead of being translated into something that is usable by a more abstract biped model (retargeting). The instructions on setting up the skeleton component are documented under the following page:
Go to: Unreal Engine Skeleton Streaming
When needed, you can also draw labeled marker data from Motive into the scene in UE. In most applications, you do not have to draw the markers as rigid body data and the skeleton data will be used instead; however, getting markers generated in the scene may be helpful for debugging purposes. To enable drawing of the markers:
OptiTrack motion capture systems can be used to track head mounted displays (HMD) and integrate the tracking data into Unreal Engine for VR applications. For instructions on integrating HMD tracking data into Unreal Engine, please refer to the corresponding page:
At the time of writing, the following HMDs are supported:
Deprecated support for Oculus HMDs:
Once you have connected to the client object and configured the script components, play the scene. If everything is properly set up, the assets in the scene will be animated according to the tracking data from Motive.
Please note that once the scene starts playing, the actor objects that have the plugin components attached will automatically get positioned in respect to their locations within Motive's coordinate system and disregards to their initial positions given in the UE4 editor.
When setting up multiplayer games on wireless clients, it is more beneficial for each client to make direct connection to both the tracking-server (Motive) and the game-server, rather than rebroadcasting the streamed tracking data through the game-server. Then, any of the game related actions that interacts with the tracking data can be processed on the game-server, and this server can send out the corresponding updates to the wireless clients. This allows the wireless clients to only receive both the tracking data or updates without having to send back any information; in other words, minimizing the number of data transfers needed. If wireless clients are sending data there will be a minimum of two transfers on the wireless network, and each transfer of data through wireless network is at risk of latency or lost packets.