From d051064495d3485ea0b1a88d0802539f072ab5f6 Mon Sep 17 00:00:00 2001 From: san Date: Fri, 30 Mar 2018 16:38:34 +0300 Subject: [PATCH] 0029667: Visualization, TKV3d - User-defined texture coordinates corrupted by StdPrs_ShadedShape Add protection in fillTriangles() against void UV range of a face. --- src/StdPrs/StdPrs_ShadedShape.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/StdPrs/StdPrs_ShadedShape.cxx b/src/StdPrs/StdPrs_ShadedShape.cxx index e29b6950c0..e098fc47e6 100644 --- a/src/StdPrs/StdPrs_ShadedShape.cxx +++ b/src/StdPrs/StdPrs_ShadedShape.cxx @@ -218,8 +218,10 @@ namespace if (theHasTexels && aUVNodes.Upper() == aNodes.Upper()) { - const gp_Pnt2d aTexel = gp_Pnt2d ((-theUVOrigin.X() + (theUVRepeat.X() * (aUVNodes (aNodeIter).X() - aUmin)) / dUmax) / theUVScale.X(), - (-theUVOrigin.Y() + (theUVRepeat.Y() * (aUVNodes (aNodeIter).Y() - aVmin)) / dVmax) / theUVScale.Y()); + const gp_Pnt2d aTexel = (dUmax == 0.0 || dVmax == 0.0) + ? aUVNodes (aNodeIter) + : gp_Pnt2d ((-theUVOrigin.X() + (theUVRepeat.X() * (aUVNodes(aNodeIter).X() - aUmin)) / dUmax) / theUVScale.X(), + (-theUVOrigin.Y() + (theUVRepeat.Y() * (aUVNodes(aNodeIter).Y() - aVmin)) / dVmax) / theUVScale.Y()); anArray->AddVertex (aPoint, aNorm, aTexel); } else