Commit: de67514b45d2e8f8a54c36bb8b955ad4cad19b25
Author: Jacques Lucke
Date:   Tue Jan 29 11:37:04 2019 +0100
Branches: rigid_deform
https://developer.blender.org/rBde67514b45d2e8f8a54c36bb8b955ad4cad19b25

ignore weights <= 0

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

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 704b2ec1174..3ac90a63991 100644
--- a/source/blender/modifiers/intern/MOD_rigiddeform_system.cc
+++ b/source/blender/modifiers/intern/MOD_rigiddeform_system.cc
@@ -77,7 +77,6 @@ static std::vector<WeightedEdge> calculate_cotan_weights(
        const std::vector<std::array<uint, 3>> &triangles)
 {
        std::vector<WeightedEdge> edges;
-       edges.reserve(triangles.size() * 3);
 
        for (auto verts : triangles) {
                std::array<double, 3> angles = triangle_angles(
@@ -86,10 +85,13 @@ static std::vector<WeightedEdge> calculate_cotan_weights(
                        positions[verts[2]]);
 
 #define cotan(x) std::cos((x))/std::sin((x))
-               edges.push_back(WeightedEdge(verts[1], verts[2], 
cotan(angles[0]) / 2.0));
-               edges.push_back(WeightedEdge(verts[0], verts[2], 
cotan(angles[1]) / 2.0));
-               edges.push_back(WeightedEdge(verts[0], verts[1], 
cotan(angles[2]) / 2.0));
+               double w1 = cotan(angles[0]) / 2.0;
+               double w2 = cotan(angles[1]) / 2.0;
+               double w3 = cotan(angles[2]) / 2.0;
 #undef cotan
+               if (w1 > 0) edges.push_back(WeightedEdge(verts[1], verts[2], 
w1));
+               if (w2 > 0) edges.push_back(WeightedEdge(verts[0], verts[2], 
w2));
+               if (w3 > 0) edges.push_back(WeightedEdge(verts[0], verts[1], 
w3));
        }
 
        return edges;

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

Reply via email to