View Issue Details

IDProjectCategoryView StatusLast Update
0032716Open CASCADEOCCT:Modeling Algorithmspublic2024-01-29 21:49
Reporterkgv Assigned Toabulyche  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version7.6.0 
Target Version7.7.0Fixed in Version7.6.3 
Summary0032716: Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation
DescriptionBRepBuilderAPI_ModifyShape has severe issue in handling faces - existing triangulation is always removed.
This leads to two issues:
- User has to re-triangulate shape, which might be much more expensive than transforming triangulation nodes.
- Triangulation-only shapes are corrupted or lead to NULL-dereference in algorithm.
Steps To Reproduce
pload MODELING
psphere s 1
incmesh s 1
trinfo s
tscale s 0 0 0 0.5
trinfo s
# KO - triangulation is empty

incmesh s 1
tclean -geom s
tscale s 0 0 0 0.5
# KO - crash in the algorithm
trinfo s
TagsNo tags attached.
Test case numberbugs/modalg_8/bug32716_1, bug32716_2, bug32716_3, bug32716_4

Relationships

parent of 0033049 closedazv Open CASCADE Command 'tclean -geom' does not remove all geometric objects from the shape 
related to 0031479 closedazv Community Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface) 
child of 0028125 newmsv Open CASCADE Modeling Algorithms - support of BRep shapes based on tessellated geometry 

Activities

git

2022-04-01 16:45

administrator   ~0107545

Branch CR32716 has been created by AndreyLA.

SHA-1: 6260a581acda84cfc96c5c2589b21b36dd09651a


Detailed log of new commits:

Author: Andrei LATYSHEV
Date: Fri Apr 1 16:45:02 2022 +0300

    0032716: Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation
    
    The methods for BRepTools_TrsfModification are defined and modified to keep the triangulation during 'tscale' operation.

kgv

2022-04-03 15:02

developer   ~0107572

+    //Applying the transformation to each node of triangulation
+    aP = theTriangulation->Node(i).Transformed(myTrsf);
+    theTriangulation->SetNode(i, aP);

It might be better adding the method `Poly_Triangulation::Transform (const gp_Trsf& theT)` / `Poly_Polygon3D::Transform()`.
It is not enough transforming triangulation nodes, normals should be transformed as well.

+Standard_EXPORT Standard_Boolean BRepTools_TrsfModification::NewPolygon

`Standard_EXPORT` should not appear in .cxx files.

+    TColgp_Array1OfPnt aNodesArray = aPolygon->Nodes();

Would be nice adding `Poly_Polygon3D::Copy()` for consistency with other classes.

git

2022-04-04 11:28

administrator   ~0107584

Branch CR32716 has been updated by AndreyLA.

SHA-1: f103aaf0b774ec20944279f60fbb6ba484712a57


Detailed log of new commits:

Author: Andrei LATYSHEV
Date: Mon Apr 4 11:28:10 2022 +0300

    0031479: Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
    
    Added test for user's problem case

git

2022-04-04 18:54

administrator   ~0107598

Branch CR32716 has been updated forcibly by AndreyLA.

SHA-1: 032b35fe3756570da94b8000b649d90af95c768c

kgv

2022-04-04 19:32

developer   ~0107600

+    aV = gp_Vec(myNormals(i).x(), myNormals(i).y(), myNormals(i).z()).Transformed(theT);
+    Standard_Real aCoef = aV.Magnitude();
+    aV = aV / aCoef;

Normal vectors couldn't be transformed like that - see gp_Dir::Transform() implementation.

+  // Apply the transformation to the triangulation
+  Standard_EXPORT void Transform(const gp_Trsf& theT);

`//!`

