[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38391] branches/soc-2011-tomato: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Thu Jul 14 14:05:40 CEST 2011


Revision: 38391
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38391
Author:   nazgul
Date:     2011-07-14 12:05:40 +0000 (Thu, 14 Jul 2011)
Log Message:
-----------
Camera tracking integration
===========================

Small fixes and features:
- Fixed broken toolshelf for empty space clip.
- Added option to hide disabled tracks.
- Do not send disabled markers to tracking job.
- Fixed bug with disabling marker when tracking backwards.
- Fixed bug with unset principal point by default.
- Hide bundle projection for disabled markers.
- Flip orientation when hitting "Set Axis" when bundle is
  already defines axis.

Modified Paths:
--------------
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
    branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c

Modified: branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-07-14 12:05:40 UTC (rev 38391)
@@ -121,9 +121,10 @@
     def draw(self, context):
         layout = self.layout
         clip = context.space_data.clip
-        settings = clip.tracking.settings
 
         if clip:
+            settings = clip.tracking.settings
+
             col = layout.column(align=True)
             col.label(text="Transform:")
             col.operator("transform.translate")
@@ -296,8 +297,11 @@
         row.active = sc.show_track_path
         row.prop(sc, "path_length", text="Length")
 
+        row = layout.row()
+        row.prop(sc, "show_disabled", text="Disabled")
+        row.prop(sc, "show_bundles", text="Bundles")
+
         layout.prop(sc, "show_tiny_markers", text="Tiny Markers")
-        layout.prop(sc, "show_bundles", text="Bundles")
 
         layout.prop(sc, "lock_selection")
         layout.prop(sc, "use_mute_footage")

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-07-14 12:05:40 UTC (rev 38391)
@@ -78,9 +78,11 @@
 void BKE_tracking_projection_matrix(struct MovieTracking *tracking, int framenr, int winx, int winy, float mat[4][4]);
 void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float co[2], float width, float height, float nco[2]);
 
