Camera tracking: made some options more easy to understand
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 15 Nov 2011 12:20:58 +0000 (12:20 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 15 Nov 2011 12:20:58 +0000 (12:20 +0000)
- Changed some names so now people who aren't really familiar with
  motion tracking can understand what they exactly means
- Also cleaned up and rephraded some descriptions
- Changed behavior of operator which creates empty for 2d tracks:
  now it operates on all selected tracks rather than active track only
- Added checkbox to enable/disable rotation stabilization

13 files changed:
release/scripts/presets/camera/Sony_A55.py [new file with mode: 0644]
release/scripts/presets/tracking_camera/Sony_A55.py [new file with mode: 0644]
release/scripts/startup/bl_operators/clip.py
release/scripts/startup/bl_ui/space_clip.py
release/scripts/startup/bl_ui/space_view3d.py
source/blender/blenkernel/intern/tracking.c
source/blender/editors/space_clip/clip_buttons.c
source/blender/editors/space_clip/clip_ops.c
source/blender/editors/space_clip/tracking_ops.c
source/blender/makesdna/DNA_tracking_types.h
source/blender/makesrna/intern/rna_movieclip.c
source/blender/makesrna/intern/rna_space.c
source/blender/makesrna/intern/rna_tracking.c

diff --git a/release/scripts/presets/camera/Sony_A55.py b/release/scripts/presets/camera/Sony_A55.py
new file mode 100644 (file)
index 0000000..0de8198
--- /dev/null
@@ -0,0 +1,5 @@
+import bpy
+bpy.context.object.data.sensor_width = 23.4
+bpy.context.object.data.sensor_height = 15.6
+bpy.context.object.data.sensor_fit = 'HORIZONTAL'
+
diff --git a/release/scripts/presets/tracking_camera/Sony_A55.py b/release/scripts/presets/tracking_camera/Sony_A55.py
new file mode 100644 (file)
index 0000000..f3095c6
--- /dev/null
@@ -0,0 +1,11 @@
+import bpy
+camera = bpy.context.edit_movieclip.tracking.camera
+
+camera.sensor_width = 23.4
+camera.sensor_height = 15.6
+camera.units = 'MILLIMETERS'
+camera.focal_length = 24.0
+camera.pixel_aspect = 1
+camera.k1 = 0.0
+camera.k2 = 0.0
+camera.k3 = 0.0
index 203a1673c0b682d11e8824eb2462397c7c705dac..091e3defbf8431be41a82cc37faa5a417c8b3e82 100644 (file)
@@ -24,27 +24,27 @@ from bpy.types import Operator
 from bpy_extras.io_utils import unpack_list
 
 
+def CLIP_track_view_selected(sc, track):
+    if track.select_anchor:
+        return True
+
+    if sc.show_marker_pattern and track.select_pattern:
+        return True
+
+    if sc.show_marker_search and track.select_search:
+        return True
+
+    return False
+
 class CLIP_OT_track_to_empty(Operator):
     """Create an Empty object which will be copying movement of active track"""
 
     bl_idname = "clip.track_to_empty"
-    bl_label = "2D Track to Empty"
+    bl_label = "Link Empty to Track"
     bl_options = {'UNDO', 'REGISTER'}
 
-    @classmethod
-    def poll(cls, context):
-        if context.space_data.type != 'CLIP_EDITOR':
-            return False
-
+    def _link_track(self, context, track):
         sc = context.space_data
-        clip = sc.clip
-
-        return clip and clip.tracking.tracks.active
-
-    def execute(self, context):
-        sc = context.space_data
-        clip = sc.clip
-        track = clip.tracking.tracks.active
         constraint = None
         ob = None
 
@@ -65,6 +65,14 @@ class CLIP_OT_track_to_empty(Operator):
         constraint.track = track.name
         constraint.use_3d_position = False
 
+    def execute(self, context):
+        sc = context.space_data
+        clip = sc.clip
+
+        for track in clip.tracking.tracks:
+            if CLIP_track_view_selected(sc, track):
+                self._link_track(context, track)
+
         return {'FINISHED'}
 
 
@@ -179,7 +187,7 @@ class CLIP_OT_delete_proxy(Operator):
 
 
 class CLIP_OT_set_viewport_background(Operator):
-    """Set current movie clip as a camera background in 3D viewport"""
+    """Set current movie clip as a camera background in 3D viewport (works only when a 3D viewport is visible)"""
 
     bl_idname = "clip.set_viewport_background"
     bl_label = "Set as Background"
index 968c583f1fece22439352c0929e222f5968358db..c6af6bab1d1bbd63ea7f0cd866f9f899bddf3b44 100644 (file)
@@ -55,7 +55,11 @@ class CLIP_HT_header(Header):
 
                 if sc.show_filters:
                     row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_DOWN', text="Filters")
-                    row.prop(sc, "show_graph_frames", icon='SEQUENCE', text="")
+
+                    sub = row.column()
+                    sub.active = clip.tracking.reconstruction.is_valid
+                    sub.prop(sc, "show_graph_frames", icon='SEQUENCE', text="")
+
                     row.prop(sc, "show_graph_tracks", icon='ANIM', text="")
                 else:
                     row.prop(sc, "show_filters", icon='DISCLOSURE_TRI_RIGHT', text="Filters")
@@ -130,16 +134,16 @@ class CLIP_PT_tools_tracking(Panel):
         props = col.operator("clip.clear_track_path", text="Clear Before")
         props.action = 'UPTO'
 
-        props = col.operator("clip.clear_track_path", text="Clear Track Path")
+        props = col.operator("clip.clear_track_path", text="Clear")
         props.action = 'ALL'
 
-        layout.operator("clip.join_tracks")
+        layout.operator("clip.join_tracks", text="Join")
 
 
-class CLIP_PT_tools_solving(Panel):
+class CLIP_PT_tools_solve(Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'TOOLS'
-    bl_label = "Solving"
+    bl_label = "Solve"
 
     @classmethod
     def poll(cls, context):
@@ -154,7 +158,7 @@ class CLIP_PT_tools_solving(Panel):
         settings = clip.tracking.settings
 
         col = layout.column(align=True)
-        col.operator("clip.solve_camera")
+        col.operator("clip.solve_camera", text="Camera Motion")
         col.operator("clip.clear_solution")
 
         col = layout.column(align=True)
@@ -405,8 +409,8 @@ class CLIP_PT_display(Panel):
         col.prop(sc, "show_disabled", "Disabled Tracks")
         col.prop(sc, "show_bundles", text="Bundles")
 
-        col.prop(sc, "show_names", text="Track Names")
-        col.prop(sc, "show_tiny_markers", text="Tiny Markers")
+        col.prop(sc, "show_names", text="Track Names and Status")
+        col.prop(sc, "show_tiny_markers", text="Compact Markers")
 
         col.prop(sc, "show_grease_pencil", text="Grease Pencil")
         col.prop(sc, "use_mute_footage", text="Mute")
@@ -421,7 +425,7 @@ class CLIP_PT_display(Panel):
 
         clip = sc.clip
         if clip:
-            col.label(text="Display Aspect:")
+            col.label(text="Display Aspect Ratio:")
             col.prop(clip, "display_aspect", text="")
 
 
@@ -496,23 +500,21 @@ class CLIP_PT_stabilization(Panel):
 
         layout.prop(stab, "influence_location")
 
-        layout.separator()
-
         layout.prop(stab, "use_autoscale")
         col = layout.column()
         col.active = stab.use_autoscale
         col.prop(stab, "scale_max")
         col.prop(stab, "influence_scale")
 
-        layout.separator()
-
-        layout.label(text="Rotation:")
+        layout.prop(stab, "use_stabilize_rotation")
+        col = layout.column()
+        col.active = stab.use_stabilize_rotation
 
-        row = layout.row(align=True)
+        row = col.row(align=True)
         row.prop_search(stab, "rotation_track", tracking, "tracks", text="")
         row.operator("clip.stabilize_2d_set_rotation", text="", icon='ZOOMIN')
 
-        row = layout.row()
+        row = col.row()
         row.active = stab.rotation_track is not None
         row.prop(stab, "influence_rotation")
 
@@ -854,6 +856,7 @@ class CLIP_MT_tracking_specials(Menu):
 
 
 class CLIP_MT_camera_presets(Menu):
+    """Predefined tracking camera intrinsics"""
     bl_label = "Camera Presets"
     preset_subdir = "tracking_camera"
     preset_operator = "script.execute_preset"
@@ -861,6 +864,7 @@ class CLIP_MT_camera_presets(Menu):
 
 
 class CLIP_MT_track_color_presets(Menu):
+    """Predefined track color"""
     bl_label = "Color Presets"
     preset_subdir = "tracking_track_color"
     preset_operator = "script.execute_preset"
index 97e40bfff3087b19e18cb3d679b4ccbd365882e6..2bfbd15cf55bf8b541067dfb451bcd2421474196 100644 (file)
@@ -2204,7 +2204,7 @@ class VIEW3D_PT_view3d_motion_tracking(Panel):
 
         col = layout.column()
         col.active = view.show_reconstruction
-        col.prop(view, "show_tracks_name", text="Show Names")
+        col.prop(view, "show_tracks_name")
         col.prop(view, "show_camera_path")
         col.label(text="Tracks:")
         col.prop(view, "tracks_draw_type", text="")
index d582ad7c4d8d062e8bbf8a97a22ba7ce33631d04..59fdf403f0f8d0f6c6fb819870ed55a38764d739 100644 (file)
@@ -1874,7 +1874,7 @@ static void calculate_stabdata(MovieTracking *tracking, int framenr, float width
 
        mul_v2_fl(loc, stab->locinf);
 
-       if(stab->rot_track && stab->rotinf) {
+       if((stab->flag&TRACKING_STABILIZE_ROTATION) && stab->rot_track && stab->rotinf) {
                MovieTrackingMarker *marker;
                float a[2], b[2];
                float x0= (float)width/2.0f, y0= (float)height/2.0f;
@@ -1916,7 +1916,8 @@ static float stabilization_auto_scale_factor(MovieTracking *tracking, int width,
 
                track= tracking->tracks.first;
                while(track) {
-                       if(track->flag&TRACK_USE_2D_STAB || track==stab->rot_track) {
+                       if(track->flag&TRACK_USE_2D_STAB ||
+                          ((stab->flag&TRACKING_STABILIZE_ROTATION) && track==stab->rot_track)) {
                                if(track->markersnr) {
                                        sfra= MIN2(sfra, track->markers[0].framenr);
                                        efra= MAX2(efra, track->markers[track->markersnr-1].framenr);
index 149aa9106b0f966edc2f8e6c3a7e53e8b901e533..43eb45b17a75923ac07efa1c7e094315d7adcd9e 100644 (file)
@@ -320,6 +320,7 @@ void uiTemplateMarker(uiLayout *layout, PointerRNA *ptr, const char *propname, P
        MovieTrackingTrack *track;
        MovieTrackingMarker *marker;
        MarkerUpdateCb *cb;
+       const char *tip;
 
        if(!ptr->data)
                return;
@@ -353,7 +354,12 @@ void uiTemplateMarker(uiLayout *layout, PointerRNA *ptr, const char *propname, P
        if(compact) {
                block= uiLayoutGetBlock(layout);
 
-               bt= uiDefIconButBitI(block, TOGN, MARKER_DISABLED, 0, ICON_RESTRICT_VIEW_OFF, 0, 0, 20, 20, &cb->marker_flag, 0, 0, 1, 0, "Marker is disabled for current frame.");
+               if(cb->marker_flag&MARKER_DISABLED)
+                       tip= "Marker is disabled at current frame";
+               else
+                       tip= "Marker is enabled at current frame";
+
+               bt= uiDefIconButBitI(block, TOGN, MARKER_DISABLED, 0, ICON_RESTRICT_VIEW_OFF, 0, 0, 20, 20, &cb->marker_flag, 0, 0, 1, 0, tip);
                uiButSetNFunc(bt, marker_update_cb, cb, NULL);
        } else {
                int width, height, step, digits;
@@ -394,8 +400,13 @@ void uiTemplateMarker(uiLayout *layout, PointerRNA *ptr, const char *propname, P
                uiBlockSetHandleFunc(block, marker_block_handler, cb);
                uiBlockSetNFunc(block, marker_update_cb, cb, NULL);
 
+               if(cb->marker_flag&MARKER_DISABLED)
+                       tip= "Marker is disabled at current frame";
+               else
+                       tip= "Marker is enabled at current frame";
+
                uiDefButBitI(block, OPTIONN, MARKER_DISABLED, B_MARKER_FLAG,  "Enabled", 10, 190, 145, 19, &cb->marker_flag,
-                       0, 0, 0, 0, "Marker is disabled for current frame.");
+                       0, 0, 0, 0, tip);
 
                col= uiLayoutColumn(layout, 1);
                uiLayoutSetActive(col, (cb->marker_flag&MARKER_DISABLED)==0);
@@ -405,21 +416,21 @@ void uiTemplateMarker(uiLayout *layout, PointerRNA *ptr, const char *propname, P
 
                uiDefBut(block, LABEL, 0, "Position:", 0, 190, 300, 19, NULL, 0, 0, 0, 0, "");
                uiDefButF(block, NUM, B_MARKER_POS, "X:", 10, 171, 145, 19, &cb->marker_pos[0],
-                       -10*width, 10.0*width, step, digits, "X-position of marker at frame in screen coordinates.");
+                       -10*width, 10.0*width, step, digits, "X-position of marker at frame in screen coordinates");
                uiDefButF(block, NUM, B_MARKER_POS, "Y:", 165, 171, 145, 19, &cb->marker_pos[1],
-                       -10*height, 10.0*height, step, digits, "Y-position of marker at frame in screen coordinates.");
+                       -10*height, 10.0*height, step, digits, "Y-position of marker at frame in screen coordinates");
 
                uiDefBut(block, LABEL, 0, "Offset:", 0, 152, 300, 19, NULL, 0, 0, 0, 0, "");
                uiDefButF(block, NUM, B_MARKER_OFFSET, "X:", 10, 133, 145, 19, &cb->track_offset[0],
-                       -10*width, 10.0*width, step, digits, "X-offset to parenting point.");
+                       -10*width, 10.0*width, step, digits, "X-offset to parenting point");
                uiDefButF(block, NUM, B_MARKER_OFFSET, "Y:", 165, 133, 145, 19, &cb->track_offset[1],
-                       -10*height, 10.0*height, step, digits, "Y-offset to parenting point.");
+                       -10*height, 10.0*height, step, digits, "Y-offset to parenting point");
 
                uiDefBut(block, LABEL, 0, "Pattern Area:", 0, 114, 300, 19, NULL, 0, 0, 0, 0, "");
                uiDefButF(block, NUM, B_MARKER_PAT_DIM, "Width:", 10, 95, 300, 19, &cb->track_pat[0], 3.0f,
-                       10.0*width, step, digits, "Width of marker's pattern in screen soordinates.");
+                       10.0*width, step, digits, "Width of marker's pattern in screen coordinates");
                uiDefButF(block, NUM, B_MARKER_PAT_DIM, "Height:", 10, 76, 300, 19, &cb->track_pat[1], 3.0f,
-                       10.0*height, step, digits, "Height of marker's pattern in screen soordinates.");
+                       10.0*height, step, digits, "Height of marker's pattern in screen coordinates");
 
                uiDefBut(block, LABEL, 0, "Search Area:", 0, 57, 300, 19, NULL, 0, 0, 0, 0, "");
                uiDefButF(block, NUM, B_MARKER_SEARCH_POS, "X:", 10, 38, 145, 19, &cb->track_search_pos[0],
@@ -427,9 +438,9 @@ void uiTemplateMarker(uiLayout *layout, PointerRNA *ptr, const char *propname, P
                uiDefButF(block, NUM, B_MARKER_SEARCH_POS, "Y:", 165, 38, 145, 19, &cb->track_search_pos[1],
                        -height, height, step, digits, "X-position of search at frame relative to marker's position");
                uiDefButF(block, NUM, B_MARKER_SEARCH_DIM, "Width:", 10, 19, 300, 19, &cb->track_search[0], 3.0f,
-                       10.0*width, step, digits, "Width of marker's search in screen soordinates.");
+                       10.0*width, step, digits, "Width of marker's search in screen soordinates");
                uiDefButF(block, NUM, B_MARKER_SEARCH_DIM, "Height:", 10, 0, 300, 19, &cb->track_search[1], 3.0f,
-                       10.0*height, step, digits, "Height of marker's search in screen soordinates.");
+                       10.0*height, step, digits, "Height of marker's search in screen soordinates");
 
                uiBlockEndAlign(block);
        }
index d713303ca8bcba1d9fc82d03d98d6cd67601458c..c4a858797e51eaec02323c7589d70bf9d1412250 100644 (file)
@@ -929,7 +929,7 @@ void CLIP_OT_rebuild_proxy(wmOperatorType *ot)
        /* identifiers */
        ot->name= "Rebuild Proxy and Timecode Indices";
        ot->idname= "CLIP_OT_rebuild_proxy";
-       ot->description="Rebuild all selected proxies and timecode indeces using the job system";
+       ot->description= "Rebuild all selected proxies and timecode indeces in the background";
 
        /* api callbacks */
        ot->exec= sequencer_rebuild_proxy_exec;
index 1b08a9aee4c61362bee827616f99a66f7fd012e4..1dd5611c4b7e76216e36f88d751260160d13fd16 100644 (file)
@@ -1653,7 +1653,7 @@ void CLIP_OT_clear_track_path(wmOperatorType *ot)
 
        /* identifiers */
        ot->name= "Clear Track Path";
-       ot->description= "Clear path of selected tracks";
+       ot->description= "Clear tracks after/before current position or cleat the whole track";
        ot->idname= "CLIP_OT_clear_track_path";
 
        /* api callbacks */
@@ -2119,7 +2119,7 @@ void CLIP_OT_set_center_principal(wmOperatorType *ot)
 {
        /* identifiers */
        ot->name= "Set Principal to Center";
-       ot->description= "Set principal point to center of footage";
+       ot->description= "Set optical center to center of footage";
        ot->idname= "CLIP_OT_set_center_principal";
 
        /* api callbacks */
@@ -2285,7 +2285,7 @@ void CLIP_OT_detect_features(wmOperatorType *ot)
 
        /* identifiers */
        ot->name= "Detect Features";
-       ot->description= "Automatically detect features to track";
+       ot->description= "Automatically detect features and place markers to track";
        ot->idname= "CLIP_OT_detect_features";
 
        /* api callbacks */
@@ -2910,7 +2910,7 @@ void CLIP_OT_clean_tracks(wmOperatorType *ot)
 
        /* identifiers */
        ot->name= "Clean Tracks";
-       ot->description= "Clean tracks";
+       ot->description= "Clean tracks with low trackness or high error";
        ot->idname= "CLIP_OT_clean_tracks";
 
        /* api callbacks */
index e1aff048626ac2c79157c0bc29432742c41814c0..cbac3721ac38df2316234b153382b79bb46bfc08 100644 (file)
@@ -217,6 +217,7 @@ enum {
 /* MovieTrackingStrabilization->flag */
 #define TRACKING_2D_STABILIZATION      (1<<0)
 #define TRACKING_AUTOSCALE                     (1<<1)
+#define TRACKING_STABILIZE_ROTATION    (1<<2)
 
 /* MovieTrackingReconstruction->flag */
 #define TRACKING_RECONSTRUCTED (1<<0)
index 91e082cdeaee021843ef558f549ce985e6336422..acb70e9fde20cad5f028a36f1f164d7ab576389e 100644 (file)
@@ -87,19 +87,19 @@ static void rna_def_movieclip_proxy(BlenderRNA *brna)
        /* build proxy sized */
        prop= RNA_def_property(srna, "build_25", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", IMB_PROXY_25);
-       RNA_def_property_ui_text(prop, "25%", "Build 25% proxy resolution");
+       RNA_def_property_ui_text(prop, "25%", "Build proxy resolution 25% of the original footage dimension");
 
        prop= RNA_def_property(srna, "build_50", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", IMB_PROXY_50);
-       RNA_def_property_ui_text(prop, "50%", "Build 50% proxy resolution");
+       RNA_def_property_ui_text(prop, "50%", "Build proxy resolution 50% of the original footage dimension");
 
        prop= RNA_def_property(srna, "build_75", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", IMB_PROXY_75);
-       RNA_def_property_ui_text(prop, "75%", "Build 75% proxy resolution");
+       RNA_def_property_ui_text(prop, "75%", "Build proxy resolution 75% of the original footage dimension");
 
        prop= RNA_def_property(srna, "build_100", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "build_size_flag", IMB_PROXY_100);
-       RNA_def_property_ui_text(prop, "100%", "Build 100% proxy resolution");
+       RNA_def_property_ui_text(prop, "100%", "Build proxy resolution 100% of the original footage dimension");
 
        prop= RNA_def_property(srna, "build_undistorted", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "build_flag", MCLIP_PROXY_BUILD_UNDISTORT);
@@ -121,7 +121,7 @@ static void rna_def_movieclip_proxy(BlenderRNA *brna)
        /* quality of proxied image */
        prop= RNA_def_property(srna, "quality", PROP_INT, PROP_UNSIGNED);
        RNA_def_property_int_sdna(prop, NULL, "quality");
-       RNA_def_property_ui_text(prop, "Quality", "JPEG Quality of proxies to build");
+       RNA_def_property_ui_text(prop, "Quality", "JPEG of proxy images");
        RNA_def_property_ui_range(prop, 1, 100, 1, 0);
 
        prop= RNA_def_property(srna, "timecode", PROP_ENUM, PROP_NONE);
@@ -169,7 +169,7 @@ static void rna_def_moviecliUser(BlenderRNA *brna)
        /* render undistorted */
        prop= RNA_def_property(srna, "use_render_undistorted", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "render_flag", MCLIP_PROXY_RENDER_UNDISTORT);
-       RNA_def_property_ui_text(prop, "Render Undistorted", "Draw preview using undistorted proxy");
+       RNA_def_property_ui_text(prop, "Render Undistorted", "Render preview using undistorted proxy");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
 }
 
@@ -198,7 +198,7 @@ static void rna_def_movieclip(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
        RNA_def_property_string_sdna(prop, NULL, "name");
-       RNA_def_property_ui_text(prop, "File Path", "Filename of the text file");
+       RNA_def_property_ui_text(prop, "File Path", "Filename of the movie or sequence file");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, "rna_MovieClip_reload_update");
 
        prop= RNA_def_property(srna, "tracking", PROP_POINTER, PROP_NONE);
@@ -234,7 +234,7 @@ static void rna_def_movieclip(BlenderRNA *brna)
        /* custom proxy directory */
        prop= RNA_def_property(srna, "use_proxy_custom_directory", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", MCLIP_USE_PROXY_CUSTOM_DIR);
-       RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Use a custom directory to store data");
+       RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Create proxy images in a custom directory (default is movie location)");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, "rna_MovieClip_reload_update");
 
        /* grease pencil */
index d2505fc9775af6af75f7b89a8ef84632b428d828..8fb232332d5abd9c177eaba8ff4a49798d85637a 100644 (file)
@@ -1593,12 +1593,12 @@ static void rna_def_space_view3d(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "show_camera_path", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SHOW_CAMERAPATH);
-       RNA_def_property_ui_text(prop, "Show Camera Path", "Show reconstructed path of camera");
+       RNA_def_property_ui_text(prop, "Show Camera Path", "Show reconstructed camera path");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
 
        prop= RNA_def_property(srna, "show_tracks_name", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SHOW_BUNDLENAME);
-       RNA_def_property_ui_text(prop, "Show Tracks Name", "Show names for tracks objects");
+       RNA_def_property_ui_text(prop, "Show Track Names", "Show names for tracks objects");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
 
        /* region */
@@ -2893,7 +2893,7 @@ static void rna_def_space_clip(BlenderRNA *brna)
 
        /* show tiny markers */
        prop= RNA_def_property(srna, "show_tiny_markers", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_ui_text(prop, "Show Tiny Markers", "Show markers tiny");
+       RNA_def_property_ui_text(prop, "Show Tiny Markers", "Show markers in a more compact manner");
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SC_SHOW_TINY_MARKER);
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, NULL);
 
@@ -2960,13 +2960,13 @@ static void rna_def_space_clip(BlenderRNA *brna)
        /* show graph_frames */
        prop= RNA_def_property(srna, "show_graph_frames", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SC_SHOW_GRAPH_FRAMES);
-       RNA_def_property_ui_text(prop, "Show Frames", "Show curves for frames in graph editor");
+       RNA_def_property_ui_text(prop, "Show Frames", "Show curve for per-frame average error (camera motion should be solved first)");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, NULL);
 
        /* show graph_tracks */
        prop= RNA_def_property(srna, "show_graph_tracks", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SC_SHOW_GRAPH_TRACKS);
-       RNA_def_property_ui_text(prop, "Show Tracks", "Show curves for tracks in graph editor");
+       RNA_def_property_ui_text(prop, "Show Tracks", "Display the speed curves (in \"x\" direction red, in \"y\" direction green) for the selected tracks");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, NULL);
 }
 
index 4de39811d0b854ab61717b01f9643732936162db..368359925c416e72ce5b90a92f5e192959a06c43 100644 (file)
@@ -39,6 +39,7 @@
 #include "rna_internal.h"
 
 #include "DNA_movieclip_types.h"
+#include "DNA_object_types.h"  /* SELECT */
 #include "DNA_scene_types.h"
 
 #include "WM_types.h"
@@ -94,6 +95,29 @@ void rna_trackingTrack_name_set(PointerRNA *ptr, const char *value)
        BKE_track_unique_name(&clip->tracking, track);
 }
 
+static int rna_trackingTrack_select_get(PointerRNA *ptr)
+{
+       MovieTrackingTrack *track= (MovieTrackingTrack *)ptr->data;
+
+       return TRACK_SELECTED(track);
+}
+
+static void rna_trackingTrack_select_set(PointerRNA *ptr, int value)
+{
+       MovieTrackingTrack *track= (MovieTrackingTrack *)ptr->data;
+
+       if(value) {
+               track->flag|= SELECT;
+               track->pat_flag|= SELECT;
+               track->search_flag|= SELECT;
+       }
+       else {
+               track->flag&= ~SELECT;
+               track->pat_flag&= ~SELECT;
+               track->search_flag&= ~SELECT;
+       }
+}
+
 static void rna_tracking_trackerPattern_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
 {
        MovieTrackingTrack *track= (MovieTrackingTrack *)ptr->data;
@@ -253,14 +277,14 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
        prop= RNA_def_property(srna, "speed", PROP_ENUM, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_enum_items(prop, speed_items);
-       RNA_def_property_ui_text(prop, "Speed", "Speed to make tracking with");
+       RNA_def_property_ui_text(prop, "Speed", "Limit speed of tracking to make visual feedback easier (this does not affect the tracking quality)");
 
        /* limit frames */
        prop= RNA_def_property(srna, "frames_limit", PROP_INT, PROP_NONE);
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_int_sdna(prop, NULL, "frames_limit");
        RNA_def_property_range(prop, 0, SHRT_MAX);
-       RNA_def_property_ui_text(prop, "Frames Limit", "Amount of frames to be tracked during single tracking operation");
+       RNA_def_property_ui_text(prop, "Frames Limit", "Every tracking cycle, this amount of frames are tracked");
 
        /* adjust frames */
        prop= RNA_def_property(srna, "frames_adjust", PROP_INT, PROP_NONE);
@@ -274,7 +298,7 @@ static void rna_def_trackingSettings(BlenderRNA *brna)
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_int_sdna(prop, NULL, "margin");
        RNA_def_property_range(prop, 0, 300);
-       RNA_def_property_ui_text(prop, "Margin", "Margin for markers from image boundary");
+       RNA_def_property_ui_text(prop, "Margin", "Distance from image boudary at which marker stops tracking");
 
        /* keyframe_a */
        prop= RNA_def_property(srna, "keyframe_a", PROP_INT, PROP_NONE);
@@ -398,7 +422,7 @@ static void rna_def_trackingCamera(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "pixel_aspect");
        RNA_def_property_range(prop, 0.1f, 5000.0f);
        RNA_def_property_ui_range(prop, 0.1f, 5000.0f, 1, 2);
-       RNA_def_property_ui_text(prop, "Pixel Aspect", "Pixel aspect ratio");
+       RNA_def_property_ui_text(prop, "Pixel Aspect Ratio", "Pixel aspect ratio");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, "rna_tracking_flushUpdate");
 }
 
@@ -441,8 +465,8 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
        PropertyRNA *parm;
 
        static EnumPropertyItem tracker_items[] = {
-               {TRACKER_SAD, "SAD", 0, "SAD", "Sum of Absolute Differences tracker"},
-               {TRACKER_KLT, "KLT", 0, "KLT", "Kanade–Lucas–Tomasi tracker"},
+               {TRACKER_KLT, "KLT", 0, "KLT", "Kanade–Lucas–Tomasi tracker which works with most of video clips, a bit slower than SAD"},
+               {TRACKER_SAD, "SAD", 0, "SAD", "Sum of Absolute Differences tracker which can be used when MLT tracker fails"},
                {0, NULL, 0, NULL, NULL}};
 
        rna_def_trackingMarker(brna);
@@ -501,7 +525,7 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
        RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
        RNA_def_property_int_sdna(prop, NULL, "pyramid_levels");
        RNA_def_property_range(prop, 1, 16);
-       RNA_def_property_ui_text(prop, "Pyramid levels", "Number of pyramid levels for KLT tracking");
+       RNA_def_property_ui_text(prop, "Pyramid levels", "Number of pyramid levels (increase on blurry footage)");
        RNA_def_property_update(prop, NC_MOVIECLIP|NA_EDITED, "rna_tracking_trackerPyramid_update");
 
        /* minmal correlation - only used for SAD tracker */
@@ -557,6 +581,30 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Hide", "Track is hidden");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
 
+       /* select */
+       prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_funcs(prop, "rna_trackingTrack_select_get", "rna_trackingTrack_select_set");
+       RNA_def_property_ui_text(prop, "Select", "Track is selected");
+       RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+       /* select_anchor */
+       prop= RNA_def_property(srna, "select_anchor", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
+       RNA_def_property_ui_text(prop, "Select Anchor", "Track's anchor point is selected");
+       RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+       /* select_pattern */
+       prop= RNA_def_property(srna, "select_pattern", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "pat_flag", SELECT);
+       RNA_def_property_ui_text(prop, "Select Pattern", "Track's pattern area is selected");
+       RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
+       /* select_search */
+       prop= RNA_def_property(srna, "select_search", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "search_flag", SELECT);
+       RNA_def_property_ui_text(prop, "Select Search", "Track's search area is selected");
+       RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
+
        /* locked */
        prop= RNA_def_property(srna, "lock", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACK_LOCKED);
@@ -573,7 +621,7 @@ static void rna_def_trackingTrack(BlenderRNA *brna)
        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_ui_text(prop, "Color", "Color of the track in the Movie Track Editor and the 3D viewport after a solve");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, NULL);
 
        /* average error */
@@ -636,7 +684,7 @@ static void rna_def_trackingStabilization(BlenderRNA *brna)
        prop= RNA_def_property(srna, "scale_max", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "maxscale");
        RNA_def_property_range(prop, 0.0f, 10.0f);
-       RNA_def_property_ui_text(prop, "Miximal Scale", "Maximal value for scale factor");
+       RNA_def_property_ui_text(prop, "Maximal Scale", "Limits the amount of automatic scaling");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, "rna_tracking_flushUpdate");
 
        /* influence_location */
@@ -653,6 +701,12 @@ static void rna_def_trackingStabilization(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Scale Influence", "Influence of stabilization algorithm on footage scale");
        RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, "rna_tracking_flushUpdate");
 
+       /* use_stabilize_rotation */
+       prop= RNA_def_property(srna, "use_stabilize_rotation", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", TRACKING_STABILIZE_ROTATION);
+       RNA_def_property_ui_text(prop, "Stabilize Rotation", "Stabilize horizon line on the shot");
+       RNA_def_property_update(prop, NC_MOVIECLIP|ND_DISPLAY, "rna_tracking_flushUpdate");
+
        /* influence_rotation */
        prop= RNA_def_property(srna, "influence_rotation", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "rotinf");