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

Sergey Sharybin g.ulairi at gmail.com
Wed Jul 20 17:02:49 CEST 2011


Revision: 38542
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38542
Author:   nazgul
Date:     2011-07-20 15:02:49 +0000 (Wed, 20 Jul 2011)
Log Message:
-----------
Camera tracking integration
===========================

Test feature: configurable marker colors in Clip Editor.

Use presets, so plenty of different color could be defined and
easily re-used.

Modified Paths:
--------------
    branches/soc-2011-tomato/release/scripts/startup/bl_operators/presets.py
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c

Added Paths:
-----------
    branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/
    branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/default.py
    branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/far_plane.py
    branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/near_plane.py

Added: branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/default.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/default.py	                        (rev 0)
+++ branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/default.py	2011-07-20 15:02:49 UTC (rev 38542)
@@ -0,0 +1,5 @@
+import bpy
+track = bpy.context.edit_movieclip.tracking.active_track
+
+track.color = (0.0, 0.0, 0.0)
+track.use_custom_color = False

Added: branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/far_plane.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/far_plane.py	                        (rev 0)
+++ branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/far_plane.py	2011-07-20 15:02:49 UTC (rev 38542)
@@ -0,0 +1,5 @@
+import bpy
+track = bpy.context.edit_movieclip.tracking.active_track
+
+track.color = (0.0, 0.0, 1.0)
+track.use_custom_color = True

Added: branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/near_plane.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/near_plane.py	                        (rev 0)
+++ branches/soc-2011-tomato/release/scripts/presets/tracking_track_color/near_plane.py	2011-07-20 15:02:49 UTC (rev 38542)
@@ -0,0 +1,5 @@
+import bpy
+track = bpy.context.edit_movieclip.tracking.active_track
+
+track.color = (0.0, 1.0, 0.0)
+track.use_custom_color = True

Modified: branches/soc-2011-tomato/release/scripts/startup/bl_operators/presets.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_operators/presets.py	2011-07-20 14:56:40 UTC (rev 38541)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_operators/presets.py	2011-07-20 15:02:49 UTC (rev 38542)
@@ -318,6 +318,24 @@
     preset_subdir = "tracking_camera"
 
 
+class AddPresetTrackingTrackColor(AddPresetBase, bpy.types.Operator):
+    '''Add a Clip Track Color Preset'''
+    bl_idname = "clip.track_color_preset_add"
+    bl_label = "Add Track Color Preset"
+    preset_menu = "CLIP_MT_track_color_presets"
+
+    preset_defines = [
+        "track = bpy.context.edit_movieclip.tracking.active_track"
+    ]
+
+    preset_values = [
+        "track.color",
+        "track.use_custom_color"
+    ]
+
+    preset_subdir = "tracking_track_color"
+
+
 class AddPresetKeyconfig(AddPresetBase, bpy.types.Operator):
     '''Add a Keyconfig Preset'''
     bl_idname = "wm.keyconfig_preset_add"

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-07-20 14:56:40 UTC (rev 38541)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-07-20 15:02:49 UTC (rev 38542)
@@ -214,6 +214,18 @@
         layout.prop(act_track, "name")
         layout.prop(act_track, "locked")
 
+        row = layout.row(align=True)
+        label = bpy.types.CLIP_MT_track_color_presets.bl_label
+        row.menu('CLIP_MT_track_color_presets', text=label)
+        row.operator("clip.track_color_preset_add", text="", icon="ZOOMIN")
+        op = row.operator("clip.track_color_preset_add", text="", icon="ZOOMOUT")
+        op.remove_active = True
+
+        row = layout.row()
+        row.prop(act_track, "use_custom_color")
+        if act_track.use_custom_color:
+            row.prop(act_track, "color", text="")
+
         layout.template_track(sc, "scopes")
 
         row = layout.row()
@@ -521,5 +533,12 @@
     draw = bpy.types.Menu.draw_preset
 
 
+class CLIP_MT_track_color_presets(bpy.types.Menu):
+    bl_label = "Color Presets"
+    preset_subdir = "tracking_track_color"
+    preset_operator = "script.execute_preset"
+    draw = bpy.types.Menu.draw_preset
+
+
 if __name__ == "__main__":  # only for live edit.
     bpy.utils.register_module(__name__)

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c	2011-07-20 14:56:40 UTC (rev 38541)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_draw.c	2011-07-20 15:02:49 UTC (rev 38542)
@@ -320,12 +320,29 @@
 	if(!tiny) glLineWidth(1.0f);
 }
 
