Fix #133480: Missing animation data conversion on Opacity modifier

Both "factor" and "hardness" were renamed from GPv2 > GPv3.
Use AnimDataConvertor to account for this.

Pull Request: https://projects.blender.org/blender/blender/pulls/133476
This commit is contained in:
Philipp Oeser
2025-01-30 14:19:30 +01:00
committed by Philipp Oeser
parent 3be9f3d599
commit ae8bd075e5

View File

@@ -2163,6 +2163,23 @@ static void legacy_object_modifier_opacity(ConversionData &conversion_data,
md_opacity.color_factor = legacy_md_opacity.factor;
md_opacity.hardness_factor = legacy_md_opacity.hardness;
/* Account for animation on renamed properties. */
char modifier_name[MAX_NAME * 2];
BLI_str_escape(modifier_name, md.name, sizeof(modifier_name));
AnimDataConvertor anim_convertor_factor(
conversion_data, object.id, object.id, {{".factor", ".color_factor"}});
anim_convertor_factor.root_path_src = fmt::format("modifiers[\"{}\"]", modifier_name);
anim_convertor_factor.root_path_dst = fmt::format("modifiers[\"{}\"]", modifier_name);
anim_convertor_factor.fcurves_convert();
anim_convertor_factor.fcurves_convert_finalize();
AnimDataConvertor anim_convertor_hardness(
conversion_data, object.id, object.id, {{".hardness", ".hardness_factor"}});
anim_convertor_hardness.root_path_src = fmt::format("modifiers[\"{}\"]", modifier_name);
anim_convertor_hardness.root_path_dst = fmt::format("modifiers[\"{}\"]", modifier_name);
anim_convertor_hardness.fcurves_convert();
anim_convertor_hardness.fcurves_convert_finalize();
DEG_relations_tag_update(&conversion_data.bmain);
legacy_object_modifier_influence(md_opacity.influence,
legacy_md_opacity.layername,
legacy_md_opacity.layer_pass,