[Bf-blender-cvs] [bedcce1bf76] rigid_deform: protect against very thin triangles

Jacques Lucke noreply at git.blender.org
Thu Jan 31 19:56:01 CET 2019


Commit: bedcce1bf76cd54df71d16916f16da5f33e39879
Author: Jacques Lucke
Date:   Tue Jan 29 20:05:41 2019 +0100
Branches: rigid_deform
https://developer.blender.org/rBbedcce1bf76cd54df71d16916f16da5f33e39879

protect against very thin triangles

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

M	source/blender/modifiers/intern/MOD_rigiddeform_system.cc

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

diff --git a/source/blender/modifiers/intern/MOD_rigiddeform_system.cc b/source/blender/modifiers/intern/MOD_rigiddeform_system.cc
index ff5be820144..3ae6926f477 100644
--- a/source/blender/modifiers/intern/MOD_rigiddeform_system.cc
+++ b/source/blender/modifiers/intern/MOD_rigiddeform_system.cc
@@ -89,9 +89,9 @@ static std::vector<WeightedEdge> calculate_cotan_edge_weights(
 			positions[verts[1]],
 			positions[verts[2]]);
 
-		double w1 = cotan(angles[0]) / 2.0;
-		double w2 = cotan(angles[1]) / 2.0;
-		double w3 = cotan(angles[2]) / 2.0;
+		double w1 = (angles[0] > 0.0001) ? cotan(angles[0]) / 2.0 : 1.0;
+		double w2 = (angles[0] > 0.0001) ? cotan(angles[1]) / 2.0 : 1.0;
+		double w3 = (angles[0] > 0.0001) ? cotan(angles[2]) / 2.0 : 1.0;
 
 		if (w1 > 0) edges.push_back(WeightedEdge(verts[1], verts[2], w1));
 		if (w2 > 0) edges.push_back(WeightedEdge(verts[0], verts[2], w2));



More information about the Bf-blender-cvs mailing list