0030221: Data Exchange - VRML is exported with inversed normals
authorskl <skl@opencascade.com>
Tue, 9 Oct 2018 07:57:42 +0000 (10:57 +0300)
committerapn <apn@opencascade.com>
Thu, 11 Oct 2018 16:12:12 +0000 (19:12 +0300)
Added test case bugs/xde/bug30221

src/VrmlData/VrmlData_ShapeConvert.cxx
tests/bugs/xde/bug30221 [new file with mode: 0644]

index 08b96b8..60d5b16 100644 (file)
@@ -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 (file)
index 0000000..ceed954
--- /dev/null
@@ -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