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

Sergey Sharybin g.ulairi at gmail.com
Wed Jun 29 20:05:07 CEST 2011


Revision: 37953
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37953
Author:   nazgul
Date:     2011-06-29 18:05:07 +0000 (Wed, 29 Jun 2011)
Log Message:
-----------
Camera tracking integration
===========================

- Internal changes:
  * Fixed bundle.sh script to bundle libmv: it was generating
    incorrect CMakeLists header.
  * Rename CLIP_OP_delete to CLIP_OT_delete_track.
  * Fixed crash when BKE_movieclip_acquire_ibuf is called
    with NULL user.
  * Made MovieTrackingMarker structure 8-bytes aligned
  * Use writestruct rather than writedata for track markers.
    This allows to change MovieTrackingMarker safely.
- Added "Delete Marker" operator which deletes marker for
  current frame only. Hotkey is Shift-Del.
- Added MovieClip.size and MovieClip.resolution RNA properties.
  Use last accessed frame number to get ImBuf from sequence.
- Added different actions for "Clear Path" operator:
  * Clear path up to current frame.
  * Clear the whole path.
  * Cleat remained part of path (for frames after current).
- Changed buttons order and icons for tracking. New order is:
  * Track frame backwards.
  * Track sequence backwards.
  * Track sequence forwards.
  * Track frame forwards.

NOTE: this breaks compatibility with existing .blend files again,
      but it should be much easier to change data structures without
      breackaged in the future.

Modified Paths:
--------------
    branches/soc-2011-tomato/extern/libmv/bundle.sh
    branches/soc-2011-tomato/release/datafiles/blenderbuttons
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h
    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/blenloader/intern/writefile.c
    branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c
    branches/soc-2011-tomato/source/blender/editors/include/UI_icons.h
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h
    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_tracking_types.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_movieclip.c

Modified: branches/soc-2011-tomato/extern/libmv/bundle.sh
===================================================================
--- branches/soc-2011-tomato/extern/libmv/bundle.sh	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/extern/libmv/bundle.sh	2011-06-29 18:05:07 UTC (rev 37953)
@@ -48,7 +48,7 @@
 # along with this program; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #
-# The Original Code is Copyright (C) 2006, Blender Foundation
+# The Original Code is Copyright (C) 2011, Blender Foundation
 # All rights reserved.
 #
 # Contributor(s): Blender Foundation,

Modified: branches/soc-2011-tomato/release/datafiles/blenderbuttons
===================================================================
(Binary files differ)

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-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-06-29 18:05:07 UTC (rev 37953)
@@ -62,22 +62,26 @@
 
             col.label(text="Marker:")
             col.operator("clip.add_marker_move")
-            col.operator("clip.delete")
+            col.operator("clip.delete_track")
+            col.operator("clip.delete_marker")
 
             col = layout.column(align=True)
             col.label(text="2D tracking:")
             row = col.row(align=True)
 
-            op = row.operator("clip.track_markers", text="", icon='REW')
-            op.sequence = True
+            op = row.operator("clip.track_markers", text="", icon='FRAME_PREV')
             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
+            op = row.operator("clip.track_markers", text="", icon='PLAY')
+            op.sequence = True
+            row.operator("clip.track_markers", text="", icon='FRAME_NEXT')
 
-            layout.operator("clip.clear_track_path")
+            col = layout.column(align=True)
+            col.operator("clip.clear_track_path", text="Clear Remained Path").action = 'REMAINED'
+            col.operator("clip.clear_track_path", text="Clear Path Up To").action = 'UPTO'
+            col.operator("clip.clear_track_path", text="Clear Track Path").action = 'ALL'
         else:
             layout.operator('clip.open')
 
@@ -280,7 +284,8 @@
 
         sc = context.space_data
 
-        layout.operator("clip.delete")
+        layout.operator("clip.delete_track")
+        layout.operator("clip.delete_marker")
         layout.menu("CLIP_MT_marker")
 
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_movieclip.h	2011-06-29 18:05:07 UTC (rev 37953)
@@ -58,4 +58,8 @@
 
 void BKE_movieclip_get_cache_segments(struct MovieClip *clip, int *totseg_r, int **points_r);
 
+#define TRACK_CLEAR_UPTO		0
+#define TRACK_CLEAR_REMAINED	1
+#define TRACK_CLEAR_ALL			2
+
 #endif

Modified: branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/BKE_tracking.h	2011-06-29 18:05:07 UTC (rev 37953)
@@ -44,13 +44,15 @@
 void BKE_tracking_clamp_track(struct MovieTrackingTrack *track, int event);
 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);
+void BKE_tracking_delete_marker(struct MovieTrackingTrack *track, int framenr);
 struct MovieTrackingMarker *BKE_tracking_get_marker(struct MovieTrackingTrack *track, int framenr);
 struct MovieTrackingMarker *BKE_tracking_ensure_marker(struct MovieTrackingTrack *track, int framenr);
+struct MovieTrackingMarker *BKE_tracking_exact_marker(struct MovieTrackingTrack *track, int framenr);
 int BKE_tracking_has_marker(struct MovieTrackingTrack *track, int framenr);
 
 void BKE_tracking_free_track(struct MovieTrackingTrack *track);
 struct MovieTrackingTrack *BKE_tracking_copy_track(struct MovieTrackingTrack *track);
