[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