From 103f494062e8ababbde2cb3364adb5e0d98c6ec9 Mon Sep 17 00:00:00 2001 From: Christoph Lendenfeld Date: Tue, 5 Nov 2024 09:38:51 +0100 Subject: [PATCH 1/3] Fix #129589: Crash when pushing down NLA track The issue is that the action line may be there, but containing no action, `bAnimListElem->data` pointer is a nullptr. caused by b952782a44 In this refactor the function call was changed from `BKE_action_frame_range_get` which could handle the case of a nullptr passed to it. Pull Request: https://projects.blender.org/blender/blender/pulls/129648 --- source/blender/editors/space_nla/nla_draw.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/editors/space_nla/nla_draw.cc b/source/blender/editors/space_nla/nla_draw.cc index 15617ddd314..e0e1aa1228a 100644 --- a/source/blender/editors/space_nla/nla_draw.cc +++ b/source/blender/editors/space_nla/nla_draw.cc @@ -883,6 +883,11 @@ void draw_nla_main_data(bAnimContext *ac, SpaceNla *snla, ARegion *region) break; } case NLASTRIP_EXTEND_HOLD_FORWARD: { + if (ale->data == nullptr) { + /* This can happen if the object itself has no action attached anymore (e.g. after + * using "push down"). */ + break; + } const animrig::Action &action = static_cast(ale->data)->wrap(); float2 frame_range = action.get_frame_range(); BKE_nla_clip_length_ensure_nonzero(&frame_range[0], &frame_range[1]); From be54e363330b84756edf4b9d4a7b4e48c2008f8c Mon Sep 17 00:00:00 2001 From: Christoph Lendenfeld Date: Tue, 5 Nov 2024 09:41:29 +0100 Subject: [PATCH 2/3] Fix #125816: Clear constraint while action baking not doing visual keying When doing action baking, the option "Clear Constraints" mentions it's doing visual keying while not actually using that option. Just fixing the description, even though a better solution would be to revisit the design of the options to see if they even make sense in some configurations. Pull Request: https://projects.blender.org/blender/blender/pulls/129052 --- scripts/startup/bl_operators/anim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/startup/bl_operators/anim.py b/scripts/startup/bl_operators/anim.py index 0c65ca80d8d..02d1621468a 100644 --- a/scripts/startup/bl_operators/anim.py +++ b/scripts/startup/bl_operators/anim.py @@ -223,7 +223,7 @@ class NLA_OT_bake(Operator): ) clear_constraints: BoolProperty( name="Clear Constraints", - description="Remove all constraints from keyed object/bones, and do 'visual' keying", + description="Remove all constraints from keyed object/bones. To get a correct bake with this setting Visual Keying should be enabled", default=False, ) clear_parents: BoolProperty( From 5c572f01cf5ba27c82243626ccdd6166516f66ad Mon Sep 17 00:00:00 2001 From: Marco Rotili Date: Tue, 5 Nov 2024 10:00:41 +0100 Subject: [PATCH 3/3] Fix #129461: Sample index geometry node does not support Grease Pencil The sample index node specifies the supported geometry types and Grease Pencil was missing. Note that only the layer domain will work since it's the only domain accessible by index on GP data directly. Pull Request: https://projects.blender.org/blender/blender/pulls/129758 --- .../blender/nodes/geometry/nodes/node_geo_sample_index.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc b/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc index 678ce14a7c6..bb7af605dca 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_sample_index.cc @@ -28,7 +28,8 @@ static void node_declare(NodeDeclarationBuilder &b) .supported_type({GeometryComponent::Type::Mesh, GeometryComponent::Type::PointCloud, GeometryComponent::Type::Curve, - GeometryComponent::Type::Instance}); + GeometryComponent::Type::Instance, + GeometryComponent::Type::GreasePencil}); if (node != nullptr) { const eCustomDataType data_type = eCustomDataType(node_storage(*node).data_type); b.add_input(data_type, "Value").hide_value().field_on_all(); @@ -95,7 +96,8 @@ static const GeometryComponent *find_source_component(const GeometrySet &geometr GeometryComponent::Type::Mesh, GeometryComponent::Type::PointCloud, GeometryComponent::Type::Curve, - GeometryComponent::Type::Instance}; + GeometryComponent::Type::Instance, + GeometryComponent::Type::GreasePencil}; for (const GeometryComponent::Type src_type : supported_types) { if (component_is_available(geometry, src_type, domain)) { return geometry.get_component(src_type);