Commit: c7b2cbe3b4f36938a27a6c814ac0e41c7ef2e3d6
Author: Martin Felke
Date:   Sun Feb 22 01:44:27 2015 +0100
Branches: fracture_modifier
https://developer.blender.org/rBc7b2cbe3b4f36938a27a6c814ac0e41c7ef2e3d6

good performance improvement for autohide, using BM_face_at_index() now instead 
of BM_face_at_index_find(), which makes it reasonably faster

===================================================================

M       source/blender/modifiers/intern/MOD_fracture.c

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_fracture.c 
b/source/blender/modifiers/intern/MOD_fracture.c
index 97fe123..dafe5a8 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -2303,8 +2303,8 @@ static DerivedMesh *do_autoHide(FractureModifierData 
*fmd, DerivedMesh *dm)
                        continue;
                }
 
-               f1 = BM_face_at_index_find(bm, i);
-               f2 = BM_face_at_index_find(bm, other);
+               f1 = BM_face_at_index(bm, i);
+               f2 = BM_face_at_index(bm, other);
 
                if ((f1 == NULL) || (f2 == NULL)) {
                        continue;
@@ -2317,7 +2317,7 @@ static DerivedMesh *do_autoHide(FractureModifierData 
*fmd, DerivedMesh *dm)
                if ((len_squared_v3v3(f_centr, f_centr_other) < 
(fmd->autohide_dist)) && (f1 != f2) &&
                    (f1->mat_nr == 1) && (f2->mat_nr == 1))
                {
-
+                       /*intact face pairs */
                        faces = MEM_reallocN(faces, sizeof(BMFace *) * 
(del_faces + 2));
                        faces[del_faces] = f1;
                        faces[del_faces + 1] = f2;
@@ -2335,8 +2335,8 @@ static DerivedMesh *do_autoHide(FractureModifierData 
*fmd, DerivedMesh *dm)
                                BM_elem_flag_enable(v, BM_ELEM_SELECT);
                        }
 
-                       //BM_face_kill(bm, f);
                        BM_elem_flag_enable(f, BM_ELEM_SELECT);
+
                }
        }
 
@@ -2345,21 +2345,11 @@ static DerivedMesh *do_autoHide(FractureModifierData 
*fmd, DerivedMesh *dm)
                     "automerge_keep_normals verts=%hv dist=%f", BM_ELEM_SELECT,
                     fmd->autohide_dist * 10); /*need to merge larger cracks*/
 
-       //BM_mesh_elem_hflag_disable_all(bm, BM_FACE | BM_EDGE | BM_VERT , 
BM_ELEM_SELECT, false);
-       BM_mesh_elem_hflag_enable_all(bm, BM_EDGE, BM_ELEM_SELECT, false);
-       BM_mesh_elem_hflag_disable_test(bm, BM_EDGE, BM_ELEM_SELECT, false, 
false, BM_ELEM_SMOOTH);
-
-       //dissolve sharp edges
-       //BMO_op_callf(bm, (BMO_FLAG_DEFAULTS & ~BMO_FLAG_RESPECT_HIDE), 
"dissolve_edges_keep_normals edges=%he use_verts=%b use_face_split=%b",
-       //             BM_ELEM_SELECT, true, false);
-
        //dissolve sharp edges with limit dissolve
        BMO_op_callf(bm, (BMO_FLAG_DEFAULTS & ~BMO_FLAG_RESPECT_HIDE), 
"dissolve_limit_keep_normals "
                     "angle_limit=%f use_dissolve_boundaries=%b verts=%av 
edges=%ae delimit=%i",
                     DEG2RADF(1.0f), false, 0);
 
-       BM_mesh_elem_hflag_disable_all(bm, BM_FACE | BM_EDGE | BM_VERT , 
BM_ELEM_SELECT, false);
-
        result = CDDM_from_bmesh(bm, true);
        BM_mesh_free(bm);
        MEM_freeN(faces);
@@ -2644,40 +2634,6 @@ static DerivedMesh *doSimulate(FractureModifierData 
*fmd, Object *ob, DerivedMes
                }
        }
 
-       if (fmd->refresh_constraints) {
-
-               start = PIL_check_seconds_timer();
-               doClusters(fmd, ob);
-               printf("Clustering done, %g\n", PIL_check_seconds_timer() - 
start);
-
-               start = PIL_check_seconds_timer();
-
-               create_constraints(fmd); /* check for actually creating the 
constraints inside*/
-
-#if 0
-               if ((fmd->visible_mesh != NULL || fmd->visible_mesh_cached != 
NULL)  && (fmd->use_constraints)) {
-                       if (fmd->visible_mesh == NULL) {    /* ugh, needed to 
build constraints... */
-                               fmd->visible_mesh = 
DM_to_bmesh(fmd->visible_mesh_cached, true);
-                               BM_mesh_elem_index_ensure(fmd->visible_mesh, 
BM_VERT | BM_EDGE | BM_FACE);
-                               BM_mesh_elem_table_ensure(fmd->visible_mesh, 
BM_VERT | BM_EDGE | BM_FACE);
-                               
BM_mesh_elem_toolflags_ensure(fmd->visible_mesh);
-                       }
-                       create_constraints(fmd); /* check for actually creating 
the constraints inside*/
-
-                       if (fmd->visible_mesh_cached != NULL) {
-                               /* if we had a cached visible mesh, throw away 
this temp visible mesh again */
-                               BM_mesh_free(fmd->visible_mesh);
-                               fmd->visible_mesh = NULL;
-                       }
-               }
-#endif
-
-               fmd->refresh_constraints = false;
-
-               printf("Building constraints done, %g\n", 
PIL_check_seconds_timer() - start);
-               printf("Constraints: %d\n", 
BLI_listbase_count(&fmd->meshConstraints));
-       }
-
        if (fmd->refresh_autohide)
        {
                fmd->refresh_autohide = false;
@@ -2705,6 +2661,21 @@ static DerivedMesh *doSimulate(FractureModifierData 
*fmd, Object *ob, DerivedMes
                }
        }
 
+       if (fmd->refresh_constraints) {
+
+               start = PIL_check_seconds_timer();
+               doClusters(fmd, ob);
+               printf("Clustering done, %g\n", PIL_check_seconds_timer() - 
start);
+
+               start = PIL_check_seconds_timer();
+
+               create_constraints(fmd); /* check for actually creating the 
constraints inside*/
+               fmd->refresh_constraints = false;
+
+               printf("Building constraints done, %g\n", 
PIL_check_seconds_timer() - start);
+               printf("Constraints: %d\n", 
BLI_listbase_count(&fmd->meshConstraints));
+       }
+
        /*XXX better rename this, it checks whether we have a valid fractured 
mesh */
        exploOK = !fmd->explo_shared || (fmd->explo_shared && fmd->dm && 
fmd->frac_mesh);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to