MotionTrackerObject Manual
The MotionTrackerObject class represents a Cinema 4D motion tracker object. It provides read-only access to properties of the loaded video footage and the created 2D tracks.
MotionTrackerObject
objects are an instance of
Omotiontracker
.
A MotionTrackerObject object can be accessed like any other object.
// This example accesses the Motion Tracker object // to print the used footage filename to the console.// check if an object is selected and if it is a Motion Tracker object BaseObject * const obj = doc-> GetActiveObject (); if (obj == nullptr || !obj-> IsInstanceOf ( Omotiontracker )) return maxon::IllegalArgumentError( MAXON_SOURCE_LOCATION );
// do not forget to free the copy MtFootageData::Free (footage);
MotionTrackerObject objects are created with the usual tools:
The standard object parameters of the Motion Tracker object can be accessed with
C4DAtom::GetParameter()
and
C4DAtom::SetParameter()
. The parameter IDs are defined in
omotiontracker.h
.
Additionally, footage information can be accessed with MotionTrackerObject::GetFootageData() (see below).
Internal data of a MotionTrackerObject can be accessed by acquiring specialised data containers that store information on the footage and the 2D tracking data.
见 MtFootageData Manual and Mt2dTrackData / Mt2dTrack / MtData Manual .
// This example accesses both footage data and track data // from the given MotionTrackerObject.// access MtFootageData MtFootageData * footage = moTrackObject-> GetFootageData (); if (footage == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION ); const Int32 firstFrame = footage-> GetFirstFrameNumber (); const Int32 lastFrame = footage-> GetLastFrameNumber (); const String firstFrameStr = String::IntToString (firstFrame); const String lastFrameStr = String::IntToString (lastFrame); ApplicationOutput ( "Footage Range: " + firstFrameStr + " - " + lastFrameStr);
// do not forget to free the copy MtFootageData::Free (footage);
// access Mt2dTrackData Mt2dTrackData * trackData = moTrackObject-> Get2dTrackData (); if (trackData == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION ); const Int32 trackCount = trackData-> GetTrackCount (); ApplicationOutput ( "Track Count: " + String::IntToString (trackCount));
// do not forget to free the copy Mt2dTrackData::Free (trackData);