Fix T95458: Line art ignores curve objects with no evaluated mesh

Some curve objects don't have an evaluated mesh at all, but line art
currently assumes that all curve objects have one before converting
it to a mesh internally. Fix this by checking if the curve object has an
evaluated mesh before skipping it.

The remaining problem is that evalauted from non-mesh objects or
evaluated curves from non-curve objects, etc. will be ignored if
"Allow Duplicates" is off. That's a different problem though.

Differential Revision: https://developer.blender.org/D14036
This commit is contained in:
Hans Goudey 2022-02-10 11:33:21 -06:00
parent a44366a642
commit 88ff5e5fb9
Notes: blender-bot 2024-01-16 18:05:25 +01:00
Referenced by issue #95458, Grease Pencil Lineart modifier don't work on curves.
1 changed files with 4 additions and 4 deletions

View File

@ -2224,10 +2224,10 @@ static void lineart_main_load_geometries(
use_mesh = use_ob->data;
}
else {
/* If DEG_ITER_OBJECT_FLAG_DUPLI is set, the curve objects are going to have a mesh
* equivalent already in the object list, so ignore converting the original curve in this
* case. */
if (allow_duplicates) {
/* If DEG_ITER_OBJECT_FLAG_DUPLI is set, some curve objects may also have an evaluated mesh
* object in the list. To avoid adding duplicate geometry, ignore evaluated curve objects in
* those cases. */
if (allow_duplicates && BKE_object_get_evaluated_mesh(ob) != NULL) {
continue;
}
use_mesh = BKE_mesh_new_from_object(depsgraph, use_ob, true, true);