diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-02-16 13:00:17 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-02-16 13:00:17 +0300 |
commit | 6468cb5f9c905b6a613707ce3f733236afa61fab (patch) | |
tree | f4c963226bd77e004703747780f2db36626d8b27 | |
parent | 5cbaf56b269ff04d086a07af9906cc44ecd4cfe5 (diff) |
Faces split: Don't leave CD_NORMAL after split
This is supposed to be a temporary layer.
If someone needs loop normals after split it should explicitly
ask for that.
-rw-r--r-- | intern/cycles/blender/blender_util.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 7 |
2 files changed, 4 insertions, 4 deletions
diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h index 8120de96362..4411181dbcc 100644 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@ -80,6 +80,7 @@ static inline BL::Mesh object_to_mesh(BL::BlendData& data, } else { me.split_faces(); + me.calc_normals_split(); } } if(subdivision_type == Mesh::SUBDIVISION_NONE) { diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 33e29dc0ff3..24a01b17e53 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -2376,11 +2376,10 @@ void BKE_mesh_split_faces(Mesh *mesh) /* Perform actual split of vertices and adjacent edges. */ split_faces_split_verts(mesh, num_new_verts, vert_flags); split_faces_split_edges(mesh, num_new_edges, edge_flags); - /* Adding new vertices will change loop normals. - * Since we ensured there is CD_NORMAL layer for loops we must bring it - * it back to a consistent state. + /* CD_NORMAL is expected to be temporary only, and it's invalid at + * this point anyway. */ - BKE_mesh_calc_normals_split(mesh); + CustomData_free_layers(&mesh->ldata, CD_NORMAL, mesh->totloop); MEM_freeN(vert_flags); MEM_freeN(edge_flags); #ifdef VALIDATE_MESH |