Motive API Overview

Important Note:

Motive API wiki pages are being updated for 3.0 beta. Some of the functions may be missing in the documentation. Please refer to the NPTrackingTools header file for any information that are not documented here.

Overview

The Motive API allows control of, and access to, the backend software platform of Motive via C/C++ interface. In other words, the Motive API offers Motive functions without the graphical user interface on top. Using the API, you can employ several features of Motive in your custom applications, such as accessing 2D camera images, marker centroid data, unlabeled 3D points, labeled markers, and Rigid Body tracking data. When you install Motive, all of the required components for utilizing the API are installed within the Motive install directory. The key files for using the Motive API are listed in the below section.

What it offers:

  • Camera control

  • Frame control

  • Point Cloud reconstruction engine control

  • Obtain and use reconstructed 3D Marker data

  • Rigid body tracking

  • Query results

  • Stream results over the network

What it doesn't offer

  • In-depth hardware control (e.g. hardware sync customization). Use the Camera SDK instead.

  • Direct support for data recording and playback.

  • Control over peripheral devices (Force plates and NI-DAQ)

  • Functionalities for Skeleton assets.

Requirements

  • The Motive API is supported in Windows only

  • Must have a valid Motive license and a corresponding Hardware key.

Files List

When you install Motive, all of the required components of the Motive API will be placed within the installation directory, and by default, Motive is installed in C:\Program Files\OptiTrack\Motive. The following table lists all of the key files of the API and where they could be found.

FilenameDirectoryDescription

NPTrackingTools.h

[Motive Install Directory]\inc\NPTrackingTools.h

The header file NPTrackingTools.h contains declarations for functions and classes of the API. Necessary functions and classes are thoroughly commented within this file. This header file must be #included in your source code for utilizing the Motive API functions.

RigidBodySettings.h

[Motive Install Directory]\inc\RigidBodySettings.h

The header file RigidBodySettings.h contains the class declaration for the cRigidBodySettings class, which is used to modify and configure the settings for Rigid Body assets. This header file is included within the NPTrackingTools.h file, so it would not be necessary to separately include this.

lib folder

[Motive Install Directory]\lib

This folder includes C++ 64-bit library files (.lib and .dll) for employing the Motive API. The library is compiled using Visual Studio 2013 with the dynamic run-time (\MD) library, so make sure the client application also uses the same settings. 32-bit NPTrackingTools library has been deprecated since version 2.1.

Sample project

[Motive Install Directory]\Samples\markers

This folder contains a sample Visual Studio project (marker.sln) that uses the Motive API for accessing cameras, markers, and Rigid Body tracking information. Refer to this folder to find out how the API could be used.

Platforms folder

[Motive Install Directory]\plugins\

The platforms folder is located in the plugins folder and it contains qwindows.dll which is required for running applications using the Motive API. Copy and paste this folder into the EXE directory.

Third-party libraries

[Motive Install Directory]

Third-party DLL libraries are required for all applications built against the API. Please see Motive API: Quick Start Guide for more information

API Guide / Function Reference

This guide introduces some of the commonly used functions of the Motive API.

The following page provides a full list of the Motive API functions.

NPRESULT & VIDEO TYPES

Many of the Motive API functions return their results as integer values defined NPRESULT. This value expresses the outcome of the result. Not only it indicates whether the function operated successfully or not, but it also provides more detailed information on what type of error has occurred. When you get the NPRESULT output from a function, you can use the TT_GetResultString function to get the plain text result that corresponds to the error message.

const char		*TT_GetResultString( NPRESULT result ); // Returns text of detail information on the result.

Also, camera video types, or image processing modes, are expressed as integer values as well. These values are listed below and are commented within the header file as well.

NPRESULT Values

#define 	NPRESULT_SUCCESS     		0
#define 	NPRESULT_FILENOTFOUND           1
#define 	NPRESULT_LOADFAILED		2
#define 	NPRESULT_FAILED			3
#define 	NPRESULT_INVALIDFILE		8
#define 	NPRESULT_INVALIDCALFILE		9
#define 	NPRESULT_UNABLETOINITIALIZE	10
#define 	NPRESULT_INVALIDLICENSE		11
#define 	NPRESULT_NOFRAMEAVAILABLE	14
#define 	NPRESULT_DEVICESINUSE		15

Camera Video Type Definitions

#define 	NPVIDEOTYPE_SEGMENT	0
#define 	NPVIDEOTYPE_GRAYSCALE	1
#define 	NPVIDEOTYPE_OBJECT	2
#define 	NPVIDEOTYPE_PRECISION	4
#define 	NPVIDEOTYPE_MJPEG	6
#define 	NPVIDEOTYPE_VIDEO	9