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:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-02-15 22:59:55 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-02-15 23:41:25 +0300
commit40e5bc15e9d10884bb379a4de4cca42096bdf089 (patch)
tree43388dfa18ef24963ed742e9cbf39c691c474a13 /source/blender/blenkernel/intern/mesh.c
parent41e0085fd3af90612d034ad19cec3aa4cb686688 (diff)
Fix wrong edges created by split faces
We need to first split all vertices before we can reliably check whether edge can be reused or not. There is still known issue happening with a edge-fan mesh with some faces being on the same plane.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh.c')
-rw-r--r--source/blender/blenkernel/intern/mesh.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 6da86e3d151..3d50b4729fb 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -2228,7 +2228,7 @@ void BKE_mesh_split_faces(Mesh *mesh)
/* Perform actual split of vertices and adjacent edges. */
num_new_verts = 0;
num_new_edges = 0;
- /* Mapping from original vertex index to a split one. */
+ /* Insert new split vertices. */
for (int poly = 0; poly < num_polys; poly++) {
MPoly *mp = &mpoly[poly];
/* First we split all vertices to get proper flag whether they are
@@ -2256,9 +2256,11 @@ void BKE_mesh_split_faces(Mesh *mesh)
num_new_verts++;
}
}
- /* Connect new vertices with edges. */
- int loop_prev = mp->totloop - 1;
- for (int loop = 0; loop < mp->totloop; loop++) {
+ }
+ /* Connect new vertices with edges. */
+ for (int poly = 0; poly < num_polys; poly++) {
+ MPoly *mp = &mpoly[poly];
+ for (int loop = 0, loop_prev = mp->totloop - 1; loop < mp->totloop; loop++) {
const int poly_loop_prev = mp->loopstart + loop_prev;
const MLoop *ml = &mloop[mp->loopstart + loop];
const MVert *mv = &mvert[ml->v];