[Bf-blender-cvs] [c76e1ecac6d] master: Compositor: Pre-fill motion tracking fields

Sergey Sharybin noreply at git.blender.org
Thu Jul 7 16:15:48 CEST 2022


Commit: c76e1ecac6d6611269f15b5fd229ca726bde0337
Author: Sergey Sharybin
Date:   Thu Jul 7 16:13:26 2022 +0200
Branches: master
https://developer.blender.org/rBc76e1ecac6d6611269f15b5fd229ca726bde0337

Compositor: Pre-fill motion tracking fields

Extends current functionality which was only filling in
the active movie clip. Now we also pre-fill tracking object
name, as well as (plane)track name.

===================================================================

M	source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc
M	source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc
M	source/blender/nodes/composite/nodes/node_composite_trackpos.cc

===================================================================

diff --git a/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc b/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc
index e4e37f630a2..e835ee9e721 100644
--- a/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc
+++ b/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc
@@ -6,12 +6,14 @@
  */
 
 #include "DNA_movieclip_types.h"
+#include "DNA_tracking_types.h"
 
 #include "BLI_math_base.h"
 #include "BLI_math_color.h"
 
 #include "BKE_context.h"
 #include "BKE_lib_id.h"
+#include "BKE_tracking.h"
 
 #include "RNA_access.h"
 #include "RNA_prototypes.h"
@@ -38,8 +40,15 @@ static void node_composit_init_keyingscreen(const bContext *C, PointerRNA *ptr)
   node->storage = data;
 
   const Scene *scene = CTX_data_scene(C);
-  node->id = (ID *)scene->clip;
-  id_us_plus(node->id);
+  if (scene->clip) {
+    MovieClip *clip = scene->clip;
+
+    node->id = &clip->id;
+    id_us_plus(&clip->id);
+
+    const MovieTrackingObject *tracking_object = BKE_tracking_object_get_active(&clip->tracking);
+    BLI_strncpy(data->tracking_object, tracking_object->name, sizeof(data->tracking_object));
+  }
 }
 
 static void node_composit_buts_keyingscreen(uiLayout *layout, bContext *C, PointerRNA *ptr)
diff --git a/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc b/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc
index 8055e350d51..472bf2344ca 100644
--- a/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc
+++ b/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc
@@ -5,6 +5,11 @@
  * \ingroup cmpnodes
  */
 
+#include "DNA_movieclip_types.h"
+#include "DNA_tracking_types.h"
+
+#include "BKE_tracking.h"
+
 #include "RNA_access.h"
 #include "RNA_prototypes.h"
 
@@ -32,8 +37,23 @@ static void init(const bContext *C, PointerRNA *ptr)
   node->storage = data;
 
   const Scene *scene = CTX_data_scene(C);
-  node->id = (ID *)scene->clip;
-  id_us_plus(node->id);
+  if (scene->clip) {
+    MovieClip *clip = scene->clip;
+    MovieTracking *tracking = &clip->tracking;
+
+    node->id = &clip->id;
+    id_us_plus(&clip->id);
+
+    const MovieTrackingObject *tracking_object = BKE_tracking_object_get_active(tracking);
+    BLI_strncpy(data->tracking_object, tracking_object->name, sizeof(data->tracking_object));
+
+    const MovieTrackingPlaneTrack *active_plane_track = BKE_tracking_plane_track_get_active(
+        tracking);
+    if (active_plane_track) {
+      BLI_strncpy(
+          data->plane_track_name, active_plane_track->name, sizeof(data->plane_track_name));
+    }
+  }
 }
 
 static void node_composit_buts_planetrackdeform(uiLayout *layout, bContext *C, PointerRNA *ptr)
diff --git a/source/blender/nodes/composite/nodes/node_composite_trackpos.cc b/source/blender/nodes/composite/nodes/node_composite_trackpos.cc
index 723b82998ee..0e99ff59327 100644
--- a/source/blender/nodes/composite/nodes/node_composite_trackpos.cc
+++ b/source/blender/nodes/composite/nodes/node_composite_trackpos.cc
@@ -5,6 +5,9 @@
  * \ingroup cmpnodes
  */
 
+#include "DNA_movieclip_types.h"
+#include "DNA_tracking_types.h"
+
 #include "BKE_context.h"
 #include "BKE_lib_id.h"
 #include "BKE_tracking.h"
@@ -34,8 +37,21 @@ static void init(const bContext *C, PointerRNA *ptr)
   node->storage = data;
 
   const Scene *scene = CTX_data_scene(C);
-  node->id = (ID *)scene->clip;
-  id_us_plus(node->id);
+  if (scene->clip) {
+    MovieClip *clip = scene->clip;
+    MovieTracking *tracking = &clip->tracking;
+
+    node->id = &clip->id;
+    id_us_plus(&clip->id);
+
+    const MovieTrackingObject *tracking_object = BKE_tracking_object_get_active(tracking);
+    BLI_strncpy(data->tracking_object, tracking_object->name, sizeof(data->tracking_object));
+
+    const MovieTrackingTrack *active_track = BKE_tracking_track_get_active(tracking);
+    if (active_track) {
+      BLI_strncpy(data->track_name, active_track->name, sizeof(data->track_name));
+    }
+  }
 }
 
 static void node_composit_buts_trackpos(uiLayout *layout, bContext *C, PointerRNA *ptr)



More information about the Bf-blender-cvs mailing list