ImFusion C++ SDK 4.5.0
ImFusion::OpticalTrackingInterface Class Referenceabstract

#include <ImFusion/Navigation/OpticalTrackingInterface.h>

Interface for optical tracking systems that support marker management. More...

Inheritance diagram for ImFusion::OpticalTrackingInterface:

Detailed Description

Interface for optical tracking systems that support marker management.

This interface provides a generic abstraction for optical tracking systems that work with fiducial-based markers. It allows adding, retrieving, and optionally removing tracking markers from the tracking system.

Implementations should advertise their supported optional capabilities through the capabilities() method using the Capabilities flags.

Example usage:

if (auto* opticalStream = dynamic_cast<OpticalTrackingInterface*>(trackingStream))
{
auto marker = std::make_unique<OpticalTrackingMarker>("Pointer", 123);
marker->addFiducial(vec3(0, 0, 0));
marker->addFiducial(vec3(40, 0, 0));
marker->addFiducial(vec3(0, 60, 0));
std::string trackerId = opticalStream->addTrackingMarker(std::move(marker));
if (!trackerId.empty())
{
// Marker was successfully registered
auto retrievedMarker = opticalStream->trackingMarker(trackerId);
}
}
Interface for optical tracking systems that support marker management.
Definition OpticalTrackingInterface.h:41
T empty(T... args)
T make_unique(T... args)

Public Types

enum  Capabilities { None = 0 , RemoveMarker = 1 << 0 , IndividualFiducials = 1 << 1 }
 Hardware capabilities that an optical tracking system may support. More...

Public Member Functions

virtual Flags< Capabilitiescapabilities () const =0
 Returns the hardware capabilities supported by this tracking system.
virtual std::string addTrackingMarker (std::unique_ptr< OpticalTrackingMarker > marker)=0
 Adds a tracking marker to the tracking system.
virtual std::string addTrackingMarker (const std::string &filepath, const std::string &name="")
 Loads a tracking marker from file and adds it to the tracking system.
virtual std::unique_ptr< OpticalTrackingMarkertrackingMarker (const std::string &trackerId) const =0
 Returns a copy of the OpticalTrackingMarker for a given tracker ID.
virtual bool removeTrackingMarker (const std::string &trackerId)
 Removes a tracking marker from the tracking system.

Member Enumeration Documentation

◆ Capabilities

Hardware capabilities that an optical tracking system may support.

Use with Flags<Capabilities> to query or indicate supported capabilities.

Enumerator
None 

No optional capabilities.

RemoveMarker 

Supports removing markers after registration.

IndividualFiducials 

Provides individual fiducial positions via the TrackingInstrumentFiducialsData data component.

Member Function Documentation

◆ capabilities()

virtual Flags< Capabilities > ImFusion::OpticalTrackingInterface::capabilities ( ) const
pure virtualthreadsafe

Returns the hardware capabilities supported by this tracking system.

Can be called concurrently from any thread.

Implemented in ImFusion::AtracsysTrackingStreamBase, and ImFusion::NDIPolarisTrackingStream.

◆ addTrackingMarker() [1/2]

virtual std::string ImFusion::OpticalTrackingInterface::addTrackingMarker ( std::unique_ptr< OpticalTrackingMarker > marker)
pure virtual

Adds a tracking marker to the tracking system.

The marker geometry is registered with the tracking hardware, enabling the system to track objects that match this fiducial pattern.

Parameters
markerThe marker to add. Ownership is transferred.
Returns
The tracker ID assigned to this marker, or an empty string if registration failed. This ID corresponds to the TrackerID::m_id used in TrackingInstrument.

Implemented in ImFusion::AtracsysTrackingStreamBase, and ImFusion::NDIPolarisTrackingStream.

◆ addTrackingMarker() [2/2]

virtual std::string ImFusion::OpticalTrackingInterface::addTrackingMarker ( const std::string & filepath,
const std::string & name = "" )
virtual

Loads a tracking marker from file and adds it to the tracking system.

Convenience method using the OpticalTrackingMarkerIO functionality to load the marker. Equivalent to

auto marker = OpticalTrackingMarkerIO::loadFromFile(filepath);
if (!name.empty())
marker->setName(name);
addTrackingMarker(std::move(marker));
virtual std::string addTrackingMarker(std::unique_ptr< OpticalTrackingMarker > marker)=0
Adds a tracking marker to the tracking system.
std::unique_ptr< OpticalTrackingMarker > loadFromFile(const Filesystem::Path &filename)
Loads a marker from a file.
Parameters
filepathThe filepath to load the marker from. Format is inferred from the file extension.
nameOptional name to be set to the optical tracking marker (empty name keeps the default one).
Returns
The tracker ID assigned to this marker, or an empty string if registration failed. This ID corresponds to the TrackerID::m_id used in TrackingInstrument.

◆ trackingMarker()

virtual std::unique_ptr< OpticalTrackingMarker > ImFusion::OpticalTrackingInterface::trackingMarker ( const std::string & trackerId) const
pure virtual

Returns a copy of the OpticalTrackingMarker for a given tracker ID.

Parameters
trackerIdThe tracker ID as returned by addTrackingMarker().
Returns
A copy of the marker geometry, or nullptr if the tracker ID is not found.

Implemented in ImFusion::AtracsysTrackingStreamBase, and ImFusion::NDIPolarisTrackingStream.

◆ removeTrackingMarker()

virtual bool ImFusion::OpticalTrackingInterface::removeTrackingMarker ( const std::string & trackerId)
virtual

Removes a tracking marker from the tracking system.

An implementation of OpticalTrackingInterface must override this method if the tracking system supports marker removal (capabilities() contains flag Capabilities::RemoveMarker). The default implementation returns false without performing any action.

Parameters
trackerIdThe tracker ID of the marker to remove.
Returns
True if the marker was successfully removed, false on error or if removal is not supported.

Reimplemented in ImFusion::AtracsysTrackingStreamBase, and ImFusion::NDIPolarisTrackingStream.


The documentation for this class was generated from the following file:
  • ImFusion/Navigation/OpticalTrackingInterface.h
Search Tab / S to search, Esc to close