+  for (Standard_Integer i = 1; i < myNodes.Length(); ++i)
+  {

Indexation of `myNodes` doesn't start from `1`.

+//function : RemoveNormals
+//purpose  :
+//=======================================================================
+void Poly_Triangulation::Transform(const gp_Trsf& theT)

Inconsistent header.

git

2022-04-05 13:15

administrator   ~0107637

Branch CR32716 has been updated forcibly by AndreyLA.

SHA-1: 18006ef5d72ea6c26c6db5d286523b8771b26b8c

git

2022-04-20 17:14

administrator   ~0108051

Branch CR32716_1 has been created by abulychev-ext.

SHA-1: ab0770a8a2ece7d17f10b87bb66999d6232c35d9


Detailed log of new commits:

Author: abulyche
Date: Wed Apr 20 17:14:07 2022 +0300

    0032716: Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation
    
    Added the test to reproduce this problem.
    The methods for BRepTools_TrsfModification are defined and modified to keep the triangulation during 'tscale' operation.

git

2022-04-25 11:43

administrator   ~0108143

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: c60dffcbd8213545868226ea5988cb3d1d56ed8a

git

2022-04-27 20:51

administrator   ~0108229

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 0f03881816c15a866589716244c521a54ee9b3cd

git

2022-04-28 03:00

administrator   ~0108230

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: bc663ebe7339d8506c1f7151760e279f3ca26c79

git

2022-05-03 14:23

administrator   ~0108284

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 119d50b9108dafa8cccddc29b7ba3fcb0f3768ca

kgv

2022-05-04 14:42

developer   ~0108303

It is desired to create screenshots within the test to be able to verify visually that transformed mesh has correct vertex normals.
+++ b/tests/bugs/mesh/bug32716

git

2022-05-05 01:50

administrator   ~0108330

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 4f79f2608234a088a9e62f6d87505d525f795b5c

git

2022-05-16 14:55

administrator   ~0108443

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: fccc483a4a4d1e50fe65d67666cc04b3c5cdcb7d

git

2022-05-16 16:47

administrator   ~0108447

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: d0f2f33afec724c570e5cb7481b5d94367b1313b

git

2022-05-17 20:07

administrator   ~0108476

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: da5f2b9674fe02cd4cf70e2e60fc78b9e484682b

git

2022-05-18 15:36

administrator   ~0108485

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: b4f9584d53ed31ef06f75003d2dc1566a9b67c65

git

2022-05-25 13:03

administrator   ~0108608

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 50c778f9d6f5066db7fcfd15fd5f2b2eac013a5d

git

2022-05-25 15:16

administrator   ~0108611

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 14eee5b59de84f112300a254e5bb8836aa52f5bb

git

2022-05-25 16:46

administrator   ~0108613

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 0c861e6b8a99885e88059b55e42835f425e8fa0b

git

2022-05-26 20:05

administrator   ~0108633

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 0dd0b1ec845d99ab28c370ec480e6bce09e2521a

git

2022-05-30 11:31

administrator   ~0108742

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 3855a11c154f1b22b957d2bd373a62e0fc977535

git

2022-05-31 15:47

administrator   ~0108758

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: b8c3da059ea2621a9031019e452b90443de74233

git

2022-06-08 11:51

administrator   ~0108902

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 99fcf3aa9364c61c678a4c0ef930e73b91fd9435

git

2022-06-08 11:52

administrator   ~0108903

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 5b8f46c19fd3ecb5a158cab171f3a78b5962999f

git

2022-06-09 10:26

administrator   ~0108928

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: e80a0b1a353e173418656e3e2ab75f12d846cae8

git

2022-06-29 12:21

administrator   ~0109369

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 2030e2083801a1b5c2c8c10d3ce10eed7c58496c

git

2022-06-29 16:10

administrator   ~0109390

Branch CR32716_1 has been updated forcibly by abulychev-ext.

SHA-1: 78c7d475fe418b97948ad20cf139d4dc0370c90f

git

2022-07-02 15:40

administrator   ~0109515

Branch CR32716_2 has been created by azv.

SHA-1: 1dfb856ec0f454231556deddf6caa6447d2ec5d0


Detailed log of new commits:

Author: azv
Date: Fri Jul 1 16:46:55 2022 +0300

    0031479: Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
    
    * Avoid crash in BRepBuilderAPI_GTransform algorithm. The crash in BRepBuilder_Transform has been solved by 0032716.
    * Move copying modifier to BRepTools package.
    * Implement transformation of a triangulation in BRepTools_GTrsfModification.

Author: abulyche
Date: Wed Apr 20 17:14:07 2022 +0300

    0032716: Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation
    
    * Implement methods for copying tessellation to BRepTools_TrsfModification to keep the triangulation during transformation.
    * Add tests to reproduce the problem.

Author: azv
Date: Fri Jul 1 15:59:40 2022 +0300

    0033049: Command 'tclean -geom' does not remove all geometric objects from the shape
    
    Remove unused P-curves when cleaning the geometry

git

2022-07-05 10:00

administrator   ~0109555

Branch CR32716_2 has been updated forcibly by azv.

SHA-1: 878195b296d3ed3e8e51221f1a21d4410c572b9a

azv

2022-07-05 12:41

administrator   ~0109565

Please, review OCCT branch CR32716_2.
Test results: http://jenkins-test-occt/view/CR32716_2-master-AZV/view/COMPARE/

msv

2022-07-06 15:28

developer   ~0109614

It is needed to invalidate myCachedMinMax of the copy.
  theTriangulation = theTriangulation->Copy();


Use const&
      Poly_Triangle aTria = theTriangulation->Triangle(anInd);


In the method BRepTools_TrsfModification::NewPolygon it is needed to transform parameters if the edge has 3D curve.

Please update description, as there is no more "Copy" argument, but there are two new ones:
  //! of T is equal to 1., and if Copy equals false (the
...
                                const Standard_Boolean theCopyGeom = Standard_False, 
                                const Standard_Boolean theCopyMesh = Standard_False);

