forked from bartvdbraak/blender
Tracking: Add missing plane track remapping when joining two point tracks
This commit is contained in:
parent
260f75a2ca
commit
b35743d39f
@ -144,6 +144,13 @@ bool BKE_tracking_plane_track_remove_point_track(struct MovieTrackingPlaneTrack
|
||||
void BKE_tracking_plane_tracks_remove_point_track(struct MovieTracking *tracking,
|
||||
struct MovieTrackingTrack *track);
|
||||
|
||||
void BKE_tracking_plane_track_replace_point_track(struct MovieTrackingPlaneTrack *plane_track,
|
||||
struct MovieTrackingTrack *old_track,
|
||||
struct MovieTrackingTrack *new_track);
|
||||
void BKE_tracking_plane_tracks_replace_point_track(struct MovieTracking *tracking,
|
||||
struct MovieTrackingTrack *old_track,
|
||||
struct MovieTrackingTrack *new_track);
|
||||
|
||||
/* **** Plane Marker **** */
|
||||
struct MovieTrackingPlaneMarker *BKE_tracking_plane_marker_insert(struct MovieTrackingPlaneTrack *plane_track,
|
||||
struct MovieTrackingPlaneMarker *plane_marker);
|
||||
|
@ -1360,6 +1360,37 @@ void BKE_tracking_plane_tracks_remove_point_track(MovieTracking *tracking,
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_tracking_plane_track_replace_point_track(MovieTrackingPlaneTrack *plane_track,
|
||||
MovieTrackingTrack *old_track,
|
||||
MovieTrackingTrack *new_track)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < plane_track->point_tracksnr; i++) {
|
||||
if (plane_track->point_tracks[i] == old_track) {
|
||||
plane_track->point_tracks[i] = new_track;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_tracking_plane_tracks_replace_point_track(MovieTracking *tracking,
|
||||
MovieTrackingTrack *old_track,
|
||||
MovieTrackingTrack *new_track)
|
||||
{
|
||||
MovieTrackingPlaneTrack *plane_track;
|
||||
ListBase *plane_tracks_base = BKE_tracking_get_active_plane_tracks(tracking);
|
||||
for (plane_track = plane_tracks_base->first;
|
||||
plane_track;
|
||||
plane_track = plane_track->next)
|
||||
{
|
||||
if (BKE_tracking_plane_track_has_point_track(plane_track, old_track)) {
|
||||
BKE_tracking_plane_track_replace_point_track(plane_track,
|
||||
old_track,
|
||||
new_track);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*********************** Plane Marker *************************/
|
||||
|
||||
MovieTrackingPlaneMarker *BKE_tracking_plane_marker_insert(MovieTrackingPlaneTrack *plane_track,
|
||||
|
@ -3117,6 +3117,12 @@ static int join_tracks_exec(bContext *C, wmOperator *op)
|
||||
if (tracking->stabilization.rot_track == track)
|
||||
tracking->stabilization.rot_track = act_track;
|
||||
|
||||
/* TODO(sergey): Re-evaluate planes with auto-key. */
|
||||
BKE_tracking_plane_tracks_replace_point_track(tracking,
|
||||
track,
|
||||
act_track);
|
||||
|
||||
|
||||
BKE_tracking_track_free(track);
|
||||
BLI_freelinkN(tracksbase, track);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user