[Bf-blender-cvs] [ba19079902c] temp-trimesh-sculpt: commit before getting collapse to work
Joseph Eagar
noreply at git.blender.org
Wed Oct 14 04:05:51 CEST 2020
Commit: ba19079902c7c46e76d3c913ca325451407cc52d
Author: Joseph Eagar
Date: Tue Oct 13 16:47:37 2020 -0700
Branches: temp-trimesh-sculpt
https://developer.blender.org/rBba19079902c7c46e76d3c913ca325451407cc52d
commit before getting collapse to work
===================================================================
M source/blender/blenkernel/intern/pbvh_trimesh.c
===================================================================
diff --git a/source/blender/blenkernel/intern/pbvh_trimesh.c b/source/blender/blenkernel/intern/pbvh_trimesh.c
index 89c2601a305..486b04fa7d8 100644
--- a/source/blender/blenkernel/intern/pbvh_trimesh.c
+++ b/source/blender/blenkernel/intern/pbvh_trimesh.c
@@ -929,7 +929,13 @@ static void long_edge_queue_face_add(EdgeQueueContext *eq_ctx, TMFace *f)
TMEdge *e = TM_GET_TRI_EDGE(f, i);
const float len_sq = TM_edge_calc_length_squared(e);
+
if (len_sq > eq_ctx->q->limit_len_squared) {
+ if (e->v1->edges.length > 24 || e->v2->edges.length > 24) {
+ printf("eek! %.4f", len_sq);
+ continue;
+ }
+
long_edge_queue_edge_add_recursive(
eq_ctx, e, e, TM_nextTriInEdge(e, f), f, len_sq, eq_ctx->q->limit_len);
}
@@ -1204,9 +1210,18 @@ static void pbvh_trimesh_split_edge(EdgeQueueContext *eq_ctx,
}
if (v_opp->edges.length > 8) {
- for (int i=0; i<v_opp->edges.length; i++) {
+ //prevent degenerate cases that make lots of geometry
+ int len = MIN2(v_opp->edges.length, 32);
+
+ for (int i=0; i<len; i++) {
TMEdge *e2 = v_opp->edges.items[i];
- long_edge_queue_edge_add(eq_ctx, e2);
+
+ if (e2 != e) {
+ long_edge_queue_edge_add(eq_ctx, e2);
+ } else {
+ printf("eek! %s %d\n", __FILE__, __LINE__);
+ continue;
+ }
}
}
}
More information about the Bf-blender-cvs
mailing list