ExistentTrackerComponent

Overview

The ExistentTrackerComponent is an ActorComponent that can be attached to any Actor to make it move according to the coordinates given by an externally tracked object. As shorthand, we often refer to an Actor with an attached TrackerComponent as a 'prop'.

The TrackerComponent communicates with its TrackingSystem to retrieve the most recent coordinates for the object’s tracking ID, and the TrackerComponent updates the world-space transform of the Actor it’s attached to, using the tracker’s current ExistentSpace as the origin for the raw tracking coordinates. By default (bUpdateTrackingInEditor == true) the prop’s transform is updated in real-time in the Unreal editor, regardless of whether the game is running.

When running in the editor (or in-game with backstage mode enabled), each tracker will by default render a soft outline of the Actor’s mesh in the colour of the ExistentSpace it’s currently occupying. When the game is running in backstage mode, this outline will always appear in the locally controlled Player’s Space, so you can always see the object’s real-world location even if its virtual location is far away. The mesh used for this outline can be customised by setting the Mesh to outline property, or the outline can be disabled entirely.

For details on how to set up external tracking systems, see the Adding Tracked Objects section. The list of available tracking IDs is retrieved directly from the tracker’s TrackingSystem, so varies depending on tracking system type (e.g. LiveLink or Vive).

How to use

The ExistentTrackerComponent can be added to any Actor (whether blueprint or C++ class) to add tracking functionality. When this prop (tracking-attached Actor) is dragged into a level within the bounds of an ExistentSpace, the tracker will automatically assign itself to that Space, and the Actor will be made a child of the Space Actor. Alternatively, you can manually edit the TrackerComponent’s CurrentSpace property to point to a custom Space in your level.

By default when a new prop is created, the tracker’s TrackingSystem property is auto-populated by the TrackingSystem asset specified in your project-level Existent Settings, but this can be customised on a per-tracker basis. The tracker’s tracking ID can be selected from a dropdown box to link it to a particular tracker specified in your TrackingSystem.

With a TrackingSystem and tracker ID selected, the prop should automatically move around your level according to the coordinates given by the tracking system.

Additional Details

  • Visualisation of real-world prop location: With backstage mode enabled, you can always see an outline of the tracker’s real-world location, even if your Player is in a different Space from the tracker.

  • Visualising tracker device alignment: To help align a prop’s mesh with its real-world counterpart, you can enable the bRenderDeviceMesh property, which will render a mesh of the tracking device at the current tracker coordinates. (This mesh is taken from a list of tracker meshes you can customise in the Existent Settings.)

  • Automatic replication: For multiplayer experiences, whenever a tracker’s ID or Space is changed by any machine, it’s automatically replicated to all participating servers and clients. For TrackingSystems with replicated coordinates (e.g. Vive), Existent automatically detects which PC the tracker is plugged into and ensures all other machines receive up-to-date coordinates from this PC.

  • Modular blueprint-accessible tracker interface: Although TrackerComponents are optimised out-of-the box for use with a simple prop (one tracker per Actor), they can be customised for more complex use cases by disabling bShouldUpdateRootTransform and manually querying the tracker’s Space-relative or world transform via blueprints or C++. The tracker’s ID or current Space can also be changed programmatically at runtime.

Last updated