[Bf-blender-cvs] [b35743d] master: Tracking: Add missing plane track remapping when joining two point tracks

Sergey Sharybin noreply at git.blender.org
Tue Apr 21 23:10:57 CEST 2015


Commit: b35743d39f574717731899669117d8de79fce082
Author: Sergey Sharybin
Date:   Wed Apr 22 02:10:13 2015 +0500
Branches: master
https://developer.blender.org/rBb35743d39f574717731899669117d8de79fce082

Tracking: Add missing plane track remapping when joining two point tracks

===================================================================

M	source/blender/blenkernel/BKE_tracking.h
M	source/blender/blenkernel/intern/tracking.c
M	source/blender/editors/space_clip/tracking_ops.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h
index 5af05f4..ea56c08 100644
--- a/source/blender/blenkernel/BKE_tracking.h
+++ b/source/blender/blenkernel/BKE_tracking.h
@@ -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);
diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c
index e7dccc0..e3f0429 100644
--- a/source/blender/blenkernel/intern/tracking.c
+++ b/source/blender/blenkernel/intern/tracking.c
@@ -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,
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index db8881a..5c88ad8 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -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);
 		}




More information about the Bf-blender-cvs mailing list