From 9b9f2fe97288577141bcdc6383469c1342aaf444 Mon Sep 17 00:00:00 2001 From: skl Date: Tue, 9 Oct 2018 10:57:42 +0300 Subject: [PATCH] 0030221: Data Exchange - VRML is exported with inversed normals Added test case bugs/xde/bug30221 --- src/VrmlData/VrmlData_ShapeConvert.cxx | 9 ++++++--- tests/bugs/xde/bug30221 | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 tests/bugs/xde/bug30221 diff --git a/src/VrmlData/VrmlData_ShapeConvert.cxx b/src/VrmlData/VrmlData_ShapeConvert.cxx index 08b96b8cb4..60d5b16d9c 100644 --- a/src/VrmlData/VrmlData_ShapeConvert.cxx +++ b/src/VrmlData/VrmlData_ShapeConvert.cxx @@ -396,11 +396,14 @@ Handle(VrmlData_Geometry) VrmlData_ShapeConvert::triToIndexedFaceSet (anAlloc->Allocate (nNodes * sizeof(gp_XYZ))); const TShort_Array1OfShortReal& Norm = theTri->Normals(); Standard_Integer j; - for (i = 0, j = 1; i < nNodes; i++, j += 3) { - + for (i = 0, j = 1; i < nNodes; i++, j += 3) + { gp_XYZ aNormal(Norm(j), Norm(j+1), Norm(j+2)); + if (isReverse) + { + aNormal.Reverse(); + } arrVec[i] = aNormal; - } const Handle(VrmlData_Normal) aNormalNode = new VrmlData_Normal (myScene, 0L, nNodes, arrVec); diff --git a/tests/bugs/xde/bug30221 b/tests/bugs/xde/bug30221 new file mode 100644 index 0000000000..ceed95474e --- /dev/null +++ b/tests/bugs/xde/bug30221 @@ -0,0 +1,23 @@ +puts "========" +puts "OCC30221" +puts "========" +puts "" +################################################################# +# Data Exchange - VRML is exported with inversed normals +################################################################# + +set FileName bug30221_vmt01b +XOpen [locate_data_file ${FileName}.xbf] D +XShow D +vfit +vsetdispmode 1 +vclose +file delete -force ${imagedir}/${FileName}.wrl +WriteVrml D ${imagedir}/${FileName}.wrl +loadvrml a ${imagedir}/${FileName}.wrl + +vinit View1 +vdisplay -dispMode 1 a +vfit + +checkview -screenshot -3d -path ${imagedir}/${test_image}.png