git

2022-07-06 17:25

administrator   ~0109620

Branch CR32716_2 has been updated by azv.

SHA-1: 5a6d2cf817e775fd29686f42de2430c7f1e16bb2


Detailed log of new commits:

Author: azv
Date: Wed Jul 6 17:25:10 2022 +0300

    # remarks

git

2022-07-06 17:28

administrator   ~0109621

Branch CR32716_3 has been created by azv.

SHA-1: adca922a1eb5a38893835ee3fe64fe18f7fcacc6


Detailed log of new commits:

Author: azv
Date: Fri Jul 1 16:46:55 2022 +0300

    0031479: Modeling Algorithms - exception on geometry transformation of triangulation-only shapes (without geometry surface)
    
    * Avoid crash in BRepBuilderAPI_GTransform algorithm. The crash in BRepBuilder_Transform has been solved by 0032716.
    * Move copying modifier to BRepTools package.
    * Implement copying of triangulation in BRepTools_NurbsConvertModification.
    * Implement transformation of a triangulation in BRepTools_GTrsfModification.
    * Update test case bugs/mesh/bug22778 to clean the triangulation after conversion to NURBS (reproduce the same behavior as before).

Author: abulyche
Date: Wed Apr 20 17:14:07 2022 +0300

    0032716: Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation
    
    * Implement methods for copying tessellation to BRepTools_TrsfModification to keep the triangulation during transformation.
    * Add tests to reproduce the problem.

azv

2022-07-06 17:33

administrator   ~0109622

>>> Use const&
>>>
>>> Poly_Triangle aTria = theTriangulation->Triangle(anInd);

It is not possible here, because aTria is updated below.

msv

2022-07-06 17:47

developer   ~0109623

The option -copymesh takes effect only with -copy. Please reflect this in the help.

git

2022-07-06 18:05

administrator   ~0109625

Branch CR32716_2 has been updated forcibly by azv.

SHA-1: e753eca36bcc9ff210e075a654aeddb94ef1b8ea

git

2022-07-06 22:28

administrator   ~0109633

Branch CR32716_3 has been updated forcibly by azv.

SHA-1: b6d3143e9b4357e2efe86d3ee16073ebb8b2fbaa

git

2022-07-07 07:11

administrator   ~0109644

Branch CR32716_3 has been updated forcibly by azv.

SHA-1: 91cfe0b4dd6f7bb51d71332a4c72495e2fcd359b

git

2022-07-07 09:43

administrator   ~0109650

Branch CR32716_2 has been updated forcibly by azv.

SHA-1: 85993c194f8ec3b381b299c16f0ea2bba4db9dfc

git

2022-07-07 16:50

administrator   ~0109673

Branch CR32716_3 has been updated forcibly by azv.

