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:
authorSybren A. Stüvel <sybren@blender.org>2019-12-10 15:58:38 +0300
committerSybren A. Stüvel <sybren@blender.org>2019-12-10 16:01:40 +0300
commite71fe924c558f7115ac9cdd41d7c4668bc15d308 (patch)
treec9c2d5943fc8b8c329196912e7797ac9e7cb13c5 /source/blender/makesrna/intern/rna_armature.c
parentdaf290dcc80ce5b0904cb92c1696184e8c319ff9 (diff)
Fix T71609: Resizing bone length to 0 gets it stuck to that size
The result of normalising the bone vector wasn't checked, so it resulted in a zero-length vector being multiplied with the desired length. Choosing an arbitrary vector prevents the bone being 'stuck' at zero length. Thanks @mano-wii for the patch.
Diffstat (limited to 'source/blender/makesrna/intern/rna_armature.c')
-rw-r--r--source/blender/makesrna/intern/rna_armature.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c
index b09a19bb39f..232f3d86fd3 100644
--- a/source/blender/makesrna/intern/rna_armature.c
+++ b/source/blender/makesrna/intern/rna_armature.c
@@ -497,7 +497,12 @@ static void rna_EditBone_length_set(PointerRNA *ptr, float length)
float delta[3];
sub_v3_v3v3(delta, ebone->tail, ebone->head);
- normalize_v3(delta);
+ if (normalize_v3(delta) == 0.0f) {
+ /* Zero length means directional information is lost. Choose arbitrary direction to avoid
+ * getting stuck. */
+ delta[2] = 1.0f;
+ }
+
madd_v3_v3v3fl(ebone->tail, ebone->head, delta, length);
}