Fix #115105: Edge Crease Doesn't Transfer

Caused by e5ec04d73c

Since above commit, the edge crease is a named attribute and considered
a "fake" customdata layer (similar to bevel weights or UV seams --
`CD_FAKE`). Thus, a special case in
`data_transfer_layersmapping_generate` has to be added for
`CD_FAKE_CREASE`.

Pull Request: https://projects.blender.org/blender/blender/pulls/115180
This commit is contained in:
Philipp Oeser
2023-11-20 13:32:23 +01:00
committed by Philipp Oeser
parent 98ed3d3538
commit 85ffb71e44

View File

@@ -1027,6 +1027,27 @@ static bool data_transfer_layersmapping_generate(ListBase *r_map,
interp_data);
return true;
}
if (r_map && cddata_type == CD_FAKE_CREASE) {
if (!CustomData_get_layer_named(&me_dst->edge_data, CD_PROP_FLOAT, "crease_edge")) {
CustomData_add_layer_named(&me_dst->edge_data,
CD_PROP_FLOAT,
CD_SET_DEFAULT,
me_dst->totedge,
"crease_edge");
}
data_transfer_layersmapping_add_item_cd(
r_map,
CD_PROP_FLOAT,
mix_mode,
mix_factor,
mix_weights,
CustomData_get_layer_named(&me_src->edge_data, CD_PROP_FLOAT, "crease_edge"),
CustomData_get_layer_named_for_write(
&me_dst->edge_data, CD_PROP_FLOAT, "crease_edge", me_dst->totedge),
interp,
interp_data);
return true;
}
return false;
}