SHA-1: e8788af60496918e7ac1a3f0ac51e2b6ad3a3596

azv

2022-07-07 21:53

administrator   ~0109677

Mikhail, please review OCCT branch CR32716_2.
Branch CR32716_3 contains the same changes, but squashed to a single commit.
Test results: http://jenkins-test-occt/view/CR32716_3-master-AZV/view/COMPARE/

git

2022-07-08 06:24

administrator   ~0109681

Branch CR32716_3 has been updated forcibly by azv.

SHA-1: ce767f06bddc0efbc8e90fc19f6ea538076a22e5

msv

2022-07-08 15:49

developer   ~0109697

For integration:
occt - CR32716_3
products - none

smoskvin

2022-07-10 11:22

administrator   ~0109719

Combination -
OCCT branch : IR-2022-07-08
master SHA - changes and them, and you can discard any commits you make in this
33c8a72788661285860902f261062e39f32a2d46
changes and them, and you can discard any commits you make in this
e0ceb716c70188b98130b1550914140d0502a6f9
Products branch : IR-2022-07-08 SHA - 79a687f1cd4081ec53ec08c201360e89fce62abc
was compiled on Linux, MacOS and Windows platforms and tested in optimize mode.

Number of compiler warnings:
No new/fixed warnings

Regressions/Differences/Improvements:
No regressions/differences

CPU differences:
Debian80-64:
OCCT
Total CPU difference: 18685.930000000586 / 18908.870000000694 [-1.18%]
Products
Total CPU difference: 11796.890000000125 / 11832.130000000114 [-0.30%]
Windows-64-VC14:
OCCT
Total CPU difference: 20784.828125 / 20752.59375 [+0.16%]
Products
Total CPU difference: 13361.3125 / 13368.90625 [-0.06%]


Image differences :
No differences that require special attention

Memory differences :
No differences that require special attention

git

2022-07-10 12:08

administrator   ~0109724

Branch CR32716 has been deleted by mnt.

SHA-1: 18006ef5d72ea6c26c6db5d286523b8771b26b8c

git

2022-07-10 12:08

administrator   ~0109725

Branch CR32716_1 has been deleted by mnt.

SHA-1: 78c7d475fe418b97948ad20cf139d4dc0370c90f

git

2022-07-10 12:08

administrator   ~0109726

Branch CR32716_2 has been deleted by mnt.

SHA-1: 85993c194f8ec3b381b299c16f0ea2bba4db9dfc

git

2022-07-10 12:08

administrator   ~0109727

Branch CR32716_3 has been deleted by mnt.

SHA-1: ce767f06bddc0efbc8e90fc19f6ea538076a22e5

Related Changesets

occt: master 315ed0be

2022-04-20 17:14:07

abulyche


Committer: smoskvin Details Diff
0032716: Modeling Algorithms - BRepBuilderAPI_Transform discards triangulation

* Implement methods for copying tessellation to BRepTools_TrsfModification to keep the triangulation during transformation.
* Add tests to reproduce the problem.
Affected Issues
0032716
mod - src/BRepBuilderAPI/BRepBuilderAPI_Transform.cxx Diff File
mod - src/BRepBuilderAPI/BRepBuilderAPI_Transform.hxx Diff File
mod - src/BRepTest/BRepTest_BasicCommands.cxx Diff File
mod - src/BRepTools/BRepTools_TrsfModification.cxx Diff File
mod - src/BRepTools/BRepTools_TrsfModification.hxx Diff File
add - tests/bugs/modalg_8/bug32716_1 Diff File
add - tests/bugs/modalg_8/bug32716_2 Diff File
add - tests/bugs/modalg_8/bug32716_3 Diff File
add - tests/bugs/modalg_8/bug32716_4 Diff File

Issue History