-void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame);
+void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame, int action);
 void BKE_tracking_free(struct MovieTracking *tracking);
 
 struct ImBuf *BKE_tracking_acquire_pattern_imbuf(struct ImBuf *ibuf, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, int pos[2]);

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/movieclip.c	2011-06-29 18:05:07 UTC (rev 37953)
@@ -183,7 +183,7 @@
 	if(clip->ibuf_cache) {
 		MovieClipImBufCacheKey key;
 
-		key.framenr= user->framenr;
+		key.framenr= user?user->framenr:clip->lastframe;
 		return BKE_moviecache_get(clip->ibuf_cache, &key);
 	}
 

Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c	2011-06-29 18:05:07 UTC (rev 37953)
@@ -172,6 +172,28 @@
 	}
 }
 
+void BKE_tracking_delete_marker(MovieTrackingTrack *track, int framenr)
+{
+	int a= 1;
+
+	while(a<track->markersnr) {
+		if(track->markers[a].framenr==framenr) {
+			if(track->markersnr>1) {
+				memmove(track->markers+a, track->markers+a+1, (track->markersnr-a-1)*sizeof(MovieTrackingMarker));
+				track->markersnr--;
+				track->markers= MEM_reallocN(track->markers, sizeof(MovieTrackingMarker)*track->markersnr);
+			} else {
+				MEM_freeN(track->markers);
+				track->markers= NULL;
+				track->markersnr= 0;
+			}
+
+			break;
+		}
+
+		a++;
+	}}
+
 MovieTrackingMarker *BKE_tracking_get_marker(MovieTrackingTrack *track, int framenr)
 {
 	int a= track->markersnr-1;
@@ -231,6 +253,16 @@
 	return marker;
 }
 
+MovieTrackingMarker *BKE_tracking_exact_marker(MovieTrackingTrack *track, int framenr)
+{
+	MovieTrackingMarker *marker= BKE_tracking_get_marker(track, framenr);
+
+	if(marker && marker->framenr!=framenr)
+		return NULL;
+
+	return marker;
+}
+
 int BKE_tracking_has_marker(MovieTrackingTrack *track, int framenr)
 {
 	return BKE_tracking_get_marker(track, framenr) != 0;
@@ -253,17 +285,49 @@
 	return new_track;
 }
 
-void BKE_tracking_clear_path(MovieTrackingTrack *track, int ref_frame)
+void BKE_tracking_clear_path(MovieTrackingTrack *track, int ref_frame, int action)
 {
-	int a= 1;
+	int a;
 
-	while(a<track->markersnr) {
-		if(track->markers[a].framenr>ref_frame) {
-			track->markersnr= a;
-			track->markers= MEM_reallocN(track->markers, sizeof(MovieTrackingMarker)*track->markersnr);
+	if(action==TRACK_CLEAR_REMAINED) {
+		a= 1;
+		while(a<track->markersnr) {
+			if(track->markers[a].framenr>ref_frame) {
+				track->markersnr= a;
+				track->markers= MEM_reallocN(track->markers, sizeof(MovieTrackingMarker)*track->markersnr);
+
+				break;
+			}
+
+			a++;
 		}
+	} else if(action==TRACK_CLEAR_UPTO) {
+		a= track->markersnr-1;
+		while(a>=0) {
+			if(track->markers[a].framenr<=ref_frame) {
+				memmove(track->markers, track->markers+a, (track->markersnr-a)*sizeof(MovieTrackingMarker));
 
-		a++;
+				track->markersnr= track->markersnr-a;
+				track->markers= MEM_reallocN(track->markers, sizeof(MovieTrackingMarker)*track->markersnr);
+
+				break;
+			}
+
+			a--;
+		}
+	} else if(action==TRACK_CLEAR_ALL) {
+		MovieTrackingMarker *marker, marker_new;
+
+		marker= BKE_tracking_get_marker(track, ref_frame);
+		if(marker)
+			marker_new= *marker;
+
+		MEM_freeN(track->markers);
+		track->markers= NULL;
+		track->markersnr= 0;
+
+		if(marker)
+			BKE_tracking_insert_marker(track, &marker_new);
 	}
 }
 

Modified: branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/blenloader/intern/writefile.c	2011-06-29 18:05:07 UTC (rev 37953)
@@ -2426,8 +2426,9 @@
 			track= clip->tracking.tracks.first;
 			while(track) {
 				writestruct(wd, DATA, "MovieTrackingTrack", 1, track);
+
 				if(track->markers)
-					writedata(wd, DATA, track->markersnr*sizeof(MovieTrackingMarker), track->markers);
+					writestruct(wd, DATA, "MovieTrackingMarker", track->markersnr, track->markers);
 
 				track= track->next;
 			}

Modified: branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c	2011-06-29 18:03:03 UTC (rev 37952)
+++ branches/soc-2011-tomato/source/blender/editors/datafiles/blenderbuttons.c	2011-06-29 18:05:07 UTC (rev 37953)
@@ -1,6603 +1,6611 @@
 /* DataToC output of file <blenderbuttons> */
 
-int datatoc_blenderbuttons_size= 211084;
+int datatoc_blenderbuttons_size= 211354;
 char datatoc_blenderbuttons[]= {
-137, 80, 78, 71, 13, 10, 26, 10,  0,  0,  0, 13,
- 73, 72, 68, 82,  0,  0,  2, 90,  0,  0,  2,128,  8,  6,  0,  0,  0, 68,254,214,163,  0,  0, 10, 79,105, 67, 67, 80, 80,104,111,
-116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101,  0,  0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,
-244, 66, 75,136,128,148, 75,111, 82, 21,  8, 32, 82, 66,139,128, 20,145, 38, 42, 33,  9, 16, 74,136, 33,161,217, 21, 81,193, 17,

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list