diff --git a/Engine/source/T3D/convexShape.cpp b/Engine/source/T3D/convexShape.cpp index 7e3759ce7..de992b9a1 100644 --- a/Engine/source/T3D/convexShape.cpp +++ b/Engine/source/T3D/convexShape.cpp @@ -1436,15 +1436,13 @@ void ConvexShape::_updateGeometry( bool updateCollision ) const Vector< U32 > &facePntMap = face.points; const Vector< ConvexShape::Triangle > &triangles = face.triangles; - const Point3F binormal = mCross(face.normal, face.tangent); - for (S32 j = 0; j < triangles.size(); j++) { for (S32 k = 0; k < 3; k++) { pVert->normal = face.normal; pVert->T = face.tangent; - pVert->B = mCross(face.normal,face.tangent); + pVert->B = mCross(face.normal, face.tangent); pVert->point = pointList[facePntMap[triangles[j][k]]]; pVert->texCoord = face.texcoords[triangles[j][k]]; pVert->texCoord2 = pVert->texCoord; @@ -1966,10 +1964,12 @@ void ConvexShape::Geometry::generate(const Vector< PlaneF > &planes, const Vecto U32 *vertMap = new U32[pntCount]; + Point3F binormal = mCross(newFace.normal, newFace.tangent); + MatrixF quadMat( true ); quadMat.setPosition( averagePnt ); quadMat.setColumn( 0, newFace.tangent ); - quadMat.setColumn( 1, mCross( newFace.normal, newFace.tangent ) ); + quadMat.setColumn( 1, binormal); quadMat.setColumn( 2, newFace.normal ); quadMat.inverse(); @@ -2055,8 +2055,8 @@ void ConvexShape::Geometry::generate(const Vector< PlaneF > &planes, const Vecto // Calculate texture coordinates for each point in this face. + if (newFace.normal.z < -0.9f) binormal = -binormal; - const Point3F binormal = mCross( newFace.normal, newFace.tangent ); PlaneF planey( newFace.centroid - 0.5f * binormal, binormal ); PlaneF planex( newFace.centroid - 0.5f * newFace.tangent, newFace.tangent );