Move search area form track to marker structure
This allows different markers has different size of search area which
makes it possible to scale search area when doing planar tracking.
Made changes to all related areas such as transformation, tracking,
finally ported marker clamping function, added python bindings for
changed search area and added python API for pattern corners.
TODO: It's still possible to make marker's center go outside of pattern
corners when translating pattern area or rotating it around median
point.
This commit is contained in:
@@ -642,27 +642,30 @@ static void recalcData_spaceclip(TransInfo *t)
|
||||
MovieClip *clip = ED_space_clip(sc);
|
||||
ListBase *tracksbase = BKE_tracking_get_tracks(&clip->tracking);
|
||||
MovieTrackingTrack *track;
|
||||
int framenr = sc->user.framenr;
|
||||
|
||||
flushTransTracking(t);
|
||||
|
||||
track = tracksbase->first;
|
||||
while (track) {
|
||||
if (TRACK_VIEW_SELECTED(sc, track) && (track->flag & TRACK_LOCKED)==0) {
|
||||
MovieTrackingMarker *marker = BKE_tracking_get_marker(track, framenr);
|
||||
|
||||
if (t->mode == TFM_TRANSLATION) {
|
||||
if (TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
|
||||
BKE_tracking_clamp_track(track, CLAMP_PAT_POS);
|
||||
BKE_tracking_clamp_marker(marker, CLAMP_PAT_POS);
|
||||
if (TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
|
||||
BKE_tracking_clamp_track(track, CLAMP_SEARCH_POS);
|
||||
BKE_tracking_clamp_marker(marker, CLAMP_SEARCH_POS);
|
||||
}
|
||||
else if (t->mode == TFM_RESIZE) {
|
||||
if (TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
|
||||
BKE_tracking_clamp_track(track, CLAMP_PAT_DIM);
|
||||
BKE_tracking_clamp_marker(marker, CLAMP_PAT_DIM);
|
||||
if (TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))
|
||||
BKE_tracking_clamp_track(track, CLAMP_SEARCH_DIM);
|
||||
BKE_tracking_clamp_marker(marker, CLAMP_SEARCH_DIM);
|
||||
}
|
||||
else if (t->mode == TFM_ROTATION) {
|
||||
if (TRACK_AREA_SELECTED(track, TRACK_AREA_PAT))
|
||||
BKE_tracking_clamp_track(track, CLAMP_PAT_DIM);
|
||||
BKE_tracking_clamp_marker(marker, CLAMP_PAT_POS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user