Blender Git Commit Log

Git Commits -> Revision 3768ecb

Revision 3768ecb by Alexander Gavrilov
January 13, 2021, 14:34 (GMT)
Surface Deform: fix binding vertex artifacts causing spikes.

There are two issues here. First, like in T81988 there are cases
where the modifier would deform some vertices immediately after
bind. This is caused by wrong assumptions in the code about the
possible relative angles between various vectors, which can cause
negative weights that don't blend correctly to appear.

Specifically, it seems originally the code assumes that the
centroid-point vector in the polygon plane lies somewhere
between the mid-edge vectors. This is however not necessarily
the case for distant vertices, because the polygon is not
guaranteed to be truly planar, so normal projection may be
a bit off. The code has to use signed angles and checks to
support all possible angular arrangements.

The second issue is very thin and long triangles, which tend
to be very spatially unstable in their thin dimension, resulting
in excess deformation. The code was weighting distance using
the distances between the centroid and the mid-edge points, which
in this case end up as nearly opposite vectors of sizable length
and don't correctly represent how thin the triangle actually is.
It is thus better to use centroid-to-line distances, and an
additional even stricter value for the midpoint that will use
only 3 vertices at evaluation time.

Differential Revision: https://developer.blender.org/D10065

Commit Details:

Full Hash: 3768ecb3420ef8111ca7e1ef125a7aef211a44d9
Parent Commit: 24d34f2
Lines Changed: +83, -28

1 Modified Path:

/source/blender/modifiers/intern/MOD_surfacedeform.c (+83, -28) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021