Blender Git Loki

Git Commits -> Revision eed9c6f

Revision eed9c6f by Bastien Montagne (master)
January 30, 2016, 17:02 (GMT)
Fix T46455: Array modifier could generate chained mapping of vertices, leading to corrupted geometry.

That was the main issue (in both T46455 and T46690), solved by 'flattening' those chains (v1 -> v2 ->v3 etc.)
before calling `CDDM_merge_verts()`.

Also added note to `CDDM_merge_verts()` that it does not support chained mapping, along with
a basic assert that should catch most of those cases in future.

The logic of 'following mapping' was also rather broken, making a special case here when using
object-controlled offset is very weak. Further more, blindly following mapping in this case
was far from ideal, this could end to merging vertices rather far from each other.

To address this issue, we now always follow mapping, but only as long as 'final' vertex remains
close enough from mapped one.

Finally, the search of 'closest' vertex to merge with was also quite bad, would just pick the first
one matching distance limit, instead of using the actual closest one - could lead to rather ugly
geometry deformations in case one would use not-so-small merge threashold!

Commit Details:

Full Hash: eed9c6fdcf38664d90aea0d50e7c496753089831
Parent Commit: bde80cb
Lines Changed: +47, -37

2 Modified Paths:

/source/blender/blenkernel/intern/cdderivedmesh.c (+6, -1) (Diff)
/source/blender/modifiers/intern/MOD_array.c (+41, -36) (Diff)
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021