[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42395] branches/soc-2011-tomato: Add a toggle button to display motion tracker previews in grayscale.
Keir Mierle
mierle at gmail.com
Sun Dec 4 13:58:35 CET 2011
Revision: 42395
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42395
Author: keir
Date: 2011-12-04 12:58:31 +0000 (Sun, 04 Dec 2011)
Log Message:
-----------
Add a toggle button to display motion tracker previews in grayscale.
Modified Paths:
--------------
branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h
branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c
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-12-04 12:32:26 UTC (rev 42394)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py 2011-12-04 12:58:31 UTC (rev 42395)
@@ -353,10 +353,16 @@
layout.template_track(sc, "scopes")
row = layout.row(align=True)
- row.prop(act_track, "use_red_channel", text="R", toggle=True)
- row.prop(act_track, "use_green_channel", text="G", toggle=True)
- row.prop(act_track, "use_blue_channel", text="B", toggle=True)
+ sub = row.row()
+ sub.prop(act_track, "use_red_channel", text="R", toggle=True)
+ sub.prop(act_track, "use_green_channel", text="G", toggle=True)
+ sub.prop(act_track, "use_blue_channel", text="B", toggle=True)
+ row.separator()
+
+ sub = row.row()
+ sub.prop(act_track, "preview_grayscale", text="B/W", toggle=True)
+
layout.separator()
row = layout.row(align=True)
Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c 2011-12-04 12:32:26 UTC (rev 42394)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c 2011-12-04 12:58:31 UTC (rev 42395)
@@ -865,12 +865,12 @@
/* zap channels from the imbuf that are disabled by the user. this can lead to
* better tracks sometimes. however, instead of simply zeroing the channels
* out, do a partial grayscale conversion so the display is better. */
-static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track)
+static void disable_imbuf_channels(ImBuf *ibuf, MovieTrackingTrack *track, int grayscale)
{
int x, y;
float scale;
- if((track->flag&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0)
+ if((track->flag&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0 && !grayscale)
return;
/* If only some components are selected, it's important to rescale the result
@@ -888,15 +888,27 @@
float r = (track->flag&TRACK_DISABLE_RED) ? 0.0f : rrgbf[0];
float g = (track->flag&TRACK_DISABLE_GREEN) ? 0.0f : rrgbf[1];
float b = (track->flag&TRACK_DISABLE_BLUE) ? 0.0f : rrgbf[2];
- float gray = (0.2126f*r + 0.7152f*g + 0.0722f*b) / scale;
- rrgbf[0] = rrgbf[1] = rrgbf[2] = gray;
+ if (grayscale) {
+ float gray = (0.2126f*r + 0.7152f*g + 0.0722f*b) / scale;
+ rrgbf[0] = rrgbf[1] = rrgbf[2] = gray;
+ } else {
+ rrgbf[0] = r;
+ rrgbf[1] = g;
+ rrgbf[2] = b;
+ }
} else {
char *rrgb= (char*)ibuf->rect + pixel*4;
char r = (track->flag&TRACK_DISABLE_RED) ? 0 : rrgb[0];
char g = (track->flag&TRACK_DISABLE_GREEN) ? 0 : rrgb[1];
char b = (track->flag&TRACK_DISABLE_BLUE) ? 0 : rrgb[2];
- float gray = (0.2126f*r + 0.7152f*g + 0.0722f*b) / scale;
- rrgb[0] = rrgb[1] = rrgb[2] = gray;
+ if (grayscale) {
+ float gray = (0.2126f*r + 0.7152f*g + 0.0722f*b) / scale;
+ rrgb[0] = rrgb[1] = rrgb[2] = gray;
+ } else {
+ rrgb[0] = r;
+ rrgb[1] = g;
+ rrgb[2] = b;
+ }
}
}
}
@@ -938,7 +950,9 @@
origin[1]= y1-margin;
}
- disable_imbuf_channels(tmpibuf, track);
+ if (track->flag & TRACK_PREVIEW_GRAYSCALE) {
+ disable_imbuf_channels(tmpibuf, track, 1 /* grayscale */);
+ }
return tmpibuf;
}
@@ -967,7 +981,7 @@
height= (track->search_max[1]-track->search_min[1])*ibuf->y;
tmpibuf= BKE_tracking_get_search_imbuf(ibuf, track, marker, 0, 0, pos, origin);
- disable_imbuf_channels(tmpibuf, track);
+ disable_imbuf_channels(tmpibuf, track, 0 /* don't grayscale */);
*width_r= width;
*height_r= height;
@@ -979,22 +993,11 @@
if(tmpibuf->rect_float) {
float *rrgbf= tmpibuf->rect_float + pixel*4;
-
- if ((track->flag&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0)
- *fp= 0.2126*rrgbf[0] + 0.7152*rrgbf[1] + 0.0722*rrgbf[2];
- else
- /* disable_imbuf_channels already did the grayscale conversion */
- *fp= *rrgbf;
+ *fp= 0.2126*rrgbf[0] + 0.7152*rrgbf[1] + 0.0722*rrgbf[2];
} else {
unsigned char *rrgb= (unsigned char*)tmpibuf->rect + pixel*4;
-
- if ((track->flag&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0)
- *fp= (0.2126*rrgb[0] + 0.7152*rrgb[1] + 0.0722*rrgb[2])/255.0f;
- else
- /* disable_imbuf_channels already did the grayscale conversion */
- *fp= *rrgb / 255.0;
+ *fp= (0.2126*rrgb[0] + 0.7152*rrgb[1] + 0.0722*rrgb[2])/255.0f;
}
-
fp++;
}
}
@@ -1016,22 +1019,11 @@
if(ibuf->rect_float) {
float *rrgbf= ibuf->rect_float + pixel*4;
-
- if ((flags&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0)
- *cp= FTOCHAR(0.2126f*rrgbf[0] + 0.7152f*rrgbf[1] + 0.0722f*rrgbf[2]);
- else
- /* disable_imbuf_channels already did the grayscale conversion */
- *cp= FTOCHAR(*rrgbf);
+ *cp= FTOCHAR(0.2126f*rrgbf[0] + 0.7152f*rrgbf[1] + 0.0722f*rrgbf[2]);
} else {
unsigned char *rrgb= (unsigned char*)ibuf->rect + pixel*4;
-
- if ((flags&(TRACK_DISABLE_RED|TRACK_DISABLE_GREEN|TRACK_DISABLE_BLUE))==0)
- *cp= 0.2126f*rrgb[0] + 0.7152f*rrgb[1] + 0.0722f*rrgb[2];
- else
- /* disable_imbuf_channels already did the grayscale conversion */
- *cp= *rrgb;
+ *cp= 0.2126f*rrgb[0] + 0.7152f*rrgb[1] + 0.0722f*rrgb[2];
}
-
cp++;
}
}
@@ -1046,7 +1038,7 @@
unsigned char *pixels;
tmpibuf= BKE_tracking_get_search_imbuf(ibuf, track, marker, 0, 0, pos, origin);
- disable_imbuf_channels(tmpibuf, track);
+ disable_imbuf_channels(tmpibuf, track, 0 /* don't grayscale */);
*width_r= tmpibuf->x;
*height_r= tmpibuf->y;
Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h 2011-12-04 12:32:26 UTC (rev 42394)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h 2011-12-04 12:58:31 UTC (rev 42395)
@@ -207,6 +207,7 @@
#define TRACK_LOCKED (1<<6)
#define TRACK_CUSTOMCOLOR (1<<7)
#define TRACK_USE_2D_STAB (1<<8)
+#define TRACK_PREVIEW_GRAYSCALE (1<<9)
/* MovieTrackingTrack->tracker */
#define TRACKER_KLT 0
Modified: branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c 2011-12-04 12:32:26 UTC (rev 42394)
+++ branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c 2011-12-04 12:58:31 UTC (rev 42395)
@@ -673,6 +673,12 @@
RNA_def_property_ui_text(prop, "Use Blue Channel", "Use blue channel from footage for tracking");
RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+ /* preview_grayscale */
+ prop= RNA_def_property(srna, "preview_grayscale", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACK_PREVIEW_GRAYSCALE);
+ RNA_def_property_ui_text(prop, "Grayscale", "Display what the tracking algorithm sees in the preview");
+ RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
/* has bundle */
prop= RNA_def_property(srna, "has_bundle", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACK_HAS_BUNDLE);
More information about the Bf-blender-cvs
mailing list