Motive Batch Processor
Introduction
The Motive Batch Processor is a separate stand-alone Windows application, built on the new NMotive scripting and programming API, that can be utilized to process a set of Motive Take files via IronPython or C# scripts. While the Batch Processor includes some example script files, it is primarily designed to utilize user-authored scripts. Motive Batch Processor can also be launched from the Project pane toolbar.

Initial functionality includes scripting access to file I/O, trajectorization, high-level Take processing using many of Motive's existing editing tools, and data export. Upcoming versions will provide access to track, channel, and frame-level information, for creating cleanup and labeling tools based on individual marker reconstruction data.
Motive Batch Processor Scripts make use of the NMotive .NET class library, and you can also utilize the NMotive classes to write .NET programs and IronPython scripts that run outside of this application. The NMotive assembly is installed in the Global Assembly Cache and also located in the assemblies sub-directory of the Motive install directory. For example, the default location for the assembly included in the 64-bit Motive installer is:
C:\Program Files\OptiTrack\Motive\assemblies\x64
The full source code for the Motive Batch Processor is also installed with Motive, at:
C:\Program Files\OptiTrack\Motive\MotiveBatchProcessor\src
You are welcome to use the source code as a starting point to build your own applications on the NMotive framework.
Use
Requirements
A batch processor script using the NMotive API. (C# or IronPython)
Take files that will be processed.
There is a known stall issue with IronPython versions 2.7.6 or higher. Please use IronPython 2.7.5 instead.
Steps
Launch the Motive Batch Processor. It can be launched from either the start menu, Motive install directory, or from the Project pane in Motive.
First, select and load a Batch Processor Script. Sample scripts for various pipelines can be found in the
[Motive Directory]\MotiveBatchProcessor\ExampleScripts\folder.Load the captured Takes (TAK) that will be processed using the imported scripts.
Click Process Takes to batch process the Take files.
Class Reference
A class reference in Microsoft compiled HTML (.chm) format can be found in the Help sub-directory of the Motive install directory. The default location for the help file (in the 64-bit Motive installer) is:
C:\Program Files\OptiTrack\Motive\Help\NMotiveAPI.chm
C# Scripts
The Motive Batch Processor can run C# and IronPython scripts. Below is an overview of the C# script format, as well as an example script.
C# Script Format
A valid Batch Processor C# script file must contain a single class implementing the ItakeProcessingScript interface. This interface defines a single function:
Result ProcessTake( Take t, ProgressIndicator progress ).
Result, Take, and ProgressIndicator are all classes defined in the NMotive namespace. The Take object t is an instance of the NMotive Take class. It is the take being processed. The progress object is an instance of the NMotive ProgressIndicator and allows the script to update the Batch Processor UI with progress and messages. The general format of a Batch Processor C# script is:
C# Example
The following is an example of a C# Batch Processor script that exports a take to C3D format.
Note that your C# script file must have a '.cs' extension.
IronPython Scripts
IronPython is an implementation of the Python programming language that can use the .NET libraries and Python libraries. The batch processor can execute valid IronPython scripts in addition to C# scripts.
IronPython Script Format
Your IronPython script file must import the clr module and reference the NMotive assembly. In addition, it must contain the following function:
def ProcessTake(Take t, ProgressIndicator progress)
The following illustrates a typical IronPython script format.
IronPython Script Example
The following is an example IronPython Batch Processor script that first performs a trim tails operation followed by a filtering/smoothing operation. If both operations succeed, the resulting take is saved.
Last updated
Was this helpful?

