Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2016-06-27 17:52:20 +0300
committerJoshua Leung <aligorith@gmail.com>2016-06-27 17:52:20 +0300
commit14f056144e3e1a94188034eae71bd56c3a1feec9 (patch)
tree1104556af9935dcaaed78ed8738ecf7b0b7058cf /source/blender/blenkernel/intern/armature.c
parent9466d1579df37e108ef52e03984b88c64c926dbe (diff)
Bendy Bones Instability Fix - Second Attempt
So the error seems to be in cubic_tangent_factor_circle_v3(), which was introduced with D2001. I've tweaked the most obvious culprit here - the epsilon factor. It used to be 10^-7, but I've reduced it down to 10^-5 now, and it's looking a lot more stable now :) --------- BTW, about the derivation of the magic 0.390464 factor I briefly subbed back as a workaround for this bug, see: http://www.whizkidtech.redprince.net/bezier/circle/
Diffstat (limited to 'source/blender/blenkernel/intern/armature.c')
-rw-r--r--source/blender/blenkernel/intern/armature.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 99c9d0a0a79..b59618f46b2 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -634,11 +634,7 @@ void b_bone_spline_setup(bPoseChannel *pchan, int rest, Mat4 result_array[MAX_BB
}
{
-#if 0 // <--- this is currently unstable, disabling until we find a good fix
- const float circle_factor = length * (cubic_tangent_factor_circle_v3(h1, h2) / 0.75f);
-#else // <--- temporary workaround, using the old hardcoded value
- const float circle_factor = length * 0.390464f;
-#endif
+ const float circle_factor = length * (cubic_tangent_factor_circle_v3(h1, h2) / 0.75f);
const float hlength1 = bone->ease1 * circle_factor;
const float hlength2 = bone->ease2 * circle_factor;