-#define TRACK_SELECTED(track) ((track)->flag&SELECT || (track)->pat_flag&SELECT || (track)->search_flag&SELECT)
-#define TRACK_AREA_SELECTED(track, area) ((area)==TRACK_AREA_POINT?(track)->flag&SELECT : ((area)==TRACK_AREA_PAT?(track)->pat_flag&SELECT:(track)->search_flag&SELECT))
-#define TRACK_VIEW_SELECTED(track) ((track->flag&TRACK_HIDDEN)==0 && TRACK_SELECTED(track))
+#define TRACK_SELECTED(track)				((track)->flag&SELECT || (track)->pat_flag&SELECT || (track)->search_flag&SELECT)
+#define TRACK_AREA_SELECTED(track, area)	((area)==TRACK_AREA_POINT?(track)->flag&SELECT : ((area)==TRACK_AREA_PAT?(track)->pat_flag&SELECT:(track)->search_flag&SELECT))
+#define TRACK_VIEW_SELECTED(track)			((track->flag&TRACK_HIDDEN)==0 && TRACK_SELECTED(track))
+#define TRACK_VISIBLE(track)				(((track)->flag&TRACK_HIDDEN)==0)
+#define MARKER_VISIBLE(sc, marker)			(((marker)->flag&MARKER_DISABLED)==0 || ((sc)->flag&SC_HIDE_DISABLED)==0)
 
 #define CLAMP_PAT_DIM		1
 #define CLAMP_PAT_POS		2

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c	2011-07-14 12:05:40 UTC (rev 38391)
@@ -231,6 +231,7 @@
 MovieClip *BKE_add_movieclip_file(const char *name)
 {
 	MovieClip *clip;
+	MovieClipUser user;
 	int file, len, width, height;
 	const char *libname;
 	char str[FILE_MAX], strtest[FILE_MAX];
@@ -270,7 +271,8 @@
 	if(BLI_testextensie_array(name, imb_ext_movie)) clip->source= MCLIP_SRC_MOVIE;
 	else clip->source= MCLIP_SRC_SEQUENCE;
 
-	BKE_movieclip_acquire_size(clip, NULL, &width, &height);
+	user.framenr= 1;
+	BKE_movieclip_acquire_size(clip, &user, &width, &height);
 	if(width && height) {
 		clip->tracking.camera.principal[0]= ((float)width)/2;
 		clip->tracking.camera.principal[1]= ((float)height)/2;

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-07-14 12:05:40 UTC (rev 38391)
@@ -386,11 +386,15 @@
 
 	track= tracking->tracks.first;
 	while(track) {
-		if(TRACK_VIEW_SELECTED(track)) {
-			MovieTrackingTrack *new_track= BKE_tracking_copy_track(track);
+		if(TRACK_VIEW_SELECTED(track) && TRACK_VISIBLE(track)) {
+			MovieTrackingMarker *marker= BKE_tracking_get_marker(track, user->framenr);
 
-			BLI_addtail(&context->tracks, new_track);
-			BLI_ghash_insert(context->hash, new_track, track);
+			if((marker->flag&MARKER_DISABLED)==0) {
+				MovieTrackingTrack *new_track= BKE_tracking_copy_track(track);
+
+				BLI_addtail(&context->tracks, new_track);
+				BLI_ghash_insert(context->hash, new_track, track);
+			}
 		}
 
 		track= track->next;
@@ -661,7 +665,10 @@
 
 			} else {
 				marker_new= *marker;
-				marker_new.framenr++;
+
+				if(context->backwards) marker_new.framenr--;
+				else marker_new.framenr++;;
+
 				marker_new.flag|= MARKER_DISABLED;
 
 				BKE_tracking_insert_marker(track, &marker_new);

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c	2011-07-14 12:05:40 UTC (rev 38391)
@@ -524,7 +524,7 @@
 	if(sc->flag&SC_SHOW_TRACK_PATH) {
 		track= tracking->tracks.first;
 		while(track) {
-			if((track->flag&TRACK_HIDDEN)==0)
+			if(TRACK_VISIBLE(track))
 				draw_track_path(sc, clip, track);
 
 			track= track->next;
@@ -534,12 +534,14 @@
 	/* markers outline and non-selected areas */
 	track= tracking->tracks.first;
 	while(track) {
-		if((track->flag&TRACK_HIDDEN)==0) {
+		if(TRACK_VISIBLE(track)) {
 			marker= BKE_tracking_get_marker(track, framenr);
 
-			draw_marker_outline(sc, track, marker);
-			draw_marker_slide_zones(sc, track, marker, 1, 0, width, height);
-			draw_marker_areas(sc, track, marker, 0, 0);
+			if(MARKER_VISIBLE(sc, marker)) {
+				draw_marker_outline(sc, track, marker);
+				draw_marker_slide_zones(sc, track, marker, 1, 0, width, height);
+				draw_marker_areas(sc, track, marker, 0, 0);
+			}
 		}
 
 		track= track->next;
@@ -549,13 +551,16 @@
 	   non-selected areas */
 	track= tracking->tracks.first;
 	while(track) {
-		if((track->flag&TRACK_HIDDEN)==0) {
+		if(TRACK_VISIBLE(track)) {
 			int act= sel_type==MCLIP_SEL_TRACK && sel==track;
 
 			if(!act) {
 				marker= BKE_tracking_get_marker(track, framenr);
-				draw_marker_areas(sc, track, marker, 0, 1);
-				draw_marker_slide_zones(sc, track, marker, 0, 0, width, height);
+
+				if(MARKER_VISIBLE(sc, marker)) {
+					draw_marker_areas(sc, track, marker, 0, 1);
+					draw_marker_slide_zones(sc, track, marker, 0, 0, width, height);
+				}
 			}
 		}
 
@@ -564,10 +569,13 @@
 
 	/* active marker would be displayed on top of everything else */
 	if(sel_type==MCLIP_SEL_TRACK) {
-		if((((MovieTrackingTrack *)sel)->flag&TRACK_HIDDEN)==0) {
+		if(TRACK_VISIBLE((MovieTrackingTrack *)sel)) {
 			marker= BKE_tracking_get_marker(sel, framenr);
-			draw_marker_areas(sc, sel, marker, 1, 1);
-			draw_marker_slide_zones(sc, sel, marker, 0, 1, width, height);
+
+			if(MARKER_VISIBLE(sc, marker)) {
+				draw_marker_areas(sc, sel, marker, 1, 1);
+				draw_marker_slide_zones(sc, sel, marker, 0, 1, width, height);
+			}
 		}
 	}
 
@@ -581,29 +589,31 @@
 
 		track= tracking->tracks.first;
 		while(track) {
-			if((track->flag&TRACK_HIDDEN)==0 && track->flag&TRACK_HAS_BUNDLE) {
+			if(TRACK_VISIBLE(track) && track->flag&TRACK_HAS_BUNDLE) {
 				marker= BKE_tracking_get_marker(track, framenr);
 
-				copy_v4_v4(vec, track->bundle_pos);
-				vec[3]=1;
+				if(MARKER_VISIBLE(sc, marker)) {
+					copy_v4_v4(vec, track->bundle_pos);
+					vec[3]=1;
 
-				mul_v4_m4v4(pos, mat, vec);
+					mul_v4_m4v4(pos, mat, vec);
 
-				pos[0]= (pos[0]/(pos[3]*2.0f)+0.5f)*width;
-				pos[1]= (pos[1]/(pos[3]*2.0f)+0.5f)*height;
+					pos[0]= (pos[0]/(pos[3]*2.0f)+0.5f)*width;
+					pos[1]= (pos[1]/(pos[3]*2.0f)+0.5f)*height;
 
-				BKE_tracking_apply_intrinsics(tracking, pos, width, height, pos);
+					BKE_tracking_apply_intrinsics(tracking, pos, width, height, pos);
 
-				vec[0]= marker->pos[0]*width;
-				vec[1]= marker->pos[1]*height;
-				sub_v2_v2(vec, pos);
+					vec[0]= marker->pos[0]*width;
+					vec[1]= marker->pos[1]*height;
+					sub_v2_v2(vec, pos);
 
-				if(len_v2(vec)<3) glColor3f(0.0f, 1.0f, 0.0f);
-				else glColor3f(1.0f, 0.0f, 0.0f);
+					if(len_v2(vec)<3) glColor3f(0.0f, 1.0f, 0.0f);
+					else glColor3f(1.0f, 0.0f, 0.0f);
 
-				glBegin(GL_POINTS);
-					glVertex3f(pos[0]/width, pos[1]/height, 0);
-				glEnd();
+					glBegin(GL_POINTS);
+						glVertex3f(pos[0]/width, pos[1]/height, 0);
+					glEnd();
+				}
 			}
 
 			track= track->next;

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-07-14 12:05:40 UTC (rev 38391)
@@ -301,6 +301,9 @@
 	RNA_boolean_set(kmi->ptr, "unselected", 1);
 	WM_keymap_add_item(keymap, "CLIP_OT_hide_tracks_clear", HKEY, KM_PRESS, KM_ALT, 0);
 
+	kmi= WM_keymap_add_item(keymap, "CLIP_OT_disable_markers", DKEY, KM_PRESS, 0, 0);
+	RNA_enum_set(kmi->ptr, "action", 2);
+
 	transform_keymap_for_space(keyconf, keymap, SPACE_CLIP);
 }
 

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-07-14 12:04:21 UTC (rev 38390)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-07-14 12:05:40 UTC (rev 38391)
@@ -400,19 +400,22 @@
 	cur= clip->tracking.tracks.first;
 	while(cur) {
 		MovieTrackingMarker *marker= BKE_tracking_get_marker(cur, sc->user.framenr);
-		float dist, d1, d2, d3;
 
-		d1= sqrtf((co[0]-marker->pos[0])*(co[0]-marker->pos[0])+
-				  (co[1]-marker->pos[1])*(co[1]-marker->pos[1])); /* distance to marker point */

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list