[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51212] trunk/blender: Motion Tracking: move keyframe settings to per-tracking object settings

Sergey Sharybin sergey.vfx at gmail.com
Tue Oct 9 12:33:18 CEST 2012


Revision: 51212
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51212
Author:   nazgul
Date:     2012-10-09 10:33:18 +0000 (Tue, 09 Oct 2012)
Log Message:
-----------
Motion Tracking: move keyframe settings to per-tracking object settings

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_clip.py
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/intern/tracking.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/space_clip/clip_draw.c
    trunk/blender/source/blender/editors/space_clip/tracking_ops.c
    trunk/blender/source/blender/makesdna/DNA_tracking_types.h
    trunk/blender/source/blender/makesrna/intern/rna_tracking.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2012-10-09 10:33:18 UTC (rev 51212)
@@ -311,8 +311,8 @@
 
         col = layout.column(align=True)
         col.active = not settings.use_tripod_solver
-        col.prop(settings, "keyframe_a")
-        col.prop(settings, "keyframe_b")
+        col.prop(tracking_object, "keyframe_a")
+        col.prop(tracking_object, "keyframe_b")
 
         col = layout.column(align=True)
         col.active = (tracking_object.is_camera and

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2012-10-09 10:33:18 UTC (rev 51212)
@@ -42,7 +42,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         264
-#define BLENDER_SUBVERSION      1
+#define BLENDER_SUBVERSION      2
 
 /* 262 was the last editmesh release but its has compatibility code for bmesh data,
  * so set the minversion to 2.61 */

Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c	2012-10-09 10:33:18 UTC (rev 51212)
@@ -169,8 +169,6 @@
 	tracking->settings.default_minimum_correlation = 0.75;
 	tracking->settings.default_pattern_size = 11;
 	tracking->settings.default_search_size = 61;
-	tracking->settings.keyframe1 = 1;
-	tracking->settings.keyframe2 = 30;
 	tracking->settings.dist = 1;
 	tracking->settings.object_distance = 1;
 
@@ -1179,6 +1177,8 @@
 	tracking->objectnr = BLI_countlist(&tracking->objects) - 1;
 
 	object->scale = 1.0f;
+	object->keyframe1 = 1;
+	object->keyframe2 = 30;
 
 	BKE_tracking_object_unique_name(tracking, object);
 
@@ -2755,10 +2755,11 @@
 	return flags;
 }
 
-static int reconstruct_count_tracks_on_both_keyframes(MovieTracking *tracking, ListBase *tracksbase)
+static int reconstruct_count_tracks_on_both_keyframes(MovieTracking *tracking, MovieTrackingObject *object)
 {
+	ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, object);
 	int tot = 0;
-	int frame1 = tracking->settings.keyframe1, frame2 = tracking->settings.keyframe2;
+	int frame1 = object->keyframe1, frame2 = object->keyframe2;
 	MovieTrackingTrack *track;
 
 	track = tracksbase->first;
@@ -2779,13 +2780,11 @@
 int BKE_tracking_reconstruction_check(MovieTracking *tracking, MovieTrackingObject *object, char *error_msg, int error_size)
 {
 #ifdef WITH_LIBMV
-	ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, object);
-
 	if (tracking->settings.motion_flag & TRACKING_MOTION_MODAL) {
 		/* TODO: check for number of tracks? */
 		return TRUE;
 	}
-	else if (reconstruct_count_tracks_on_both_keyframes(tracking, tracksbase) < 8) {
+	else if (reconstruct_count_tracks_on_both_keyframes(tracking, object) < 8) {
 		BLI_strncpy(error_msg, "At least 8 common tracks on both of keyframes are needed for reconstruction",
 		            error_size);
 

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-10-09 10:33:18 UTC (rev 51212)
@@ -8016,6 +8016,25 @@
 				do_version_ntree_tex_coord_from_dupli_264(NULL, NULL, ntree);
 	}
 
+	if (main->versionfile < 264 || (main->versionfile == 264 && main->subversionfile < 2)) {
+		MovieClip *clip;
+
+		for (clip = main->movieclip.first; clip; clip = clip->id.next) {
+			MovieTracking *tracking = &clip->tracking;
+			MovieTrackingObject *tracking_object;
+
+			for (tracking_object = tracking->objects.first;
+			     tracking_object;
+			     tracking_object = tracking_object->next)
+			{
+				if (tracking_object->keyframe1 == 0 && tracking_object->keyframe2 == 0) {
+					tracking_object->keyframe1 = tracking->settings.keyframe1;
+					tracking_object->keyframe2 = tracking->settings.keyframe2;
+				}
+			}
+		}
+	}
+
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
 

Modified: trunk/blender/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_draw.c	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/editors/space_clip/clip_draw.c	2012-10-09 10:33:18 UTC (rev 51212)
@@ -117,6 +117,7 @@
 	int *points, totseg, i, a;
 	float sfra = SFRA, efra = EFRA, framelen = ar->winx / (efra - sfra + 1);
 	MovieTracking *tracking = &clip->tracking;
+	MovieTrackingObject *act_object = BKE_tracking_object_get_active(tracking);
 	MovieTrackingTrack *act_track = BKE_tracking_track_get_active(&clip->tracking);
 	MovieTrackingReconstruction *reconstruction = BKE_tracking_get_active_reconstruction(tracking);
 
@@ -218,8 +219,8 @@
 
 	/* solver keyframes */
 	glColor4ub(175, 255, 0, 255);
-	draw_keyframe(tracking->settings.keyframe1 + clip->start_frame - 1, CFRA, sfra, framelen, 2);
-	draw_keyframe(tracking->settings.keyframe2 + clip->start_frame - 1, CFRA, sfra, framelen, 2);
+	draw_keyframe(act_object->keyframe1 + clip->start_frame - 1, CFRA, sfra, framelen, 2);
+	draw_keyframe(act_object->keyframe2 + clip->start_frame - 1, CFRA, sfra, framelen, 2);
 
 	/* movie clip animation */
 	if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask_info.mask) {

Modified: trunk/blender/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/tracking_ops.c	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/editors/space_clip/tracking_ops.c	2012-10-09 10:33:18 UTC (rev 51212)
@@ -1343,7 +1343,6 @@
 	MovieClip *clip = ED_space_clip_get_clip(sc);
 	Scene *scene = CTX_data_scene(C);
 	MovieTracking *tracking = &clip->tracking;
-	MovieTrackingSettings *settings = &clip->tracking.settings;
 	MovieTrackingObject *object = BKE_tracking_object_get_active(tracking);
 	int width, height;
 
@@ -1359,7 +1358,7 @@
 	scj->user = sc->user;
 
 	scj->context = BKE_tracking_reconstruction_context_new(tracking, object,
-	                                                       settings->keyframe1, settings->keyframe2, width, height);
+	                                                       object->keyframe1, object->keyframe2, width, height);
 
 	tracking->stats = MEM_callocN(sizeof(MovieTrackingStats), "solve camera stats");
 
