View Issue Details

IDProjectCategoryView StatusLast Update
0025180Open CASCADEOCCT:Visualizationpublic2021-01-14 17:09
ReportersanAssigned Tokgv  
PrioritynormalSeverityintegration request 
Status closedResolutionfixed 
Target Version7.1.0Fixed in Version7.1.0 
Summary0025180: Visualization - Homogeneous transformation API in TKV3d
DescriptionCurrently, even after correction of 0024837, presentation and selection packages in TKV3d library still use several different ways to specify a 3D transformation to be applied to presentations and sensitive entities:
- gp_Trsf is used in PrsMgr classes
- TopLoc_Location is used by AIS methods dealing with transformations and by selection packages
- Prs3d_Presentation accepts transformation in the form of Geom_Transformation

Such variety is not good from the coding style point of view, it affects code readability and size negatively and it requires a lot of unnecessary extra conversions between different transformation classes.

It is proposed to choose a single unified way to pass 3D transformation to visualization and selection API:
- either gp_Trsf can be used as a common OCCT way to represent transformations
- or visualization-specific class Graphic3d_Mat4d can be considered.
Steps To ReproduceStress test to compare performance:
pload MODELING VISUALIZATION
box b 1 2 3
set aNb 30
vclear
vinit View1
vaxo
dchrono t stop
dchrono t reset
dchrono t start
for {set i 0} {$i < $aNb} {incr i} { for {set j 0} {$j < $aNb} {incr j} { for {set k 0} {$k < $aNb} {incr k} { copy b bx${i}y${j}z${k}; vdisplay -noupdate -dispMode 1 bx${i}y${j}z${k}; vsetlocation -noupdate bx${i}y${j}z${k} [expr $i * 3] [expr $j * 3] [expr $k * 3] }}}
vfit
dchrono t stop
dchrono t show
vcaps -vsync 0
meminfo
vfps
TagsNo tags attached.
Test case numberNot needed

Relationships

related to 0024837 closedbugmaster Open CASCADE Visualization - revise design and implementation of connected Interactive Objects 
related to 0027860 closedkgv Open CASCADE Visualization - clean up Transformation Persistence API 
parent of 0032056 closedbugmaster Open CASCADE Coding Rules - remove package MMgt and other types deprecated since OCCT 7.2.0 

Activities

git

2014-09-16 12:06

administrator   ~0031742

Branch CR25180 has been created by duv.

SHA-1: 5a78e5f6ed95d4efeefdaec700316cf0aea35ae2


Detailed log of new commits:

Author: duv
Date: Tue Sep 16 12:05:13 2014 +0400

    0025180: Visualization - Homogeneous transformation API in TKV3d.

duv

2014-09-16 17:01

developer   ~0031776

Dear abv,

Please review the patch.

abv

2014-09-17 14:09

manager   ~0031801

Please document the changes made (either in commit message, or in bug note)

duv

2014-09-17 14:25

developer   ~0031805

Dear abv,

The changes have been documented in bug note.

abv

2014-09-17 15:17

manager   ~0031809

Do I understand correctly that all classes inheriting AIS_InteractiveObject must be revised to correct this argument of Compute()? If so, can we be sure that the users who have such objects in their applications will notice the change (i.e. will the compilation fail if code is not updated)?

My feeling is that this change will create numerous troubles to users (including additional difficulties in supporting code capable of building on both 6.8.0+ and previous versions of OCCT), without bringing any benefits.

Please explain why this change is needed (apart of code style consideration which is rather subjective)

san

2014-10-17 20:19

developer   ~0033297

To be considered more carefully after 6.8.0 release.
Transformations API to be agreed by all concerned persons.

git

2016-09-18 15:15

administrator   ~0057894

Branch CR25180_1 has been created by kgv.

SHA-1: 5146e5a03c3c9ee09c4dc7f2fb8d7b99efd9f2c7


Detailed log of new commits:

Author: kgv
Date: Sat Sep 17 19:33:53 2016 +0300

    0025180: Visualization - Homogeneous transformation API in TKV3d
    
    PrsMgr_PresentableObject, Graphic3d_Structure now consistently
    take and store Handle(Geom_Transformation) instead of
    TColStd_Array2OfReal / Graphic3d_Mat4.
    Low-level advanced methods have been modified to pass Handle(Geom_Transformation).
    High-level methods have been preserved accepting old syntax taking gp_Trsf.
    
    Geom_Transformation now inlines most methods.

