MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / natronTrackerToLibMVTracker

Method natronTrackerToLibMVTracker

Engine/TrackerContextPrivate.cpp:770–952  ·  view source on GitHub ↗

Converts a Natron track marker to the one used in LibMV. This is expensive: many calls to getValue are made

Source from the content-addressed store, hash-verified

768
769/// Converts a Natron track marker to the one used in LibMV. This is expensive: many calls to getValue are made
770void
771TrackerContextPrivate::natronTrackerToLibMVTracker(bool isReferenceMarker,
772 bool trackChannels[3],
773 const TrackMarker& marker,
774 int trackIndex,
775 int trackedTime,
776 int frameStep,
777 double /*formatHeight*/,
778 mv::Marker* mvMarker)
779{
780 KnobDoublePtr searchWindowBtmLeftKnob = marker.getSearchWindowBottomLeftKnob();
781 KnobDoublePtr searchWindowTopRightKnob = marker.getSearchWindowTopRightKnob();
782 KnobDoublePtr patternTopLeftKnob = marker.getPatternTopLeftKnob();
783 KnobDoublePtr patternTopRightKnob = marker.getPatternTopRightKnob();
784 KnobDoublePtr patternBtmRightKnob = marker.getPatternBtmRightKnob();
785 KnobDoublePtr patternBtmLeftKnob = marker.getPatternBtmLeftKnob();
786
787#ifdef NATRON_TRACK_MARKER_USE_WEIGHT
788 KnobDoublePtr weightKnob = marker.getWeightKnob();
789#endif
790 KnobDoublePtr centerKnob = marker.getCenterKnob();
791 KnobDoublePtr offsetKnob = marker.getOffsetKnob();
792
793 // We don't use the clip in Natron
794 mvMarker->clip = 0;
795 mvMarker->reference_clip = 0;
796
797#ifdef NATRON_TRACK_MARKER_USE_WEIGHT
798 mvMarker->weight = (float)weightKnob->getValue();
799#else
800 mvMarker->weight = 1.;
801#endif
802
803 mvMarker->frame = trackedTime;
804 const int referenceTime = marker.getReferenceFrame(trackedTime, frameStep);
805 mvMarker->reference_frame = referenceTime;
806 if ( marker.isUserKeyframe(trackedTime) ) {
807 mvMarker->source = mv::Marker::MANUAL;
808 } else {
809 mvMarker->source = mv::Marker::TRACKED;
810 }
811
812 // This doesn't seem to be used at all by libmv TrackRegion
813 mvMarker->model_type = mv::Marker::POINT;
814 mvMarker->model_id = 0;
815 mvMarker->track = trackIndex;
816
817 mvMarker->disabled_channels =
818 (trackChannels[0] ? LIBMV_MARKER_CHANNEL_R : 0) |
819 (trackChannels[1] ? LIBMV_MARKER_CHANNEL_G : 0) |
820 (trackChannels[2] ? LIBMV_MARKER_CHANNEL_B : 0);
821
822
823 //int searchWinTime = isReferenceMarker ? trackedTime : mvMarker->reference_frame;
824
825 // The patch is a quad (4 points); generally in 2D or 3D (here 2D)
826 //
827 // +----------> x

Callers

nothing calls this directly

Calls 14

getPatternTopLeftKnobMethod · 0.80
getPatternBtmLeftKnobMethod · 0.80
getWeightKnobMethod · 0.80
getOffsetKnobMethod · 0.80
getReferenceFrameMethod · 0.80
isUserKeyframeMethod · 0.80
centerMethod · 0.80
getCenterKnobMethod · 0.45

Tested by

no test coverage detected