[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [37895] branches/soc-2011-salad: Merging r37741 through r37894 from soc-2011-tomato into soc-2011-salad

Sergey Sharybin g.ulairi at gmail.com
Tue Jun 28 12:27:01 CEST 2011


Revision: 37895
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37895
Author:   nazgul
Date:     2011-06-28 10:27:00 +0000 (Tue, 28 Jun 2011)
Log Message:
-----------
Merging r37741 through r37894 from soc-2011-tomato into soc-2011-salad
Keep splash image unmerged.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37741
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37894

Modified Paths:
--------------
    branches/soc-2011-salad/release/datafiles/splash.png
    branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-salad/source/blender/blenkernel/intern/movieclip.c
    branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-salad/source/blender/editors/include/UI_interface.h
    branches/soc-2011-salad/source/blender/editors/space_clip/clip_buttons.c
    branches/soc-2011-salad/source/blender/editors/space_clip/clip_draw.c
    branches/soc-2011-salad/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-salad/source/blender/editors/space_clip/tracking_ops.c
    branches/soc-2011-salad/source/blender/editors/transform/transform_conversions.c
    branches/soc-2011-salad/source/blender/makesdna/DNA_space_types.h
    branches/soc-2011-salad/source/blender/makesdna/DNA_tracking_types.h
    branches/soc-2011-salad/source/blender/makesrna/intern/rna_tracking.c
    branches/soc-2011-salad/source/blender/makesrna/intern/rna_ui_api.c
    branches/soc-2011-salad/source/blenderplayer/bad_level_call_stubs/stubs.c

Property Changed:
----------------
    branches/soc-2011-salad/


Property changes on: branches/soc-2011-salad
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2010-jwilkins:28499-37009
/branches/soc-2010-nicolasbishop:28448-30783,30792-30793,30797-30798,30815
/branches/soc-2011-cucumber:36829-36994
/branches/soc-2011-onion:36833-37529
/branches/soc-2011-pepper:36830-37151
/branches/soc-2011-tomato:36831-37740
/trunk/blender:36834-37893
   + /branches/soc-2010-jwilkins:28499-37009
/branches/soc-2010-nicolasbishop:28448-30783,30792-30793,30797-30798,30815
/branches/soc-2011-cucumber:36829-36994
/branches/soc-2011-onion:36833-37529
/branches/soc-2011-pepper:36830-37151
/branches/soc-2011-tomato:36831-37894
/trunk/blender:36834-37893

Modified: branches/soc-2011-salad/release/datafiles/splash.png
===================================================================
(Binary files differ)

Modified: branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py	2011-06-28 10:13:24 UTC (rev 37894)
+++ branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py	2011-06-28 10:27:00 UTC (rev 37895)
@@ -66,17 +66,26 @@
 
             col = layout.column(align=True)
             col.label(text="2D tracking:")
-            col.operator("clip.track_markers")
-            col.operator("clip.track_markers", text="Track Backwards").backwards=True
-            col.operator("clip.clear_track_path")
+            row = col.row(align=True)
+
+            op = row.operator("clip.track_markers", text="", icon='REW')
+            op.sequence = True
+            op.backwards = True
+            op = row.operator("clip.track_markers", text="", icon='PLAY_REVERSE')
+            op.backwards = True
+            row.operator("clip.track_markers", text="", icon='PLAY')
+            op = row.operator("clip.track_markers", text="", icon='FF')
+            op.sequence = True
+
+            layout.operator("clip.clear_track_path")
         else:
-          layout.operator('clip.open')
+            layout.operator('clip.open')
 
 
-class CLIP_PT_marker_preview(bpy.types.Panel):
+class CLIP_PT_track(bpy.types.Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'UI'
-    bl_label = "Marker Preview"
+    bl_label = "Track"
 
     @classmethod
     def poll(cls, context):
@@ -90,9 +99,17 @@
         sc = context.space_data
         clip = context.space_data.clip
 
-        layout.template_marker(clip.tracking, "act_track", sc.clip_user, clip)
+        layout.template_track(clip.tracking, "act_track", sc.clip_user, clip)
 
+        act_track = clip.tracking.act_track
 
+        if act_track:
+            row = layout.row()
+            row.prop(act_track, "use_red_channel", text="Red")
+            row.prop(act_track, "use_green_channel", text="Green")
+            row.prop(act_track, "use_blue_channel", text="Blue")
+
+
 class CLIP_PT_track_settings(bpy.types.Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'UI'

Modified: branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h	2011-06-28 10:13:24 UTC (rev 37894)
+++ branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h	2011-06-28 10:27:00 UTC (rev 37895)
@@ -45,6 +45,7 @@
 void BKE_tracking_track_flag(struct MovieTrackingTrack *track, int area, int flag, int clear);
 void BKE_tracking_insert_marker(struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker);
 struct MovieTrackingMarker *BKE_tracking_get_marker(struct MovieTrackingTrack *track, int framenr);
+struct MovieTrackingMarker *BKE_tracking_ensure_marker(struct MovieTrackingTrack *track, int framenr);
 int BKE_tracking_has_marker(struct MovieTrackingTrack *track, int framenr);
 
 void BKE_tracking_free_track(struct MovieTrackingTrack *track);

Modified: branches/soc-2011-salad/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- branches/soc-2011-salad/source/blender/blenkernel/intern/movieclip.c	2011-06-28 10:13:24 UTC (rev 37894)
+++ branches/soc-2011-salad/source/blender/blenkernel/intern/movieclip.c	2011-06-28 10:27:00 UTC (rev 37895)
@@ -357,11 +357,7 @@
 	else clip->source= MCLIP_SRC_SEQUENCE;
 }
 
-/* area - which part of marker should be selected:
-    0 - the whole marker and pattern/search
-	1 - only marker
-	2 - only pattern
-	3 - only search */
+/* area - which part of marker should be selected. see TRACK_AREA_* constants */
 void BKE_movieclip_select_track(MovieClip *clip, MovieTrackingTrack *track, int area, int extend)
 {
 	if(extend) {

Modified: branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c	2011-06-28 10:13:24 UTC (rev 37894)
+++ branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c	2011-06-28 10:27:00 UTC (rev 37895)
@@ -150,7 +150,7 @@
 {
 	MovieTrackingMarker *old_marker= BKE_tracking_get_marker(track, marker->framenr);
 
-	if(old_marker) {
+	if(old_marker && old_marker->framenr==marker->framenr) {
 		*old_marker= *marker;
 	} else {
 		int a= track->markersnr;
@@ -167,6 +167,8 @@
 
 		memmove(track->markers+a+2, track->markers+a+1, (track->markersnr-a-2)*sizeof(MovieTrackingMarker));
 		track->markers[a+1]= *marker;
+
+		track->last_marker= a+1;
 	}
 }
 
@@ -177,39 +179,58 @@
 	if(!track->markersnr)
 		return NULL;
 
-	if((track->flag&TRACK_PROCESSED)==0) {
-		/* non-precessed tracks contains the only marker
-		   which should be used independelntly from current frame number. */
+	/* approximate pre-first framenr marker with first marker */
+	if(framenr<track->markers[0].framenr)
+		return &track->markers[0];
 
-		if(track->markersnr)
-			return &track->markers[0];
-
-		return NULL;
-	}
-
 	if(track->last_marker<track->markersnr)
 		a= track->last_marker;
 
 	if(track->markers[a].framenr<=framenr) {
-		while(a<track->markersnr) {
+		while(a<track->markersnr && track->markers[a].framenr<=framenr) {
 			if(track->markers[a].framenr==framenr) {
 				track->last_marker= a;
 				return &track->markers[a];
 			}
 			a++;
 		}
+
+		/* if there's no marker for exact position, use nearest marker from left side */
+		return &track->markers[a-1];
 	} else {
-		while(a--) {
+		while(a>=0 && track->markers[a].framenr>=framenr) {
 			if(track->markers[a].framenr==framenr) {
 				track->last_marker= a;
 				return &track->markers[a];
 			}
+
+			a--;
 		}
+
+		/* if there's no marker for exact position, use nearest marker from left side */
+		return &track->markers[a];
 	}
 
 	return NULL;
 }
 
+MovieTrackingMarker *BKE_tracking_ensure_marker(MovieTrackingTrack *track, int framenr)
+{
+	MovieTrackingMarker *marker= BKE_tracking_get_marker(track, framenr);
+
+	if(marker && marker->framenr!=framenr) {
+		MovieTrackingMarker marker_new;
+
+		marker_new= *marker;
+		marker_new.framenr= framenr;
+
+		BKE_tracking_insert_marker(track, &marker_new);
+		marker= BKE_tracking_get_marker(track, framenr);
+	}
+
+	return marker;
+}
+
 int BKE_tracking_has_marker(MovieTrackingTrack *track, int framenr)
 {
 	return BKE_tracking_get_marker(track, framenr) != 0;
@@ -333,6 +354,25 @@
 	MEM_freeN(context);
 }
 
+static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track)
+{
+	int x, y;
+
+	if((track->flag&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0)
+		return;
+
+	for(y= 0; y<ibuf->x; y++) {
+		for (x= 0; x<ibuf->y; x++) {
+			int pixel= ibuf->x*y + x;
+			char *rrgb= (char*)ibuf->rect + pixel*4;
+
+			if(track->flag&TRACK_DISABLE_RED)	rrgb[0]= 0;
+			if(track->flag&TRACK_DISABLE_GREEN)	rrgb[1]= 0;
+			if(track->flag&TRACK_DISABLE_BLUE)	rrgb[2]= 0;
+		}
+	}
+}
+
 static ImBuf *acquire_area_imbuf(ImBuf *ibuf, MovieTrackingTrack *track, MovieTrackingMarker *marker, float min[2], float max[2], int pos[2])
 {
 	ImBuf *tmpibuf;
@@ -360,6 +400,8 @@
 	pos[0]= x-x1;
 	pos[1]= y-y1;
 
+	disable_imbuf_channels(tmpibuf, track);
+
 	return tmpibuf;
 }
 
@@ -388,6 +430,7 @@
 	IMB_rectcpy(tmpibuf, ibuf, 0, 0,
 			(track->search_min[0]+marker->pos[0])*ibuf->x,
 			(track->search_min[1]+marker->pos[1])*ibuf->y, width, height);
+	disable_imbuf_channels(tmpibuf, track);
 
 	*width_r= width;
 	*height_r= height;
@@ -515,7 +558,7 @@
 	while(track) {
 		MovieTrackingMarker *marker= BKE_tracking_get_marker(track, curfra);
 
-		if(marker) {
+		if(marker && marker->framenr==curfra) {
 #ifdef WITH_LIBMV
 			int width, height, pos[2];
 			float *patch= acquire_search_floatbuf(ibuf, track, marker, &width, &height, pos);
@@ -533,17 +576,13 @@
 						x1, y1, &x2, &y2)) {
 				MovieTrackingMarker marker_new;
 
+				memset(&marker_new, 0, sizeof(marker_new));
 				marker_new.pos[0]= marker->pos[0]+track->search_min[0]+x2/ibuf_new->x;
 				marker_new.pos[1]= marker->pos[1]+track->search_min[1]+y2/ibuf_new->y;
 
 				if(context->backwards) marker_new.framenr= curfra-1;
 				else marker_new.framenr= curfra+1;
 
-				/* happens when current frame was changed after placing marker
-				   but before tracking it */
-				if(marker->framenr!=curfra)
-					marker->framenr= curfra;
-
 				track->flag|= TRACK_PROCESSED;
 
 				BKE_tracking_insert_marker(track, &marker_new);

Modified: branches/soc-2011-salad/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/soc-2011-salad/source/blender/editors/include/UI_interface.h	2011-06-28 10:13:24 UTC (rev 37894)
+++ branches/soc-2011-salad/source/blender/editors/include/UI_interface.h	2011-06-28 10:27:00 UTC (rev 37895)
@@ -726,7 +726,7 @@
 void uiTemplateList(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname, struct PointerRNA *activeptr, const char *activeprop, int rows, int maxrows, int type);
 
 void uiTemplateMovieClip(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname, struct PointerRNA *userptr, int compact);
-void uiTemplateMarker(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname, struct PointerRNA *userptr, struct PointerRNA *clipptr);
+void uiTemplateTrack(struct uiLayout *layout, struct PointerRNA *ptr, const char *propname, struct PointerRNA *userptr, struct PointerRNA *clipptr);
 

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list