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

Sergey Sharybin g.ulairi at gmail.com
Tue Jul 19 12:40:23 CEST 2011


Revision: 38507
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38507
Author:   nazgul
Date:     2011-07-19 10:40:22 +0000 (Tue, 19 Jul 2011)
Log Message:
-----------
Camera tracking integration
===========================

- Remove set but not used variable in clip buttons.
- Set keyframe when sliding marker with mouse.
- Also set keyframe when sliding from preview widget.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
    branches/soc-2011-tomato/source/blender/editors/interface/interface_handlers.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_movieclip_types.h

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c	2011-07-19 08:31:53 UTC (rev 38506)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c	2011-07-19 10:40:22 UTC (rev 38507)
@@ -453,7 +453,8 @@
 		scopes->track_preview= NULL;
 	}
 
-	scopes->marker_pos= NULL;
+	scopes->marker= NULL;
+	scopes->track= NULL;
 
 	if(clip) {
 		BKE_movieclip_last_selection(clip, &sel_type, &sel);
@@ -486,14 +487,14 @@
 				IMB_freeImBuf(ibuf);
 			}
 
-			scopes->marker_pos= marker->pos;
+			scopes->marker= marker;
+			scopes->track= track;
 			scopes->slide_scale[0]= track->pat_max[0]-track->pat_min[0];
 			scopes->slide_scale[1]= track->pat_max[1]-track->pat_min[1];
-			scopes->marker_flag= &marker->flag;
 		}
 	}
 
-
+	scopes->framenr= user->framenr;
 	scopes->ok= 1;
 }
 

Modified: branches/soc-2011-tomato/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/interface/interface_handlers.c	2011-07-19 08:31:53 UTC (rev 38506)
+++ branches/soc-2011-tomato/source/blender/editors/interface/interface_handlers.c	2011-07-19 10:40:22 UTC (rev 38507)
@@ -56,6 +56,7 @@
 #include "BKE_idprop.h"
 #include "BKE_report.h"
 #include "BKE_texture.h"
+#include "BKE_tracking.h"
 #include "BKE_unit.h"
 
 #include "ED_screen.h"
@@ -4081,11 +4082,14 @@
 		 /* resize preview widget itself */
 		scopes->track_preview_height = (but->y2 - but->y1) + (data->dragstarty - my);
 	} else {
-		if(scopes->marker_pos) {
-			(*scopes->marker_flag)&= ~MARKER_DISABLED;
-			scopes->marker_pos[0]+= -dx*scopes->slide_scale[0] / (but->block->maxx-but->block->minx);
-			scopes->marker_pos[1]+= -dy*scopes->slide_scale[1] / (but->block->maxy-but->block->miny);
+		if(scopes->marker) {
+			if(scopes->marker->framenr!=scopes->framenr)
+				scopes->marker= BKE_tracking_ensure_marker(scopes->track, scopes->framenr);
 
+			scopes->marker->flag&= ~MARKER_DISABLED;
+			scopes->marker->pos[0]+= -dx*scopes->slide_scale[0] / (but->block->maxx-but->block->minx);
+			scopes->marker->pos[1]+= -dy*scopes->slide_scale[1] / (but->block->maxy-but->block->miny);
+
 			WM_event_add_notifier(C, NC_MOVIECLIP|NA_EDITED, NULL);
 		}
 

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c	2011-07-19 08:31:53 UTC (rev 38506)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c	2011-07-19 10:40:22 UTC (rev 38507)
@@ -341,7 +341,6 @@
 	PropertyRNA *prop;
 	PointerRNA scopesptr;
 	uiBlock *block;
-	uiBut *bt;
 	rctf rect;
 	MovieClipScopes *scopes;
 
@@ -369,5 +368,5 @@
 
 	scopes->track_preview_height= (scopes->track_preview_height<=UI_UNIT_Y)?UI_UNIT_Y:scopes->track_preview_height;
 
-	bt= uiDefBut(block, TRACKPREVIEW, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, scopes->track_preview_height, scopes, 0, 0, 0, 0, "");
+	uiDefBut(block, TRACKPREVIEW, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, scopes->track_preview_height, scopes, 0, 0, 0, 0, "");
 }

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-19 08:31:53 UTC (rev 38506)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-07-19 10:40:22 UTC (rev 38507)
@@ -1616,10 +1616,13 @@
 	int lock, accurate;
 } SlideMarkerData;
 
