[Bf-blender-cvs] [7b038b6a066] soc-2018-npr: Added check if radial insertion flip will create a fold
Sebastian Parborg
noreply at git.blender.org
Fri Aug 10 11:14:23 CEST 2018
Commit: 7b038b6a0660c2d1cd70054e724ea673434269a2
Author: Sebastian Parborg
Date: Wed Aug 8 16:10:25 2018 +0200
Branches: soc-2018-npr
https://developer.blender.org/rB7b038b6a0660c2d1cd70054e724ea673434269a2
Added check if radial insertion flip will create a fold
===================================================================
M source/blender/modifiers/intern/MOD_mybmesh.c
===================================================================
diff --git a/source/blender/modifiers/intern/MOD_mybmesh.c b/source/blender/modifiers/intern/MOD_mybmesh.c
index e713d1f61ea..495fc337cab 100644
--- a/source/blender/modifiers/intern/MOD_mybmesh.c
+++ b/source/blender/modifiers/intern/MOD_mybmesh.c
@@ -999,7 +999,7 @@ static bool check_and_shift(BMVert *vert, const float new_loc[3], const float ne
copy_v3_v3(vert->co, new_loc);
//Check if the new position changed any of the normals drastically (potential fold)
- BM_ITER_ELEM (f, &iter_f, vert, BM_FACES_OF_VERT) {
+ BM_ITER_ELEM_INDEX (f, &iter_f, vert, BM_FACES_OF_VERT, i) {
float no[3];
float old_no[3];
@@ -1013,8 +1013,6 @@ static bool check_and_shift(BMVert *vert, const float new_loc[3], const float ne
BLI_buffer_free(&old_normals);
return false;
}
-
- i++;
}
//Move the vert back for future checks
@@ -2067,6 +2065,13 @@ static bool poke_and_move(BMFace *f, const float new_pos[3], const float du[3],
if( is_C_vert( edge->v1, m_d->C_verts) && is_C_vert( edge->v2, m_d->C_verts) ){
return false;
}
+
+ BMLoop *l1, *l2;
+ BM_edge_calc_rotate(edge, true, &l1, &l2);
+ if( !BM_edge_rotate_check_degenerate(edge, l1, l2) ){
+ return false;
+ }
+
}
{
@@ -3257,9 +3262,9 @@ static void optimization( MeshData *m_d ){
BMIter iter_f;
BM_ITER_ELEM (face, &iter_f, best_edge, BM_FACES_OF_EDGE) {
for(int i = 0; i < inco_faces.count; i++){
- IncoFace *inface = &BLI_buffer_at(&inco_faces, IncoFace, i);
- if( inface->face != NULL && inface->face == face ){
- inface->face = NULL;
+ IncoFace *edge_inface = &BLI_buffer_at(&inco_faces, IncoFace, i);
+ if( edge_inface->face != NULL && edge_inface->face == face ){
+ edge_inface->face = NULL;
}
}
}
More information about the Bf-blender-cvs
mailing list