Fix T73286: Projection Painting Dense Mesh Bleed

When projection painting a dense mesh a face can be marked
PROJ_FACE_DEGENERATE when it is too small. Degenerative faces are
handled differently and as documented can create incorrect results.

Not sure what these incorrect results are and if there could be a better
solution for handling these results.

This fix would only mark a face degenerative when all the verts are the
same.

Reviewed By: Campbell Barton

Differential Revision: https://developer.blender.org/D7662
This commit is contained in:
Jeroen Bakker 2020-05-14 14:22:52 +02:00 committed by Jeroen Bakker
parent eb23b39b7f
commit 7965c735f1
Notes: blender-bot 2023-02-13 23:39:48 +01:00
Referenced by issue #73286, Texture paint Bleed does not work with high poly meshes (regression)
1 changed files with 1 additions and 1 deletions

View File

@ -4022,7 +4022,7 @@ static void project_paint_bleed_add_face_user(const ProjPaintState *ps,
* Ideally this would be checked later, not to add to the cost of computing non-degenerate
* triangles, but that would allow other triangles to still find adjacent seams on degenerate
* triangles, potentially causing incorrect results. */
if (area_tri_v2(UNPACK3(lt_tri_uv)) > FLT_EPSILON) {
if (area_tri_v2(UNPACK3(lt_tri_uv)) > 0.0f) {
const int lt_vtri[3] = {PS_LOOPTRI_AS_VERT_INDEX_3(ps, lt)};
void *tri_index_p = POINTER_FROM_INT(tri_index);