Archived issue #0033476
Mesh - Fillet and Torus Meshing Visual Artifacts
Description
A cylinder with radius 25 mm and height (10 mm) with filleted edge of 1 mm will show the bumps / artifacts when meshed with linear deflection = 0.005 and angular deflection = 26.5 degrees (0.4625 rad) and Relative=true, see images attached.
This also occurs with a torus, both .step files and .objs are attached.
This also occurs with a torus, both .step files and .objs are attached.
Steps to reproduce
Mesh the .step files with aMeshParams of linear deflection = 0.005, angular deflection = 26.5 degrees (0.4625 rad) and Relative=true
Public activity
9 archived notes
Participants are labeled by their role within this record.
Attachment 8 (STEP)
Attachment 8 (STEP) (11,309 bytes)
Attachment 12 (STEP)
Attachment 12 (STEP) (13,933 bytes)
Attachment 7 (OBJ)
Attachment 11 (OBJ) (84,802 bytes)
Attachment 7 (OBJ)
Attachment 7 (OBJ) (150,919 bytes)
filet mesh images
Attachment 6 (PNG) (181,693 bytes)
Attachment 5 (PNG) (205,366 bytes)
torus images
Attachment 10 (PNG) (232,513 bytes)
Attachment 9 (PNG) (234,842 bytes)
Hi Commenter 1,
I have done some debugging with the Attachment 8 (STEP). The issue is caused by the differing number of points on the circular edges and how the torus’s face is discretized. The inner circular edge (radius 24 mm) has 42 points and outer circular edge (radius 25 mm) has radius 43 points.
The torus face discretization uses the inner and outer edge U values from “GetParametersU()” (line 87 OCCT\src\BRepMesh\BRepMesh_TorusRangeSplitter.cxx) with the “aStdStep” check (line 172 OCCT\src\BRepMesh\BRepMesh_TorusRangeSplitter.cxx) to insure the points aren’t too close.
The torus using a mixture of U values from the inner and outer edges results in artifacts shown above.
I am unsure on what the best solution is to this. Potentially, as part of the ModelHealer there is a check for Torus face shapes which checks if the inner and outer edge has the same number of points? If they are different then the U values of the higher is used for both? This could be applied to NURB surfaces where the same type of artifacts exist.
I have done some debugging with the Attachment 8 (STEP). The issue is caused by the differing number of points on the circular edges and how the torus’s face is discretized. The inner circular edge (radius 24 mm) has 42 points and outer circular edge (radius 25 mm) has radius 43 points.
The torus face discretization uses the inner and outer edge U values from “GetParametersU()” (line 87 OCCT\src\BRepMesh\BRepMesh_TorusRangeSplitter.cxx) with the “aStdStep” check (line 172 OCCT\src\BRepMesh\BRepMesh_TorusRangeSplitter.cxx) to insure the points aren’t too close.
The torus using a mixture of U values from the inner and outer edges results in artifacts shown above.
I am unsure on what the best solution is to this. Potentially, as part of the ModelHealer there is a check for Torus face shapes which checks if the inner and outer edge has the same number of points? If they are different then the U values of the higher is used for both? This could be applied to NURB surfaces where the same type of artifacts exist.
Hi Commenter 1,
I have developed a function which compares the edges of the torus and adjusts them to match in surface UV space. Please let me know what you think and if you have any questions.
OCCT\src\BRepMesh\Attachment 4 (HXX) line 170
OCCT\src\BRepMesh\Attachment 3 (CXX) lines 261 393 - 442 (fixFaceEdgePoints function)
OCCT\src\BRepMesh\Attachment 2 (HXX) line 75
OCCT\src\BRepMesh\Attachment 1 (CXX) lines 351 - 716 (TessellateEdgeMatch)
I have developed a function which compares the edges of the torus and adjusts them to match in surface UV space. Please let me know what you think and if you have any questions.
OCCT\src\BRepMesh\Attachment 4 (HXX) line 170
OCCT\src\BRepMesh\Attachment 3 (CXX) lines 261 393 - 442 (fixFaceEdgePoints function)
OCCT\src\BRepMesh\Attachment 2 (HXX) line 75
OCCT\src\BRepMesh\Attachment 1 (CXX) lines 351 - 716 (TessellateEdgeMatch)
Attachment 1 (CXX) (23,812 bytes)
Attachment 2 (HXX) (4,182 bytes)
Attachment 3 (CXX) (19,863 bytes)
Attachment 4 (HXX) (7,116 bytes)
Hi Commenter 2, apologies my previous notes did not use the @ symbol.