diff options
author | Sergey Sharybin <sergey@blender.org> | 2022-07-05 18:35:12 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey@blender.org> | 2022-07-06 13:40:39 +0300 |
commit | da852457040827f734287d7db98208e998cb3af6 (patch) | |
tree | 6a3610434b39fecc32bf02f3466f47a22acaf2d3 /source | |
parent | 94323bb427480aaaeea52f6833173866fbacf2e1 (diff) |
Compositor: Pre-fill active scene movie clip in more nodes
Pre-fills movie clip from the scene to the following nodes:
- Keying Screen
- Plane Track Deform
- Track Position
The rest of tracking related nodes were already doing so.
Differential Revision: https://developer.blender.org/D15377
Diffstat (limited to 'source')
3 files changed, 29 insertions, 7 deletions
diff --git a/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc b/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc index c3ed5cd7aa8..e4e37f630a2 100644 --- a/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc +++ b/source/blender/nodes/composite/nodes/node_composite_keyingscreen.cc @@ -10,6 +10,9 @@ #include "BLI_math_base.h" #include "BLI_math_color.h" +#include "BKE_context.h" +#include "BKE_lib_id.h" + #include "RNA_access.h" #include "RNA_prototypes.h" @@ -27,10 +30,16 @@ static void cmp_node_keyingscreen_declare(NodeDeclarationBuilder &b) b.add_output<decl::Color>(N_("Screen")); } -static void node_composit_init_keyingscreen(bNodeTree *UNUSED(ntree), bNode *node) +static void node_composit_init_keyingscreen(const bContext *C, PointerRNA *ptr) { + bNode *node = (bNode *)ptr->data; + NodeKeyingScreenData *data = MEM_cnew<NodeKeyingScreenData>(__func__); node->storage = data; + + const Scene *scene = CTX_data_scene(C); + node->id = (ID *)scene->clip; + id_us_plus(node->id); } static void node_composit_buts_keyingscreen(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -71,7 +80,7 @@ void register_node_type_cmp_keyingscreen() cmp_node_type_base(&ntype, CMP_NODE_KEYINGSCREEN, "Keying Screen", NODE_CLASS_MATTE); ntype.declare = file_ns::cmp_node_keyingscreen_declare; ntype.draw_buttons = file_ns::node_composit_buts_keyingscreen; - node_type_init(&ntype, file_ns::node_composit_init_keyingscreen); + ntype.initfunc_api = file_ns::node_composit_init_keyingscreen; node_type_storage( &ntype, "NodeKeyingScreenData", node_free_standard_storage, node_copy_standard_storage); diff --git a/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc b/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc index fb0c03579a2..8055e350d51 100644 --- a/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc +++ b/source/blender/nodes/composite/nodes/node_composite_planetrackdeform.cc @@ -22,12 +22,18 @@ static void cmp_node_planetrackdeform_declare(NodeDeclarationBuilder &b) b.add_output<decl::Float>(N_("Plane")); } -static void init(bNodeTree *UNUSED(ntree), bNode *node) +static void init(const bContext *C, PointerRNA *ptr) { + bNode *node = (bNode *)ptr->data; + NodePlaneTrackDeformData *data = MEM_cnew<NodePlaneTrackDeformData>(__func__); data->motion_blur_samples = 16; data->motion_blur_shutter = 0.5f; node->storage = data; + + const Scene *scene = CTX_data_scene(C); + node->id = (ID *)scene->clip; + id_us_plus(node->id); } static void node_composit_buts_planetrackdeform(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -90,7 +96,7 @@ void register_node_type_cmp_planetrackdeform() cmp_node_type_base(&ntype, CMP_NODE_PLANETRACKDEFORM, "Plane Track Deform", NODE_CLASS_DISTORT); ntype.declare = file_ns::cmp_node_planetrackdeform_declare; ntype.draw_buttons = file_ns::node_composit_buts_planetrackdeform; - node_type_init(&ntype, file_ns::init); + ntype.initfunc_api = file_ns::init; node_type_storage( &ntype, "NodePlaneTrackDeformData", node_free_standard_storage, node_copy_standard_storage); diff --git a/source/blender/nodes/composite/nodes/node_composite_trackpos.cc b/source/blender/nodes/composite/nodes/node_composite_trackpos.cc index 3dc68b8ef0b..723b82998ee 100644 --- a/source/blender/nodes/composite/nodes/node_composite_trackpos.cc +++ b/source/blender/nodes/composite/nodes/node_composite_trackpos.cc @@ -5,6 +5,8 @@ * \ingroup cmpnodes */ +#include "BKE_context.h" +#include "BKE_lib_id.h" #include "BKE_tracking.h" #include "RNA_access.h" @@ -24,11 +26,16 @@ static void cmp_node_trackpos_declare(NodeDeclarationBuilder &b) b.add_output<decl::Vector>(N_("Speed")).subtype(PROP_VELOCITY); } -static void init(bNodeTree *UNUSED(ntree), bNode *node) +static void init(const bContext *C, PointerRNA *ptr) { - NodeTrackPosData *data = MEM_cnew<NodeTrackPosData>(__func__); + bNode *node = (bNode *)ptr->data; + NodeTrackPosData *data = MEM_cnew<NodeTrackPosData>(__func__); node->storage = data; + + const Scene *scene = CTX_data_scene(C); + node->id = (ID *)scene->clip; + id_us_plus(node->id); } static void node_composit_buts_trackpos(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -90,7 +97,7 @@ void register_node_type_cmp_trackpos() cmp_node_type_base(&ntype, CMP_NODE_TRACKPOS, "Track Position", NODE_CLASS_INPUT); ntype.declare = file_ns::cmp_node_trackpos_declare; ntype.draw_buttons = file_ns::node_composit_buts_trackpos; - node_type_init(&ntype, file_ns::init); + ntype.initfunc_api = file_ns::init; node_type_storage( &ntype, "NodeTrackPosData", node_free_standard_storage, node_copy_standard_storage); |