Date Modified Username Field Change
2021-12-06 21:23 kgv New Issue
2021-12-06 21:23 kgv Assigned To => msv
2021-12-06 21:24 kgv Relationship added child of 0028125
2022-03-21 20:25 azv Assigned To msv => AndreyLA
2022-03-21 20:25 azv Status new => assigned
2022-03-24 11:54 azv Relationship added related to 0031479
2022-04-01 16:45 git Note Added: 0107545
2022-04-03 15:02 kgv Note Added: 0107572
2022-04-04 11:28 git Note Added: 0107584
2022-04-04 18:54 git Note Added: 0107598
2022-04-04 19:32 kgv Note Added: 0107600
2022-04-05 13:15 git Note Added: 0107637
2022-04-15 12:42 azv Assigned To AndreyLA => abulychev-ext
2022-04-20 17:14 git Note Added: 0108051
2022-04-25 11:43 git Note Added: 0108143
2022-04-27 20:51 git Note Added: 0108229
2022-04-28 03:00 git Note Added: 0108230
2022-05-03 14:23 git Note Added: 0108284
2022-05-04 14:42 kgv Note Added: 0108303
2022-05-05 01:50 git Note Added: 0108330
2022-05-16 14:55 git Note Added: 0108443
2022-05-16 16:47 git Note Added: 0108447
2022-05-17 20:07 git Note Added: 0108476
2022-05-18 15:36 git Note Added: 0108485
2022-05-25 13:03 git Note Added: 0108608
2022-05-25 15:16 git Note Added: 0108611
2022-05-25 16:46 git Note Added: 0108613
2022-05-26 20:05 git Note Added: 0108633
2022-05-30 11:31 git Note Added: 0108742
2022-05-31 15:47 git Note Added: 0108758
2022-06-08 11:51 git Note Added: 0108902
2022-06-08 11:52 git Note Added: 0108903
2022-06-09 10:26 git Note Added: 0108928
2022-06-29 12:21 git Note Added: 0109369
2022-06-29 16:10 git Note Added: 0109390
2022-07-01 15:08 azv Relationship added parent of 0033049
2022-07-02 15:40 git Note Added: 0109515
2022-07-02 15:45 azv Assigned To abulychev-ext => azv
2022-07-05 10:00 git Note Added: 0109555
2022-07-05 12:41 azv Assigned To azv => msv
2022-07-05 12:41 azv Status assigned => resolved
2022-07-05 12:41 azv Note Added: 0109565
2022-07-06 15:28 msv Note Added: 0109614
2022-07-06 15:28 msv Assigned To msv => abulychev-ext
2022-07-06 15:28 msv Status resolved => assigned
2022-07-06 15:29 msv Assigned To abulychev-ext => azv
2022-07-06 17:25 git Note Added: 0109620
2022-07-06 17:28 git Note Added: 0109621
2022-07-06 17:33 azv Note Added: 0109622
2022-07-06 17:47 msv Note Added: 0109623
2022-07-06 18:05 git Note Added: 0109625
2022-07-06 22:28 git Note Added: 0109633
2022-07-07 07:11 git Note Added: 0109644
2022-07-07 09:43 git Note Added: 0109650
2022-07-07 16:50 git Note Added: 0109673
2022-07-07 21:53 azv Assigned To azv => msv
2022-07-07 21:53 azv Status assigned => resolved
2022-07-07 21:53 azv Note Added: 0109677
2022-07-07 21:55 azv Test case number => bugs/modalg_8/bug32716_1, bug32716_2, bug32716_3, bug32716_4
2022-07-08 06:24 git Note Added: 0109681
2022-07-08 15:49 msv Assigned To msv => bugmaster
2022-07-08 15:49 msv Status resolved => reviewed
2022-07-08 15:49 msv Note Added: 0109697
2022-07-10 11:22 smoskvin Status reviewed => tested
2022-07-10 11:22 smoskvin Note Added: 0109719
2022-07-10 12:03 smoskvin Changeset attached => occt master 315ed0be
2022-07-10 12:03 abulyche Assigned To bugmaster => abulyche
2022-07-10 12:03 abulyche Status tested => verified
2022-07-10 12:03 abulyche Resolution open => fixed
2022-07-10 12:08 git Note Added: 0109724
2022-07-10 12:08 git Note Added: 0109725
2022-07-10 12:08 git Note Added: 0109726
2022-07-10 12:08 git Note Added: 0109727
2023-03-19 19:29 vglukhik Status verified => closed
2023-03-19 19:29 vglukhik Fixed in Version => 7.6.3