-static SlideMarkerData *create_slide_marker_data(MovieTrackingTrack *track, MovieTrackingMarker *marker, wmEvent *event, int area, int width, int height)
+static SlideMarkerData *create_slide_marker_data(SpaceClip *sc, MovieTrackingTrack *track,
+			MovieTrackingMarker *marker, wmEvent *event, int area, int width, int height)
 {
 	SlideMarkerData *data= MEM_callocN(sizeof(SlideMarkerData), "slide marker data");
 
+	marker= BKE_tracking_ensure_marker(track, sc->user.framenr);
+
 	data->area= area;
 	data->track= track;
 
@@ -1705,15 +1708,15 @@
 			if(marker && (marker->flag&MARKER_DISABLED)==0) {
 				if(sc->flag&SC_SHOW_MARKER_SEARCH) {
 					if(mouse_on_corner(sc, track, 15.0f, co, 1, marker->pos, track->search_min, track->search_max, width, height))
-						op->customdata= create_slide_marker_data(track, marker, event, TRACK_AREA_POINT, width, height);
+						op->customdata= create_slide_marker_data(sc, track, marker, event, TRACK_AREA_POINT, width, height);
 
 					if(mouse_on_corner(sc, track, 15.0f, co, 0, marker->pos, track->search_min, track->search_max, width, height))
-						op->customdata= create_slide_marker_data(track, marker, event, TRACK_AREA_SEARCH, width, height);
+						op->customdata= create_slide_marker_data(sc, track, marker, event, TRACK_AREA_SEARCH, width, height);
 				}
 
 				if(sc->flag&SC_SHOW_MARKER_PATTERN)
 					if(mouse_on_corner(sc, track, 10.0f, co, 0, marker->pos, track->pat_min, track->pat_max, width, height))
-						op->customdata= create_slide_marker_data(track, marker, event, TRACK_AREA_PAT, width, height);
+						op->customdata= create_slide_marker_data(sc, track, marker, event, TRACK_AREA_PAT, width, height);
 
 				if(op->customdata) {
 					WM_event_add_modal_handler(C, op);

Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_movieclip_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_movieclip_types.h	2011-07-19 08:31:53 UTC (rev 38506)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_movieclip_types.h	2011-07-19 10:40:22 UTC (rev 38507)
@@ -42,6 +42,8 @@
 
 struct anim;
 struct ImBuf;
+struct MovieTrackingTrack;
+struct MovieTrackingMarker;
 
 typedef struct MovieClipUser {
 	int framenr;	/* current frame number */
@@ -76,9 +78,10 @@
 	struct ImBuf *track_preview;	/* ImBuf displayed in track preview */
 	float track_pos[2];				/* sub-pizel position of marker in track ImBuf */
 	short track_disabled;			/* active track is disabled, special notifier should be drawn */
-	char pad[6];
-	float *marker_pos;				/* original marker position. used for sliding from preview */
-	int *marker_flag;				/* original marker flags. used for sliding from preview */
+	char pad[2];
+	int framenr;					/* frame number scopes are created for */
+	struct MovieTrackingTrack *track;	/* track scopes are created for */
+	struct MovieTrackingMarker *marker;	/* marker scopes are created for */
 	float slide_scale[2];			/* scale used for sliding from previewe area */
 } MovieClipScopes;
 




More information about the Bf-blender-cvs mailing list