内容表

关于

A Mt2dTrackData object stores information on 2D tracks created with the Motion Tracker object. It provides access to Mt2dTrack objects that represent such tracks. Spacial information is represented by MtData 对象。

Access

The Mt2dTrackData object is obtained from the parent MotionTrackerObject .

警告
The returned object is a copy owned by the caller.
// This example accesses the track data to print the track count.
Mt2dTrackData * trackData = moTrackObject-> Get2dTrackData (); if (trackData == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION ); const Int32 trackCount = trackData-> GetTrackCount (); ApplicationOutput ( "Track Count: " + String::IntToString (trackCount)); Mt2dTrackData::Free (trackData);

Access Tracks

The Mt2dTrackData object provides access to 2D tracks:

A copy of a track has to be freed with:

// This example accesses the track data to loop // through all tracks and print their names. Mt2dTrackData * trackData = moTrackObject-> Get2dTrackData (); if (trackData == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION );

// AutoFree takes ownership AutoFree<Mt2dTrackData> freeData; freeData. 赋值 (trackData); const Int32 trackCount = trackData-> GetTrackCount ();

// loop all tracks for ( Int32 i = 0; i < trackCount; ++i) { Mt2dTrack * track = trackData-> GetTrackByIndex (i); if (track == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION );

// AutoFree takes ownership AutoFree<Mt2dTrack> freeTrack; freeTrack. 赋值 (track);

// print track index and name const String trackName = track-> GetName (); const String trackIndex = String::IntToString (i); ApplicationOutput ( "Track " + trackIndex + " : " + trackName); }

Access Track Data

A Mt2dTrack object stores several properties:

A valid status is:

A track may only be valid for certain frames. This validity is stored in a BaseSelect object:

// This example checks for what frames the given track // contains 2D tracking data. BaseSelect * frameRange = track-> GetFramesWithTrackData (); if (frameRange == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION );

// AutoFree takes ownership AutoFree<BaseSelect> freeFrames; freeFrames. 赋值 (frameRange); Int32 seg = 0, a, b;

// loop through all segments of the BaseSelect while (frameRange-> GetRange (seg++, LIMIT<Int32>::MAX , &a, &b)) { const String segmentBeginStr = String::IntToString (a); const String segmentEndStr = String::IntToString (b); const String trackName = track-> GetName (); ApplicationOutput (trackName + " contains data for the range " + segmentBeginStr + " to " + segmentEndStr); }

Position Data

The information on the position of the track for a given frame is stored in a MtData object. Such an object is returned by the Mt2dTrack :

Spacial information is obtained from that MtData object:

// This example loops through all frames of the footage and // checks for each frame if the given track contains data for it. // If so, the data is printed to the console.

// get footage range const Int32 firstFrame = footage-> GetFirstFrameNumber (); const Int32 lastFrame = footage-> GetLastFrameNumber ();

// loop through all frames for ( Int32 frame = firstFrame; frame < lastFrame; frame++) { // check if track contains data for the given frame if (frameRange-> IsSelected (frame)) { // access data MtData * frameData = track-> GetDataForFrame (frame); if (frameData == nullptr ) return maxon::UnexpectedError( MAXON_SOURCE_LOCATION );

// AutoFree takes ownership AutoFree<MtData> freeMtData; freeMtData. 赋值 (frameData);

// get position const 向量 pos = frameData-> GetPixelPosition (footage, true );

// print to console const String posStr = String::VectorToString (pos); const String frameStr = String::IntToString (frame); ApplicationOutput ( "Position for frame " + frameStr + ": " + posStr); } }

延伸阅读

MtData
定义: lib_motiontracker.h:222
Mt2dTrackData
定义: lib_motiontracker.h:70
Mt2dTrackData::GetTrackCount
Int32 GetTrackCount() const
AutoFree::Assign
void Assign(TYPE *p)
定义: ge_autoptr.h:225
Mt2dTrackData::Free
static void Free(Mt2dTrackData *&p)
Mt2dTrack
定义: lib_motiontracker.h:155
Mt2dTrack::GetDataForFrame
MtData * GetDataForFrame(Int32 frameNum) const
Mt2dTrackData::GetTrackByIndex
Mt2dTrack * GetTrackByIndex(Int32 idx) const
AutoFree
定义: ge_autoptr.h:151
BaseSelect::IsSelected
Bool IsSelected(Int32 num) const
定义: c4d_baseselect.h:162
MAXON_SOURCE_LOCATION
#define MAXON_SOURCE_LOCATION
定义: memoryallocationbase.h:66
MotionTrackerObject::Get2dTrackData
Mt2dTrackData * Get2dTrackData() const
String
定义: c4d_string.h:38
String::IntToString
static String IntToString(Int32 v)
定义: c4d_string.h:495
maxon::Vec3< maxon::Float64, 1 >
LIMIT
定义: apibasemath.h:33
BaseSelect
定义: c4d_baseselect.h:31
Int32
maxon::Int32 Int32
定义: ge_sys_math.h:58
ApplicationOutput
#define ApplicationOutput(formatString,...)
定义: debugdiagnostics.h:207
MtData::GetPixelPosition
Vector GetPixelPosition(MtFootageData *sdkFh, Bool originalRes) const
MtFootageData::GetLastFrameNumber
Int32 GetLastFrameNumber() const
Mt2dTrack::GetName
String GetName() const
String::VectorToString
static String VectorToString(const Vector32 &v, Int32 nnk=-1)
定义: c4d_string.h:571
Mt2dTrack::GetFramesWithTrackData
BaseSelect * GetFramesWithTrackData() const
BaseSelect::GetRange
Bool GetRange(Int32 seg, Int32 maxElements, Int32 *a, Int32 *b) const
MtFootageData::GetFirstFrameNumber
Int32 GetFirstFrameNumber() const

Copyright  © 2014-2025 乐数软件    

工业和信息化部: 粤ICP备14079481号-1