diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-07-09 19:10:12 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-07-09 19:10:12 +0400 |
commit | c314ac8ce33ba491bbdfcbacbe18d8e3465f5dc6 (patch) | |
tree | 1022ee72a8372d826cc0ff9b7fa47420b9f25d9c /source | |
parent | 905d04ef9d9c9e7ec39c80791f17ebba257e5f1c (diff) |
Fix #27888: Render artifacts in 2.58.1
It was a regression introduced in rev36301. Average normal calcilation
used to fail due to triangular faces which are too slight.
Do not use triangles with too small area for average normal calculation.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 2c9aa4dece5..4c0ce24e3e7 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2932,8 +2932,10 @@ static void init_render_curve(Render *re, ObjectRen *obr, int timeoffset) vlr->v3= RE_findOrAddVert(obr, startvert+index[2]); vlr->v4= NULL; - normal_tri_v3(tmp, vlr->v3->co, vlr->v2->co, vlr->v1->co); - add_v3_v3(n, tmp); + if(area_tri_v3(vlr->v3->co, vlr->v2->co, vlr->v1->co)>FLT_EPSILON) { + normal_tri_v3(tmp, vlr->v3->co, vlr->v2->co, vlr->v1->co); + add_v3_v3(n, tmp); + } vlr->mat= matar[ dl->col ]; vlr->flag= 0; |