[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