@@ -2859,14 +2858,14 @@
 	SpaceClip *sc = CTX_wm_space_clip(C);
 	MovieClip *clip = ED_space_clip_get_clip(sc);
 	MovieTracking *tracking = &clip->tracking;
-	MovieTrackingSettings *settings = &tracking->settings;
+	MovieTrackingObject *object = BKE_tracking_object_get_active(tracking);
 	int keyframe = RNA_enum_get(op->ptr, "keyframe");
 	int framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, sc->user.framenr);
 
 	if (keyframe == 0)
-		settings->keyframe1 = framenr;
+		object->keyframe1 = framenr;
 	else
-		settings->keyframe2 = framenr;
+		object->keyframe2 = framenr;
 
 	WM_event_add_notifier(C, NC_MOVIECLIP | ND_DISPLAY, clip);
 

Modified: trunk/blender/source/blender/makesdna/DNA_tracking_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_tracking_types.h	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/makesdna/DNA_tracking_types.h	2012-10-09 10:33:18 UTC (rev 51212)
@@ -162,7 +162,10 @@
 	short speed;            /* speed of tracking */
 
 	/* ** reconstruction settings ** */
-	int keyframe1, keyframe2;   /* two keyframes for reconstrution initialization */
+	int keyframe1 DNA_DEPRECATED,
+		keyframe2 DNA_DEPRECATED;   /* two keyframes for reconstrution initialization
+		                             * were moved to per-tracking object settings
+		                             */
 
 	/* which camera intrinsics to refine. uses on the REFINE_* flags */
 	short refine_camera_intrinsics, pad2;
@@ -220,6 +223,8 @@
 
 	ListBase tracks;        /* list of tracks use to tracking this object */
 	MovieTrackingReconstruction reconstruction; /* reconstruction data for this object */
+
+	int keyframe1, keyframe2;   /* two keyframes for reconstrution initialization */
 } MovieTrackingObject;
 
 typedef struct MovieTrackingStats {

Modified: trunk/blender/source/blender/makesrna/intern/rna_tracking.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_tracking.c	2012-10-09 10:20:25 UTC (rev 51211)
+++ trunk/blender/source/blender/makesrna/intern/rna_tracking.c	2012-10-09 10:33:18 UTC (rev 51212)
@@ -567,18 +567,6 @@
 	                         "Limit speed of tracking to make visual feedback easier "
 	                         "(this does not affect the tracking quality)");
 
-	/* keyframe_a */
-	prop = RNA_def_property(srna, "keyframe_a", PROP_INT, PROP_NONE);
-	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
-	RNA_def_property_int_sdna(prop, NULL, "keyframe1");
-	RNA_def_property_ui_text(prop, "Keyframe A", "First keyframe used for reconstruction initialization");
-
-	/* keyframe_b */
-	prop = RNA_def_property(srna, "keyframe_b", PROP_INT, PROP_NONE);
-	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
-	RNA_def_property_int_sdna(prop, NULL, "keyframe2");
-	RNA_def_property_ui_text(prop, "Keyframe B", "Second keyframe used for reconstruction initialization");
-
 	/* intrinsics refinement during bundle adjustment */
 	prop = RNA_def_property(srna, "refine_intrinsics", PROP_ENUM, PROP_NONE);
 	RNA_def_property_enum_sdna(prop, NULL, "refine_camera_intrinsics");
@@ -1393,6 +1381,18 @@
 	RNA_def_property_float_default(prop, 1.0f);
 	RNA_def_property_ui_text(prop, "Scale", "Scale of object solution in camera space");

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list