kgv

2016-09-18 15:16

developer   ~0057895

Updated patch is ready for review.

san

2016-09-20 12:22

developer   ~0057942

Branch CR25180_1 reviewed without remarks, ready for testing.

Note that the patch is based on a patch for 0027860.

apv

2016-09-21 10:27

tester   ~0057968

Fix for issue 0027860 has been rejected. Issue 0025180 is waiting updated version of fix.

git

2016-09-21 12:57

administrator   ~0057984

Branch CR25180_1 has been updated forcibly by kgv.

SHA-1: 2f1ad16351c7bf22b875627262fa2fab9f0e0ba0

kgv

2016-09-21 12:58

developer   ~0057985

Branch has been rebased onto updated patch for 0027860 (beware that 0027860 has also branch for Products).

apv

2016-09-22 11:45

tester   ~0058016

Dear BugMaster,

Branch CR25180_1 from occt git-repository (and CR27860_2 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 2f1ad16351c7bf22b875627262fa2fab9f0e0ba0
SHA-1: 677cf1083f54bf291e25f0341574f85deb450174

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1136

Compilation errors have been detected during building of
CSharp Products samples on Windows:
http://jenkins-test-05.nnov.opencascade.com/view/CR25180_1-CR27860_2/job/CR25180_1-CR27860_2-Products-Windows-64-VC10-csharp-samples/2/parsed_console/
Java Products samples on Windows:
http://jenkins-test-05.nnov.opencascade.com/view/CR25180_1-CR27860_2/job/CR25180_1-CR27860_2-Products-Windows-64-VC10-java-samples/2/parsed_console/

Regressions/Differences:
http://occt-tests/CR25180_1-CR27860_2-OCCT/Debian70-64/summary.html
http://occt-tests/CR25180_1-CR27860_2-OCCT/Windows-64-VC10/summary.html
bugs vis bug24837_1
Possible equal to regressions/differences from 0027860:
3rdparty fonts A7
bugs vis bug22879, bug25121
v3d raytrace bug24819

Testing on Linux:
occt component:
Total MEMORY difference: 89942851 / 89806745 [+0.15%]
Total CPU difference: 19387.22999999995 / 19209.969999999936 [+0.92%]
products component:
Total MEMORY difference: 30046253 / 29998572 [+0.16%]
Total CPU difference: 5097.689999999975 / 5119.779999999977 [-0.43%]

Testing on Windows:
occt component:
Total MEMORY difference: 57199874 / 57211877 [-0.02%]
Total CPU difference: 18165.97324779889 / 18509.12864749872 [-1.85%]
products component:
Total MEMORY difference: 21268567 / 21232183 [+0.17%]
Total CPU difference: 4862.11436719995 / 4959.0221883999575 [-1.95%]

There are differences in images found by testdiff:
http://occt-tests/CR25180_1-CR27860_2-OCCT/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR25180_1-CR27860_2-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html
v3d manipulator rotate
v3d manipulator zoom_persistence
v3d manipulator translate

apv

2016-09-22 11:48

tester   ~0058017

Dear Kirill,

Branches CR25180_1 (from occt git-repository) and CR27860_2 (from products git-repository) have been rejected due to:
- compilation errors
- regressions/differences/improvements
- differences in images

git

2016-09-23 14:07

administrator   ~0058068

Branch CR25180_1 has been updated by kgv.

SHA-1: 791321f7402ce164fe56bc63127d9b821fdd361b


Detailed log of new commits:

Author: kgv
Date: Fri Sep 23 14:07:15 2016 +0300

    AIS_Manipulator::updateTransformation() - fixed usage of setLocalTransformation()

git

2016-09-23 14:10

administrator   ~0058069

Branch CR25180_2 has been created by kgv.

SHA-1: 736f46ef074daf40ef450e19cde32e19134af4d1


Detailed log of new commits:

Author: kgv
Date: Sat Sep 17 19:33:53 2016 +0300

    0025180: Visualization - Homogeneous transformation API in TKV3d
    
    PrsMgr_PresentableObject, Graphic3d_Structure now consistently
    take and store Handle(Geom_Transformation) instead of
    TColStd_Array2OfReal / Graphic3d_Mat4.
    Low-level advanced methods have been modified to pass Handle(Geom_Transformation).
    High-level methods have been preserved accepting old syntax taking gp_Trsf.
    
    Geom_Transformation now inlines most methods.

kgv

2016-09-23 14:10

developer   ~0058070

Last edited: 2016-09-23 14:11

Regression with manipulator should be fixed now.
Please check updated patch in branch CR25180_2 (based on 0027860).

kgv

2016-09-25 14:29

developer   ~0058122

CR25180_2 for Products has been pushed to fix building C#/Java samples (only samples have been changed).

apv

2016-09-26 12:28

tester   ~0058153

Branch CR25180_2 from products git-repository has been rebased on the current master.

apv

2016-09-27 12:24

tester   ~0058194

Dear BugMaster,

Branch CR25180_2 from occt git-repository (and CR25180_2 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 736f46ef074daf40ef450e19cde32e19134af4d1
SHA-1: e0bf14f582b35032c1e1c67a2297497ea8875e90

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1118

Regressions/Differences:
http://occt-tests/CR25180_2-CR25180_2-OCCT/Debian70-64/summary.html
http://occt-tests/CR25180_2-CR25180_2-OCCT/Windows-64-VC10/summary.html
bugs vis bug24837_1

Testing on Linux:
occt component:
Total MEMORY difference: 90280085 / 90221933 [+0.06%]
Total CPU difference: 19460.11999999995 / 19251.349999999875 [+1.08%]
products component:
Total MEMORY difference: 30074923 / 30057668 [+0.06%]
Total CPU difference: 5146.629999999971 / 5152.399999999975 [-0.11%]

Testing on Windows:
occt component:
Total MEMORY difference: 57210979 / 57221541 [-0.02%]
Total CPU difference: 17924.01569679872 / 18310.78897609872 [-2.11%]
products component:
Total MEMORY difference: 21272079 / 21235672 [+0.17%]
Total CPU difference: 4906.60585239995 / 4988.631178199945 [-1.64%]

apv

2016-09-27 12:26

tester   ~0058195

Dear Kirill,

Branches CR25180_2 from occt and products git-repositories have been rejected due to:
- regressions/differences/improvements

git

2016-09-27 13:07

administrator   ~0058198

Branch CR25180_2 has been updated by kgv.

SHA-1: 4683a81eec3adddbdd045c3b838b524377c9c031


Detailed log of new commits:

Author: kgv
Date: Tue Sep 27 13:04:59 2016 +0300

    fix regression

kgv

2016-09-27 13:08

developer   ~0058200

Please check updated patch.

apv

2016-09-28 10:30

tester   ~0058236

Dear BugMaster,

Branch CR25180_2 from occt git-repository (and CR25180_2 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 4683a81eec3adddbdd045c3b838b524377c9c031
SHA-1: e0bf14f582b35032c1e1c67a2297497ea8875e90

Number of compiler warnings:
occt component:
   Linux: 0 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 0 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1125

Regressions/Differences:
Not detected

Testing cases:
Not needed

Testing on Linux:
occt component:
Total MEMORY difference: 90861249 / 90246963 [+0.68%]
Total CPU difference: 19448.999999999967 / 19251.849999999875 [+1.02%]
products component:
Total MEMORY difference: 30112022 / 30046985 [+0.22%]
Total CPU difference: 5154.009999999979 / 5151.099999999975 [+0.06%]

Testing on Windows:
occt component:
Total MEMORY difference: 57211683 / 57221541 [-0.02%]
Total CPU difference: 17933.03255459869 / 18310.78897609872 [-2.06%]
products component:
Total MEMORY difference: 21272090 / 21235672 [+0.17%]
Total CPU difference: 4885.84211929994 / 4988.631178199945 [-2.06%]

git

2016-10-28 21:41

administrator   ~0059434

Branch CR25180_2 has been deleted by kgv.

SHA-1: 4683a81eec3adddbdd045c3b838b524377c9c031

git

2016-10-28 21:44

administrator   ~0059489

Branch CR25180_1 has been deleted by kgv.

SHA-1: 791321f7402ce164fe56bc63127d9b821fdd361b

git

2016-10-28 21:51

administrator   ~0059597

Branch CR25180 has been deleted by kgv.

SHA-1: 5a78e5f6ed95d4efeefdaec700316cf0aea35ae2

Related Changesets

occt: master 1f7f5a90

2016-09-17 16:33:53

kgv

Details Diff
0025180: Visualization - Homogeneous transformation API in TKV3d

PrsMgr_PresentableObject, Graphic3d_Structure now consistently
take and store Handle(Geom_Transformation) instead of
TColStd_Array2OfReal / Graphic3d_Mat4.
Low-level advanced methods have been modified to pass Handle(Geom_Transformation).
High-level methods have been preserved accepting old syntax taking gp_Trsf.

Geom_Transformation now inlines most methods.
Affected Issues
0025180
mod - src/AIS/AIS_ConnectedInteractive.cxx Diff File
mod - src/AIS/AIS_ConnectedInteractive.hxx Diff File
mod - src/AIS/AIS_Manipulator.cxx Diff File
mod - src/AIS/AIS_Manipulator.hxx Diff File
mod - src/AIS/AIS_MultipleConnectedInteractive.cxx Diff File
mod - src/AIS/AIS_MultipleConnectedInteractive.hxx Diff File
mod - src/AIS/AIS_Trihedron.cxx Diff File
mod - src/AIS/AIS_Trihedron.hxx Diff File
mod - src/Geom/Geom_Transformation.cxx Diff File
mod - src/Geom/Geom_Transformation.hxx Diff File
mod - src/gp/gp_Trsf.hxx Diff File
mod - src/Graphic3d/Graphic3d_CStructure.hxx Diff File
mod - src/Graphic3d/Graphic3d_CView.cxx Diff File
mod - src/Graphic3d/Graphic3d_CView.hxx Diff File
mod - src/Graphic3d/Graphic3d_Structure.cxx Diff File
mod - src/Graphic3d/Graphic3d_Structure.hxx Diff File
mod - src/Graphic3d/Graphic3d_StructureManager.cxx Diff File
mod - src/Graphic3d/Graphic3d_StructureManager.hxx Diff File
mod - src/OpenGl/OpenGl_MatrixState.hxx Diff File
mod - src/OpenGl/OpenGl_Structure.cxx Diff File
mod - src/OpenGl/OpenGl_Structure.hxx Diff File
mod - src/OpenGl/OpenGl_StructureShadow.cxx Diff File
mod - src/OpenGl/OpenGl_View.hxx Diff File
mod - src/OpenGl/OpenGl_View_Raytrace.cxx Diff File
mod - src/Prs3d/Prs3d_Presentation.cxx Diff File
mod - src/Prs3d/Prs3d_Presentation.hxx Diff File
mod - src/PrsMgr/PrsMgr_ListOfPresentableObjects.hxx Diff File
mod - src/PrsMgr/PrsMgr_PresentableObject.cxx Diff File
mod - src/PrsMgr/PrsMgr_PresentableObject.hxx Diff File
mod - src/PrsMgr/PrsMgr_Presentation.cxx Diff File
mod - src/PrsMgr/PrsMgr_Presentation.hxx Diff File
mod - src/PrsMgr/PrsMgr_PresentationManager.cxx Diff File
mod - src/PrsMgr/PrsMgr_Prs.cxx Diff File
mod - src/PrsMgr/PrsMgr_Prs.hxx Diff File
mod - src/V3d/V3d_CircularGrid.cxx Diff File
mod - src/V3d/V3d_Plane.cxx Diff File
mod - src/V3d/V3d_RectangularGrid.cxx Diff File

Issue History

Date Modified Username Field Change
2014-08-20 19:13 san New Issue
2014-08-20 19:13 san Assigned To => duv
2014-08-20 19:13 san Relationship added related to 0024837
2014-08-20 19:14 san Description Updated
2014-08-20 19:15 san Status new => assigned
2014-09-16 12:06 git Note Added: 0031742
2014-09-16 17:01 duv Note Added: 0031776
2014-09-16 17:01 duv Assigned To duv => abv
2014-09-16 17:01 duv Status assigned => resolved
2014-09-17 14:09 abv Note Added: 0031801
2014-09-17 14:09 abv Assigned To abv => duv
2014-09-17 14:09 abv Status resolved => assigned
2014-09-17 14:24 duv Additional Information Updated
2014-09-17 14:25 duv Note Added: 0031805
2014-09-17 14:25 duv Assigned To duv => abv
2014-09-17 14:25 duv Status assigned => resolved
2014-09-17 15:17 abv Note Added: 0031809
2014-09-17 15:17 abv Status resolved => assigned
2014-09-17 18:58 abv Assigned To abv => san
2014-10-17 20:19 san Note Added: 0033297
2014-10-17 20:19 san Assigned To san => duv
2014-10-17 20:19 san Target Version 6.8.0 => 7.1.0
2016-09-16 11:50 kgv Assigned To duv => kgv
2016-09-16 11:50 kgv Severity text => integration request
2016-09-18 15:00 kgv Steps to Reproduce Updated
2016-09-18 15:00 kgv Additional Information Updated
2016-09-18 15:15 git Note Added: 0057894
2016-09-18 15:16 kgv Relationship added related to 0027860
2016-09-18 15:16 kgv Note Added: 0057895
2016-09-18 15:16 kgv Assigned To kgv => san
2016-09-18 15:16 kgv Status assigned => resolved
2016-09-20 12:22 san Note Added: 0057942
2016-09-20 12:22 san Assigned To san => bugmaster
2016-09-20 12:22 san Status resolved => reviewed
2016-09-20 12:24 apv Assigned To bugmaster => apv
2016-09-21 10:27 apv Note Added: 0057968
2016-09-21 10:27 apv Assigned To apv => kgv
2016-09-21 10:27 apv Status reviewed => feedback
2016-09-21 12:57 git Note Added: 0057984
2016-09-21 12:58 kgv Note Added: 0057985
2016-09-21 12:58 kgv Assigned To kgv => bugmaster
2016-09-21 12:58 kgv Status feedback => reviewed
2016-09-21 13:06 apv Assigned To bugmaster => apv
2016-09-22 11:45 apv Note Added: 0058016
2016-09-22 11:45 apv Assigned To apv => kgv
2016-09-22 11:45 apv Status reviewed => assigned
2016-09-22 11:48 apv Note Added: 0058017
2016-09-23 14:07 git Note Added: 0058068
2016-09-23 14:10 git Note Added: 0058069
2016-09-23 14:10 kgv Note Added: 0058070
2016-09-23 14:10 kgv Assigned To kgv => bugmaster
2016-09-23 14:10 kgv Status assigned => resolved
2016-09-23 14:11 kgv Status resolved => reviewed
2016-09-23 14:11 kgv Note Edited: 0058070
2016-09-23 14:54 apv Assigned To bugmaster => apv
2016-09-25 14:29 kgv Note Added: 0058122
2016-09-26 12:28 apv Note Added: 0058153
2016-09-27 12:24 apv Note Added: 0058194
2016-09-27 12:24 apv Assigned To apv => kgv
2016-09-27 12:24 apv Status reviewed => assigned
2016-09-27 12:26 apv Note Added: 0058195
2016-09-27 13:07 git Note Added: 0058198
2016-09-27 13:08 kgv Note Added: 0058200
2016-09-27 13:08 kgv Assigned To kgv => bugmaster
2016-09-27 13:08 kgv Status assigned => resolved
2016-09-27 13:08 kgv Status resolved => reviewed
2016-09-27 14:24 apv Assigned To bugmaster => apv
2016-09-28 10:27 apv Test case number => Not needed
2016-09-28 10:30 apv Note Added: 0058236
2016-09-28 10:30 apv Assigned To apv => bugmaster
2016-09-28 10:30 apv Status reviewed => tested
2016-10-03 13:47 kgv Changeset attached => occt master 1f7f5a90
2016-10-03 13:47 kgv Assigned To bugmaster => kgv
2016-10-03 13:47 kgv Status tested => verified
2016-10-03 13:47 kgv Resolution open => fixed
2016-10-21 12:05 kgv Steps to Reproduce Updated
2016-10-28 21:41 git Note Added: 0059434
2016-10-28 21:44 git Note Added: 0059489
2016-10-28 21:51 git Note Added: 0059597
2016-12-09 16:29 aiv Status verified => closed
2016-12-09 16:40 aiv Fixed in Version => 7.1.0
2021-01-14 17:09 kgv Relationship added parent of 0032056