View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0022818 | Community | OCCT:Mesh | public | 2011-11-29 12:33 | 2014-09-01 17:48 |
Reporter | Assigned To | oan | |||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
Product Version | 6.5.2 | ||||
Target Version | 6.6.0 | Fixed in Version | 6.6.0 | ||
Summary | 0022818: Wrong triangulation of Revolution surface with slice angle <= 180 degree | ||||
Description | Post from the Forum - http://www.opencascade.org/org/forum/thread_22257/. "hi there, triangulation of BRepPrimAPI_MakeRevol fails under some circumstances. reproduceable in 6.3 and 6.5 versions bug reproduction in pseudocode: (1) revol a Face: point of gp_ax1 has SAME coordinates as a point in the profile for revolution p1 gp_Pnt(0,10,0) p2 gp_Pnt(0,10,10) p3 gp_Pnt(0,0,-10) dir1 gp_Dir(0,0,1) ax1 gp_Ax1(p1,dir1) v1 BRepPrimAPI_MakeVertex(p1) v2 BRepPrimAPI_MakeVertex(p2) v3 BRepPrimAPI_MakeVertex(p3) e1 BRepPrimAPI_MakeEdge(v1,v2) e2 BRepPrimAPI_MakeEdge(v2,v3) e3 BRepPrimAPI_MakeEdge(v3,v1) w1 BRepPrimAPI_MakeWire(e1,e2,e3) f1 BRepPrimAPI_MakeFace(w1) rev1 BRepPrimAPI_Makerevol(f1,ax1,180°) #i know its in rads but for readability => front and back faces are not created, face of revolution looks weird (2) revol a Face: point of gp_ax1 has OTHER coordinates as a point in the profile for revolution p1 gp_Pnt(0,10,0) p2 gp_Pnt(0,10,10) p3 gp_Pnt(0,5,5) p4 gp_Pnt(0,0,-10) dir1 gp_Dir(0,0,1) ax1 gp_Ax1(p4,dir1) v1 BRepPrimAPI_MakeVertex(p1) v2 BRepPrimAPI_MakeVertex(p2) v3 BRepPrimAPI_MakeVertex(p3) e1 BRepPrimAPI_MakeEdge(v1,v2) e2 BRepPrimAPI_MakeEdge(v2,v3) e3 BRepPrimAPI_MakeEdge(v3,v1) w1 BRepPrimAPI_MakeWire(e1,e2,e3) f1 BRepPrimAPI_MakeFace(w1) rev1 BRepPrimAPI_Makerevol(f1,ax1,180°) #i know its in rads but for readability => front and back faces are not created (3) revol a Geom_Interpolate: point of gp_ax1 has same coordinates as a point in the profile for revolution p1 gp_Pnt(0,0,0) p2 gp_Pnt(5,7,0) p3 gp_Pnt(10,10,0) dir1 gp_Dir(0,1,0) ax1 gp_Ax1(p1,dir1) harray TColgp_HArray1OfPnt(1,3) harray->setValue(1,p1) harray->setValue(2,p2) harray->setValue(3,p3) spline GeomAPI_Interpolate(harray ,false,10E-7) spline->perform Geom_BSplineCurve s = repSpline.Curve(); e1 BRepPrimAPI_MakeEdge(s) rev1 BRepPrimAPI_Makerevol(e1,ax1,180°) #i know its in rads but for readability => no face at all, only edge created" ========================= Pictures presenting wrong triangulation are attached | ||||
Steps To Reproduce | pload MODELING AISV vertex v1 0 10 0 vertex v2 0 10 10 vertex v3 0 0 -10 edge e1 v1 v2 edge e2 v2 v3 edge e3 v3 v1 wire w1 e1 e2 e3 plane pln 0 10 0 1 0 0 mkface f1 pln add w1 f1 don f1 revol r f1 0 10 0 0 0 1 180 fit checkshape r vinit vsetdispmode 1 vdisplay r vfit ============== pload MODELING AISV vertex v1 0 10 0 vertex v2 0 10 10 vertex v3 0 5 5 vertex v4 0 0 -10 edge e1 v1 v2 edge e2 v2 v3 edge e3 v3 v1 wire w1 e1 e2 e3 plane pln 0 5 5 1 0 0 mkface f1 pln add w1 f1 don f1 revol r f1 0 10 0 0 0 1 180 fit checkshape r vinit vsetdispmode 1 vdisplay r vfit | ||||
Additional information and documentation updates | To Release Notes: The algorithm of standard OCCT triangulation has been fixed to correctly build triangulation of a face of conical-like sector less than 180 degrees with degeneracy. | ||||
Tags | No tags attached. | ||||
Test case number | bugs modalg_2(007) bug22818_1,bug22818_2,bug22818_3,bug22818_4 | ||||
2011-11-29 12:33 manager |
22257.zip (70,434 bytes) |
|
The same error is for cone shape: pcone c 10 0 10 180 vdisplay c |
2011-12-01 16:36 developer |
cone.PNG (24,449 bytes) |
|
I have attached the picture with triangulation of the conic face. I have found that regression occurred in the version 3.1 comparing to 3.0 of OCCT. The binaries for WNT are located in \\slotex\sbu\OS\FIXOCC30 and FIXOCC31. The simple script that works and reproduces the problem in that version is: pcone c 10 0 20 180 incmesh c 0.1 triangles c isos c 0 view 1 +X+Y fit |
|
Fixed in branch http://svn/svn/occt/branches/0022818. Pavel, please, review it. |
|
The fixes are OK. No comments... |
|
Dear BugMaster, Workbench KAS:dev:mkv-22818-occt was created from SVN branch http://svn/svn/occt/branches/0022818 (and mkv-22818-products from trunk) and compiled on Linux platform. There are following regressions in mkv-22818-products regarding to KAS:dev:products-652-opt. chl 902 F1 chl 918 L7 chl 927 L3 chl 905 A4 chl 913 K4 chl 918 K2 chl 919 A3 chl 922 R9 chl 929 D1 D2 D5 D6 D8 chl 934 B1 chl 913 D1 msh 004 A2 msh 001 A3 C8 E8 M5 Q9 T4 msh 002 A3 C8 msh 003 A2 msh 002 E8 M5 Q9 T4 msh 001 K7 - Improvement msh 002 K7 - Improvement shd 001 A3 E9 R4 shd 002 A1 A2 B6 C6 shd 003 A1 A2 A3 A4 A5 shd 001 L1 - Improvement shd 002 A4 - Improvement See results in /QADisk/occttests/results/KAS/dev/mkv-22818-products_07122011/lin See reference results in /QADisk/occttests/results/KAS/dev/products-652-opt_23092011/lin See test cases in /QADisk/occttests/tests/ED N.B. In order to launch testing case you can make use the following instructions http://doc/doku.php?id=occt:certification |
|
The fix is rebased on current master (branch CR22818_1), problems are still there |
|
Dear Oleg, Please consult to msv about fix finalization |
|
Dear EPA, Could you please review the fix at CR22818 Git branch. |
|
Dear bugmaster, please test |
|
Dear BugMaster, Branch CR22818 (and products from GIT master) was compiled on Linux and Windows platforms and tested without rebase. SHA-1: f654183e4e96122cdfbd47b039d3c91e349eb5a9 Number of compiler warnings: occt component : Linux: 3 (3 on master) Windows: 11 (11 on master) products component : Linux: 0 (0 on master) Windows: 50 (50 on master) Regressions: No regressions Improvements: No improvements Testing cases: bugs modalg_2(007) bug22818_1,bug22818_2,bug22818_3,bug22818_4 - OK. Testing on Linux: Total MEMORY difference: 242985360 / 243420652 Total CPU difference: 16270.469999999765 / 15475.990000000036 Testing on Windows: Total MEMORY difference: 342593728 / 342850096 Total CPU difference: 17938.71875 / 20377.4375 There following differences in images found by testdiff. http://occt-tests/CR22818-master-occt/Mandriva2010/diff-Mandriva2010.html http://occt-tests/CR22818-master-occt/Windows-32-VC9/diff-Windows-32-VC9.html IMAGE bugs modalg_2 bug22818_1: bug22818_1.png differs - Improvement IMAGE bugs modalg_2 bug22818_2: bug22818_2.png differs - Improvement IMAGE bugs moddata_1 bug22757: bug22757.png differs IMAGE mesh standard_shading L1: L1.png differs - Improvement IMAGE mesh standard_incmesh_parallel J8: J8.png differs - Improvement IMAGE mesh standard_incmesh_parallel L1: L1.png differs - Improvement IMAGE mesh advanced_shading C2: C2.png differs - Improvement IMAGE mesh standard_mesh J8: J8.png differs - Improvement IMAGE mesh standard_mesh L1: L1.png differs - Improvement IMAGE mesh standard_incmesh J8: J8.png differs - Improvement IMAGE mesh standard_incmesh L1: L1.png differs - Improvement IMAGE bugs vis buc60887: buc60887.png differs - only on Windows |
|
Dear oan, could you please review test cases for this fix: bugs modalg_2(007) bug22818_1,bug22818_2,bug22818_3,bug22818_4. |
|
Dear Mikhail, It would be better if you took a well-known approach of detection the difference between the geometrical square and square defined by triangulation widely used in our test cases instead using the constant values. In my opinion, this way is the most correct from the point of view of automatic testing. Please find the "end" file in the "/tests/mesh/" directory. It already contains functionality described above: # Check if area of triangles is valid proc CheckTriArea {shape {eps 0}} { upvar #0 $shape a set area [triarea a $eps] set t_area [lindex $area 0] set g_area [expr abs([lindex $area 1])] puts "area by triangles: $t_area" puts "area by geometry: $g_area" expr ($t_area - $g_area) / $g_area * 100 } puts "\nChecking triangulation area (triarea command)..." set rel_err [expr abs([CheckTriArea res $area_eps])] if { $rel_err > $rel_tol } { puts "Error : area by triangles differs from the actual area by $rel_err %" } else { if { $rel_tol > 1 && $rel_tol < 100 } { puts "Error: Improvement: The current area difference is $rel_err instead of $rel_tol" } } Please have a look there and try to accommodate it for the test cases for this bug. |
|
IMAGE offset shape_type_i D7: D7.png differs -- looks like regression? |
|
Dear Andrey, I suppose there is no dependence between the test case offset faces_type_i D7 and actual changes in the BRepMesh. Please find the corresponding test case in "test" directory of OCC or through the Jenkins interface. |
|
Dear oan, Afther this modifications in test cases now there are following regressions on Linux and Windows platforms: bugs modalg_2(007) bug22818_1 bug22818_2 |
|
Dear Mikhail, Thank you. It's quite interesting, because the shapes seems Ok in viewer. I suppose that tricheck and sprops commands return incorrect data for shapes of revolution. |
|
Dear Bugmaster, bug 0023832 "sprops and triarea commands return incorrect value of a mass for shape of revolution" has been registered in Mantis. please integrate the fix for 0022818. |
|
Dear BugMaster, Test cases bugs modalg_2(007) bug22818_1 and bug22818_2 was corrected, tested and pushed in git branches CR23832 and CR22818. Branch CR22818 is TESTED. |
occt: master b62b93ac 2013-03-22 13:44:31 Details Diff |
0022818: Wrong triangulation of Revolution surface with slice angle <= 180 degree Take face attributes into account to calculate 2d tolerance Adding test cases for this fix Correction according additional bug CR23832 |
Affected Issues 0022818 |
|
mod - src/BRepMesh/BRepMesh_FastDiscret.cxx | Diff File | ||
mod - src/BRepMesh/BRepMesh_FastDiscretFace.cdl | Diff File | ||
mod - src/BRepMesh/BRepMesh_FastDiscretFace.cxx | Diff File | ||
mod - tests/bugs/modalg_2/bug22818_1 | Diff File | ||
mod - tests/bugs/modalg_2/bug22818_2 | Diff File | ||
add - tests/bugs/modalg_2/bug22818_3 | Diff File | ||
add - tests/bugs/modalg_2/bug22818_4 | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-11-29 12:33 |
|
New Issue | |
2011-11-29 12:33 |
|
Assigned To | => jgv |
2011-11-29 12:33 |
|
File Added: 22257.zip | |
2011-11-29 12:33 |
|
Assigned To | jgv => msv |
2011-11-29 12:33 |
|
Status | new => assigned |
2011-12-01 16:31 |
|
Note Added: 0018698 | |
2011-12-01 16:36 |
|
File Added: cone.PNG | |
2011-12-01 17:45 |
|
Note Added: 0018700 | |
2011-12-01 17:46 |
|
Note Edited: 0018700 | |
2011-12-05 16:36 |
|
Note Added: 0018745 | |
2011-12-05 16:36 |
|
Assigned To | msv => pdn |
2011-12-05 16:36 |
|
Status | assigned => resolved |
2011-12-05 16:45 |
|
Note Added: 0018746 | |
2011-12-05 16:46 |
|
Assigned To | pdn => msv |
2011-12-05 16:46 |
|
Status | resolved => reviewed |
2011-12-05 17:17 |
|
Additional Information Updated | |
2011-12-05 17:18 |
|
Assigned To | msv => bugmaster |
2011-12-07 19:19 |
|
Note Added: 0018774 | |
2011-12-07 19:20 |
|
Assigned To | bugmaster => msv |
2011-12-07 19:20 |
|
Status | reviewed => assigned |
2011-12-09 16:55 | apn | Test case number | => chl 934 N1 N2 |
2012-03-22 06:23 |
|
Target Version | 6.5.3 => 6.5.4 |
2012-10-23 18:41 |
|
Target Version | 6.5.4 => 6.6.0 |
2012-11-06 11:02 |
|
Note Added: 0022095 | |
2012-11-09 10:45 |
|
Category | OCCT:Modeling Algorithms => OCCT:Mesh |
2012-11-09 10:46 |
|
Relationship added | has duplicate 0023282 |
2013-03-04 12:17 |
|
Assigned To | msv => oan |
2013-03-04 12:19 |
|
Note Added: 0023573 | |
2013-03-12 10:48 | oan | Note Added: 0023657 | |
2013-03-12 10:48 | oan | Assigned To | oan => epa |
2013-03-12 10:51 | oan | Status | assigned => resolved |
2013-03-12 10:52 |
|
Note Added: 0023658 | |
2013-03-12 10:52 |
|
Assigned To | epa => bugmaster |
2013-03-12 10:52 |
|
Status | resolved => reviewed |
2013-03-12 11:36 |
|
Assigned To | bugmaster => mkv |
2013-03-14 19:03 |
|
Note Added: 0023731 | |
2013-03-14 19:06 |
|
Note Added: 0023732 | |
2013-03-14 19:07 |
|
Test case number | chl 934 N1 N2 => bugs modalg_2(007) bug22818_1,bug22818_2,bug22818_3,bug22818_4 |
2013-03-14 19:07 |
|
Assigned To | mkv => oan |
2013-03-14 19:07 |
|
Status | reviewed => assigned |
2013-03-14 19:45 | oan | Note Added: 0023734 | |
2013-03-14 19:46 | oan | Assigned To | oan => mkv |
2013-03-15 10:58 |
|
Note Added: 0023736 | |
2013-03-15 11:15 | oan | Note Added: 0023738 | |
2013-03-15 17:25 |
|
Note Added: 0023756 | |
2013-03-15 17:26 |
|
Assigned To | mkv => oan |
2013-03-15 17:55 | oan | Note Added: 0023757 | |
2013-03-15 18:16 | oan | Note Added: 0023758 | |
2013-03-15 18:20 | oan | Assigned To | oan => bugmaster |
2013-03-18 11:13 |
|
Relationship added | parent of 0023832 |
2013-03-19 14:38 |
|
Status | assigned => resolved |
2013-03-19 14:38 |
|
Assigned To | bugmaster => mkv |
2013-03-19 14:38 |
|
Status | resolved => reviewed |
2013-03-22 20:56 |
|
Note Added: 0023877 | |
2013-03-22 20:56 |
|
Assigned To | mkv => bugmaster |
2013-03-22 20:56 |
|
Status | reviewed => tested |
2013-03-25 18:39 | oan | Changeset attached | => occt master b62b93ac |
2013-03-25 18:39 | oan | Assigned To | bugmaster => oan |
2013-03-25 18:39 | oan | Status | tested => verified |
2013-03-25 18:39 | oan | Resolution | open => fixed |
2013-04-23 13:35 |
|
Status | verified => closed |
2013-04-29 15:24 |
|
Fixed in Version | => 6.6.0 |
2014-09-01 17:48 | oan | Relationship added | related to 0025157 |