Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-02-10 20:34:20 +0300
committerHans Goudey <h.goudey@me.com>2022-02-10 20:34:20 +0300
commit29674d5e7885ca1b31088ff4abeeae0ff05b980f (patch)
tree0e32b102437a098ab0f308cd4ad16d969a9da67e /source/blender
parent22c60ac8b1583502a88a5a97d0017618cccb14df (diff)
parent88ff5e5fb9d66d3a441e325dc381754b6f9c093e (diff)
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_mesh.h2
-rw-r--r--source/blender/blenkernel/intern/mesh.cc8
-rw-r--r--source/blender/editors/object/object_add.c5
-rw-r--r--source/blender/editors/object/object_modifier.c7
-rw-r--r--source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c8
5 files changed, 20 insertions, 10 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index e1c706a82dc..376bb5c8d2e 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -327,6 +327,8 @@ void BKE_mesh_vert_coords_apply_with_mat4(struct Mesh *mesh,
const float mat[4][4]);
void BKE_mesh_vert_coords_apply(struct Mesh *mesh, const float (*vert_coords)[3]);
+void BKE_mesh_anonymous_attributes_remove(struct Mesh *mesh);
+
/* *** mesh_tessellate.c *** */
/**
diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index c1b1f62a881..4e534726922 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -1933,6 +1933,14 @@ void BKE_mesh_vert_coords_apply_with_mat4(Mesh *mesh,
BKE_mesh_normals_tag_dirty(mesh);
}
+void BKE_mesh_anonymous_attributes_remove(Mesh *mesh)
+{
+ CustomData_free_layers_anonymous(&mesh->vdata, mesh->totvert);
+ CustomData_free_layers_anonymous(&mesh->edata, mesh->totedge);
+ CustomData_free_layers_anonymous(&mesh->pdata, mesh->totpoly);
+ CustomData_free_layers_anonymous(&mesh->ldata, mesh->totloop);
+}
+
void BKE_mesh_calc_normals_split_ex(Mesh *mesh, MLoopNorSpaceArray *r_lnors_spacearr)
{
float(*r_loopnors)[3];
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index d1deb6824ea..06c505b2160 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -2918,7 +2918,10 @@ static int object_convert_exec(bContext *C, wmOperator *op)
/* Full (edge-angle based) draw calculation should ideally be performed. */
BKE_mesh_edges_set_draw_render(me_eval);
BKE_object_material_from_eval_data(bmain, newob, &me_eval->id);
- BKE_mesh_nomain_to_mesh(me_eval, newob->data, newob, &CD_MASK_MESH, true);
+ Mesh *new_mesh = (Mesh *)newob->data;
+ BKE_mesh_nomain_to_mesh(me_eval, new_mesh, newob, &CD_MASK_MESH, true);
+ /* Anonymous attributes shouldn't be available on the applied geometry. */
+ BKE_mesh_anonymous_attributes_remove(new_mesh);
BKE_object_free_modifiers(newob, 0); /* after derivedmesh calls! */
}
else if (ob->type == OB_FONT) {
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index af428512cfd..9d9e44de523 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -765,11 +765,8 @@ static bool modifier_apply_obdata(
BKE_object_material_from_eval_data(bmain, ob, &mesh_applied->id);
BKE_mesh_nomain_to_mesh(mesh_applied, me, ob, &CD_MASK_MESH, true);
- /* Anonymous attributes shouldn't by available on the applied geometry. */
- CustomData_free_layers_anonymous(&me->vdata, me->totvert);
- CustomData_free_layers_anonymous(&me->edata, me->totedge);
- CustomData_free_layers_anonymous(&me->pdata, me->totpoly);
- CustomData_free_layers_anonymous(&me->ldata, me->totloop);
+ /* Anonymous attributes shouldn't be available on the applied geometry. */
+ BKE_mesh_anonymous_attributes_remove(me);
if (md_eval->type == eModifierType_Multires) {
multires_customdata_delete(me);
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
index 5434f7768b2..a9ec136831d 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.c
@@ -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);