+static void track_colors(MovieTrackingTrack *track, int act, float col[3], float scol[3])
+{
+	if(track->flag&TRACK_CUSTOMCOLOR) {
+		if(act) UI_GetThemeColor3fv(TH_ACT_MARKER, scol);
+		else copy_v3_v3(scol, track->color);
+
+		mul_v3_v3fl(col, track->color, 0.5f);
+	} else {
+		UI_GetThemeColor3fv(TH_MARKER, col);
+
+		if(act) UI_GetThemeColor3fv(TH_ACT_MARKER, scol);
+		else UI_GetThemeColor3fv(TH_SEL_MARKER, scol);
+	}
+}
+
 static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, int act, int sel)
 {
-	int color= act?TH_ACT_MARKER:TH_SEL_MARKER;
 	int tiny= sc->flag&SC_SHOW_TINY_MARKER;
 	int show_pat= 0;
+	float col[3], scol[3];
 
+	track_colors(track, act, col, scol);
+
 	/* marker position */
 	if((track->flag&SELECT)==sel && (marker->flag&MARKER_DISABLED)==0) {
 		if(track->flag&TRACK_LOCKED) {
@@ -333,8 +350,8 @@
 			else if(track->flag&SELECT) UI_ThemeColorShade(TH_LOCK_MARKER, 64);
 			else UI_ThemeColor(TH_LOCK_MARKER);
 		} else
-		if(track->flag&SELECT) UI_ThemeColor(color);
-		else UI_ThemeColor(TH_MARKER);
+		if(track->flag&SELECT) glColor3fv(scol);
+		else glColor3fv(col);
 
 		if(!tiny) glPointSize(2.0f);
 		glBegin(GL_POINTS);
@@ -364,8 +381,8 @@
 			else if(track->pat_flag&SELECT) UI_ThemeColorShade(TH_DIS_MARKER, 128);
 			else UI_ThemeColor(TH_DIS_MARKER);
 		} else {
-			if(track->pat_flag&SELECT) UI_ThemeColor(color);
-			else UI_ThemeColor(TH_MARKER);
+			if(track->pat_flag&SELECT) glColor3fv(scol);
+			else glColor3fv(col);
 		}
 
 		if(sc->flag&SC_SHOW_MARKER_PATTERN) {
@@ -390,8 +407,8 @@
 			else if(track->search_flag&SELECT) UI_ThemeColorShade(TH_DIS_MARKER, 128);
 			else UI_ThemeColor(TH_DIS_MARKER);
 		} else {
-			if(track->search_flag&SELECT) UI_ThemeColor(color);
-			else UI_ThemeColor(TH_MARKER);
+			if(track->search_flag&SELECT) glColor3fv(scol);
+			else glColor3fv(col);
 		}
 
 		if(sc->flag&SC_SHOW_MARKER_SEARCH) {
@@ -412,9 +429,9 @@
 
 static void draw_marker_slide_zones(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker, int outline, int act, int width, int height)
 {
-	int color= act?TH_ACT_MARKER:TH_SEL_MARKER;
 	float x, y, dx, dy, tdx, tdy;
 	int tiny= sc->flag&SC_SHOW_TINY_MARKER;
+	float col[3], scol[3];
 
 	if((tiny && outline) || (marker->flag&MARKER_DISABLED))
 		return;
@@ -422,12 +439,14 @@
 	if(!TRACK_SELECTED(track) || track->flag&TRACK_LOCKED)
 		return;
 
+	track_colors(track, act, col, scol);
+
 	if(outline) {
 		glLineWidth(3.0f);
 		UI_ThemeColor(TH_MARKER_OUTLINE);
 	} else {
-		if(track->search_flag&SELECT) UI_ThemeColor(color);
-		else UI_ThemeColor(TH_MARKER);
+		if(track->search_flag&SELECT) glColor3fv(scol);
+		else glColor3fv(col);
 	}
 
 	glPushMatrix();
@@ -476,8 +495,8 @@
 		dy= 10.0f/height/sc->zoom;
 
 		if(!outline) {
-			if(track->pat_flag&SELECT) UI_ThemeColor(color);
-			else UI_ThemeColor(TH_MARKER);
+			if(track->pat_flag&SELECT) glColor3fv(scol);
+			else glColor3fv(col);
 		}
 
 		x= track->pat_max[0];

Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h	2011-07-20 14:56:40 UTC (rev 38541)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_tracking_types.h	2011-07-20 15:02:49 UTC (rev 38542)
@@ -96,8 +96,8 @@
 	/* ** UI editing ** */
 	int flag, pat_flag, search_flag;	/* flags (selection, ...) */
 	short transflag;					/* transform flags */
-
-	char pad3[6];
+	char pad3[2];
+	float color[3];						/* custom color for track */
 } MovieTrackingTrack;
 
 typedef struct MovieTrackingSettings {
@@ -132,6 +132,7 @@
 #define TRACK_DISABLE_BLUE	(1<<4)
 #define TRACK_HIDDEN		(1<<5)
 #define TRACK_LOCKED		(1<<6)
+#define TRACK_CUSTOMCOLOR	(1<<7)
 
 /* MovieTrackingSettings->speed */
 #define TRACKING_SPEED_FASTEST		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-07-20 14:56:40 UTC (rev 38541)
+++ branches/soc-2011-tomato/source/blender/makesrna/intern/rna_tracking.c	2011-07-20 15:02:49 UTC (rev 38542)
@@ -382,6 +382,19 @@
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACK_LOCKED);
 	RNA_def_property_ui_text(prop, "Locked", "Track is locked and all changes to it are disabled");
 	RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+	/* custom color */
+	prop= RNA_def_property(srna, "use_custom_color", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACK_CUSTOMCOLOR);
+	RNA_def_property_ui_text(prop, "Custom Color", "Use custom color instead of theme-defined");
+	RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+	/* color */
+	prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
+	RNA_def_property_array(prop, 3);
+	RNA_def_property_range(prop, 0.0f, 1.0f);
+	RNA_def_property_ui_text(prop, "Color", "Color of the track in the Clip Editor");
+	RNA_def_property_update(prop, NC_ANIMATION, NULL);	
 }
 
 static void rna_def_tracking(BlenderRNA *brna)




More information about the Bf-blender-cvs mailing list