From ecbcf5eb3a2d2f92d373b452120f0af16905777a Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 13 Nov 2013 20:40:20 -0600 Subject: [PATCH] Simply early-outing from denominators near zero was causing tangeants to be filled with garbage data. This alters the functionality to set a floor distance so the rest get's filled out properly. --- Engine/source/ts/tsMesh.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Engine/source/ts/tsMesh.cpp b/Engine/source/ts/tsMesh.cpp index d857c0547..3b3e30757 100644 --- a/Engine/source/ts/tsMesh.cpp +++ b/Engine/source/ts/tsMesh.cpp @@ -2917,8 +2917,11 @@ inline void TSMesh::findTangent( U32 index1, F32 denom = (s1 * t2 - s2 * t1); if( mFabs( denom ) < 0.0001f ) - return; // handle degenerate triangles from strips - + { + // handle degenerate triangles from strips + if (denom<0) denom = -0.0001f; + else denom = 0.0001f; + } F32 r = 1.0f / denom; Point3F sdir( (t2 * x1 - t1 * x2) * r,