MantisBT - Open CASCADE
View Issue Details
0027860Open CASCADE[OCCT] OCCT:Visualizationpublic2016-09-10 14:342016-12-09 16:40
kgv 
kgv 
normalintegration request 
closedfixed 
 
[OCCT] 7.1.0[OCCT] 7.1.0 
Not needed
0027860: Visualization - clean up Transformation Persistence API
Transformation Persistence API should be cleaned up in the following way:
- Graphic3d_TransformPers should become a handle class.
  Graphic3d_CStructure::TransformPersistence and PrsMgr_PresentableObject::myTransformPersistence should not be allocated by default.
  Since majority of presentations are expected to be without transformation persistence it sounds reasonable to allocate this property dynamically.
- Graphic3d_TransModeFlags should be defined as enumeration.
  Majority of flags can not be combined, so current definition as a bitmask is confusing.
- Graphic3d_TMF_PanPers should be removed as actually unsupported and making no sense.
  The appropriate alternative is Graphic3d_TMF_TriedronPers, which should be probably extended to define independent offset in pixels within X and Y coordinate.
- Graphic3d_TMF_FullPers should be removed as actually unsupported and making no sense.
  The appropriate replacement is Graphic3d_TMF_2d.
- Combination of Graphic3d_TMF_ZoomPers + Graphic3d_TMF_RotatePers should re-defined by dedicated value.
- Graphic3d_TransformPers should be extended by new methods
  making different meaning of Point depending on persistence mode more straightforward.

Projection state changes should be removed OpenGl_Structure::Render() then:
    aCtx->ProjectionState.Push();
    aCtx->ApplyProjectionMatrix();
...
    aCtx->ProjectionState.Pop();
    aCtx->ApplyProjectionMatrix();
Transformation persistence float precision issues:
pload MODELING VISUALIZATION
box b 0 0 0 1 2 3
vclear
vinit View1
vaxo
vpoint p0 0 0 0
vpoint p1 1 0 0
vpoint p2 2 0 0
vfit
vtrih t
vdisplay -dispMode 1 b
vdisplay -trsfPers trihedron -trsfPersPos 1 -1 80 t
vzoom 100000
No tags attached.
related to 0027836closed bugmaster Open CASCADE Visualization, TKOpenGl - gradient background is lost at some camera positions 
related to 0027817closed bugmaster Open CASCADE Visualization, StdSelect_BRepOwner - copy transformation persistence flag 
related to 0027796closed bugmaster Open CASCADE Visualization - allow 3D objects with Graphic3d_TMF_2d flag 
related to 0022582closed bugmaster Open CASCADE Visualization - provide an API for dumping a sub-region of the viewport 
related to 0025180closed kgv Open CASCADE Visualization - Homogeneous transformation API in TKV3d 
Issue History
2016-09-10 14:34kgvNew Issue
2016-09-10 14:34kgvAssigned To => kgv
2016-09-10 14:34kgvRelationship addedrelated to 0027836
2016-09-10 14:35kgvRelationship addedrelated to 0027817
2016-09-10 14:35kgvRelationship addedrelated to 0027796
2016-09-10 14:35kgvRelationship addedrelated to 0027793
2016-09-10 14:37kgvRelationship addedrelated to 0022582
2016-09-16 10:48kgvDescription Updatedbug_revision_view_page.php?rev_id=14696#r14696
2016-09-16 13:42kgvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=14700#r14700
2016-09-17 19:34gitNote Added: 0057885
2016-09-17 21:11gitNote Added: 0057886
2016-09-17 21:31gitNote Added: 0057887
2016-09-17 21:44gitNote Added: 0057888
2016-09-17 21:48gitNote Added: 0057889
2016-09-17 22:39gitNote Added: 0057890
2016-09-18 00:27gitNote Added: 0057891
2016-09-18 00:32kgvNote Added: 0057892
2016-09-18 00:32kgvAssigned Tokgv => apl
2016-09-18 00:32kgvStatusnew => resolved
2016-09-18 08:51gitNote Added: 0057893
2016-09-18 15:16kgvRelationship addedrelated to 0025180
2016-09-19 23:40gitNote Added: 0057934
2016-09-19 23:44aplNote Added: 0057935
2016-09-19 23:44aplAssigned Toapl => bugmaster
2016-09-19 23:44aplStatusresolved => reviewed
2016-09-20 11:44apvAssigned Tobugmaster => apv
2016-09-21 10:21apvNote Added: 0057966
2016-09-21 10:21apvAssigned Toapv => kgv
2016-09-21 10:21apvStatusreviewed => assigned
2016-09-21 10:23apvNote Added: 0057967
2016-09-21 11:56gitNote Added: 0057978
2016-09-21 11:57gitNote Added: 0057979
2016-09-21 12:54kgvNote Added: 0057983
2016-09-21 12:54kgvAssigned Tokgv => bugmaster
2016-09-21 12:54kgvStatusassigned => resolved
2016-09-21 12:54kgvStatusresolved => reviewed
2016-09-21 13:05apvAssigned Tobugmaster => apv
2016-09-22 11:43apvNote Added: 0058014
2016-09-22 11:43apvAssigned Toapv => kgv
2016-09-22 11:43apvStatusreviewed => assigned
2016-09-22 11:44apvNote Added: 0058015
2016-09-22 12:11gitNote Added: 0058018
2016-09-22 12:12kgvNote Added: 0058019
2016-09-22 12:12kgvAssigned Tokgv => bugmaster
2016-09-22 12:12kgvStatusassigned => resolved
2016-09-22 12:13kgvStatusresolved => reviewed
2016-09-22 12:23apvAssigned Tobugmaster => apv
2016-09-23 11:47gitNote Added: 0058057
2016-09-23 11:52apvNote Added: 0058059
2016-09-26 12:05apvAssigned Toapv => kgv
2016-09-26 12:06apvTest case number => Not needed
2016-09-26 12:06apvAssigned Tokgv => apv
2016-09-26 12:09apvNote Added: 0058149
2016-09-26 12:09apvAssigned Toapv => bugmaster
2016-09-26 12:09apvStatusreviewed => tested
2016-10-03 13:47kgvChangeset attached => occt master 778cd667
2016-10-03 13:47kgvAssigned Tobugmaster => kgv
2016-10-03 13:47kgvStatustested => verified
2016-10-03 13:47kgvResolutionopen => fixed
2016-10-28 21:45gitNote Added: 0059511
2016-10-28 21:45gitNote Added: 0059512
2016-10-28 21:45gitNote Added: 0059513
2016-12-09 16:28aivStatusverified => closed
2016-12-09 16:40aivFixed in Version => 7.1.0

Notes
(0057885)
git   
2016-09-17 19:34   
Branch CR27860 has been created by kgv.

SHA-1: 2129a984a7bc3e5166e1ec417b0cdeff64333047


Detailed log of new commits:

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

    0027860: Visualization - clean up Transformation Persistence API
    
    Graphic3d_Camera::TransformMatrices redundant NCollection_Handle usage
    has been replaced with validity flags.
    
    Graphic3d_TransModeFlags now defined as enumeration, not integer bit flags.
    Graphic3d_TMF_PanPers and Graphic3d_TMF_FullPers have been removed.
    Graphic3d_TMF_ZoomRotatePers has been introduced.
    
    Graphic3d_TransformPers is now inherits Standard_Transient.
    Graphic3d_TransformPers now defines dedicated constructors
    for 3D persistence (zoom / rotate) and 2D persistence (2d / trihedron).
    2D persistence now supports dedicated values for X and Y offsets.
    The corner is now specified by enumeration Aspect_TypeOfTriedronPosition
    instead of indirect interpretation of anchor point values.
    
    PrsMgr_PresentableObject, Graphic3d_CStructure now hold
    Handle(Graphic3d_TransformPers) instead of a value.
    Method ::SetTransformPersistence(), ::TransformPersistence()
    now works with Handle(Graphic3d_TransformPers).
    Old methods have been marked deprecated.
(0057886)
git   
2016-09-17 21:11   
Branch CR27860 has been updated forcibly by kgv.

SHA-1: afa396cf2d99db6acfe94025fd37b6201bb5fd53
(0057887)
git   
2016-09-17 21:31   
Branch CR27860 has been updated by kgv.

SHA-1: eb33f68a68a3c7d95acb28de99cd13b1b00b5bdd


Detailed log of new commits:

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

    Graphic3d_TransformPers - fixed handling of Graphic3d_TMF_ZoomRotatePers.

(0057888)
git   
2016-09-17 21:44   
Branch CR27860 has been updated forcibly by kgv.

SHA-1: 83f5fdea13214b3aa162152d4ae31cf352275250
(0057889)
git   
2016-09-17 21:48   
Branch CR27860 has been updated forcibly by kgv.

SHA-1: e827cf0625e5d5023482fe769161b5b23ec4d46c
(0057890)
git   
2016-09-17 22:39   
Branch CR27860_1 has been created by kgv.

SHA-1: d863891e9c21bacf1acfb3f44668ce49e86d7932


Detailed log of new commits:

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

    0027860: Visualization - clean up Transformation Persistence API
    
    Graphic3d_Camera::TransformMatrices redundant NCollection_Handle usage
    has been replaced with validity flags.
    
    Graphic3d_TransModeFlags now defined as enumeration, not integer bit flags.
    Graphic3d_TMF_PanPers and Graphic3d_TMF_FullPers have been removed.
    Graphic3d_TMF_ZoomRotatePers has been introduced.
    
    Graphic3d_TransformPers is now inherits Standard_Transient.
    Graphic3d_TransformPers now defines dedicated constructors
    for 3D persistence (zoom / rotate) and 2D persistence (2d / trihedron).
    2D persistence now supports dedicated values for X and Y offsets.
    The corner is now specified by enumeration Aspect_TypeOfTriedronPosition
    instead of indirect interpretation of anchor point values.
    Fixed handling of Graphic3d_TMF_ZoomRotatePers (combination of Graphic3d_TMF_RotatePers + Graphic3d_TMF_ZoomPers).
    
    PrsMgr_PresentableObject, Graphic3d_CStructure now hold
    Handle(Graphic3d_TransformPers) instead of a value.
    Method ::SetTransformPersistence(), ::TransformPersistence()
    now works with Handle(Graphic3d_TransformPers).
    Old methods have been marked deprecated.
(0057891)
git   
2016-09-18 00:27   
Branch CR27860_1 has been updated forcibly by kgv.

SHA-1: 93b65301132f6dc6acb559673565344d14444e7d
(0057892)
kgv   
2016-09-18 00:32   
Patch is ready for review.
(0057893)
git   
2016-09-18 08:51   
Branch CR27860_1 has been updated forcibly by kgv.

SHA-1: 7b642a2221228fd6632f36875c3d6c26a7f6a21b
(0057934)
git   
2016-09-19 23:40   
Branch CR27860_1 has been updated forcibly by kgv.

SHA-1: 46966cd382762c51ef92a50ff6a75e0054c2ffaf
(0057935)
apl   
2016-09-19 23:44   
Dear bugmaster,

Please test branch CR27860_1.
(0057966)
apv   
2016-09-21 10:21   
Dear BugMaster,

Branch CR27860_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 46966cd382762c51ef92a50ff6a75e0054c2ffaf

Number of compiler warnings:
occt component:
   Linux: 2 (0 on master)
   Windows: 0 (0 on master)
   MasOS: 2 (0 on master)
products component:
   Linux: 64
   Windows: 0
   MacOS: 1133
New warnings have been detected during OCCT component building
on Linux:
http://jenkins-test-05.nnov.opencascade.com/view/CR27860_1-master/job/CR27860_1-master-OCCT-Debian70-64-opt-compile/1/warnings17Result/ [^]
on MacOS:
http://jenkins-test-05.nnov.opencascade.com/view/CR27860_1-master/job/CR27860_1-master-OCCT-MacOS-opt-compile/1/warnings7Result/ [^]

Compilation error has been detected during building of
CSharp Products samples on Windows:
http://jenkins-test-05.nnov.opencascade.com/view/CR27860_1-master/job/CR27860_1-master-Products-Windows-64-VC10-csharp-samples/1/parsed_console/ [^]
Java Products samples on Windows:
http://jenkins-test-05.nnov.opencascade.com/view/CR27860_1-master/job/CR27860_1-master-Products-Windows-64-VC10-java-samples/1/parsed_console/ [^]

Regressions/Differences:
http://occt-tests/CR27860_1-master-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR27860_1-master-OCCT/Windows-64-VC10/summary.html [^]
bugs vis bug22906, bug23484_2, bug24224, bug24522, bug24717, bug24901, bug24902_1, bug24902_2, bug25052, bug25060, bug25132, bug25229, bug25778, bug26028, bug26940, bug26973, bug27751_capping
demo samples dimensions, dimensionsglsl
v3d glsl distinguish_off

Testing on Linux:
Total MEMORY difference: 89202093 / 89648669 [-0.50%]
Total CPU difference: 19385.870000000108 / 19203.02999999994 [+0.95%]

Testing on Windows:
Total MEMORY difference: 57202413 / 57211877 [-0.02%]
Total CPU difference: 18317.26301759879 / 18509.12864749872 [-1.04%]

There are differences in images found by testdiff:
http://occt-tests/CR27860_1-master-OCCT/Debian70-64/diff-Debian70-64.html [^]
http://occt-tests/CR27860_1-master-OCCT/Windows-64-VC10/diff-Windows-64-VC10-image.html [^]
v3d glsl tiles
demo samples penrose
bugs vis bug26344
(0057967)
apv   
2016-09-21 10:23   
Dear Kirill,

Branch CR27860_1 has been rejected due to:
- compilation errors
- additional warnings
- regressions/differences/improvements
- differences in images
(0057978)
git   
2016-09-21 11:56   
Branch CR27860_1 has been updated by kgv.

SHA-1: abc6a21d981eb04de787098fad234ecd1abef0c1


Detailed log of new commits:

Author: kgv
Date: Wed Sep 21 11:56:06 2016 +0300

    fix regressions
    
    Test case v3d/glsl/tiles has been updated.
    Removed MSVC warnings suppression from ViewerTest_ObjectCommands.cxx.
    OpenGl_Structure::Render() - fixed misprint in condition.
    Graphic3d_Camera::SetFOVy() - fixed misprint in assignment.

(0057979)
git   
2016-09-21 11:57   
Branch CR27860_2 has been created by kgv.

SHA-1: 5fbeedb669d7365c09b3fe378b9dc8d7c2401f57


Detailed log of new commits:

Author: kgv
Date: Mon Sep 19 23:40:07 2016 +0300

    0027860: Visualization - clean up Transformation Persistence API
    
    Graphic3d_Camera::TransformMatrices redundant NCollection_Handle usage
    has been replaced with validity flags.
    
    Graphic3d_TransModeFlags now defined as enumeration, not integer bit flags.
    Graphic3d_TMF_PanPers and Graphic3d_TMF_FullPers have been removed.
    Graphic3d_TMF_ZoomRotatePers has been introduced.
    
    Graphic3d_TransformPers is now inherits Standard_Transient.
    Graphic3d_TransformPers now defines dedicated constructors
    for 3D persistence (zoom / rotate) and 2D persistence (2d / trihedron).
    2D persistence now supports dedicated values for X and Y offsets.
    The corner is now specified by enumeration Aspect_TypeOfTriedronPosition
    instead of indirect interpretation of anchor point values.
    Fixed handling of Graphic3d_TMF_ZoomRotatePers (combination of Graphic3d_TMF_RotatePers + Graphic3d_TMF_ZoomPers).
    
    PrsMgr_PresentableObject, Graphic3d_CStructure now hold
    Handle(Graphic3d_TransformPers) instead of a value.
    Method ::SetTransformPersistence(), ::TransformPersistence()
    now works with Handle(Graphic3d_TransformPers).
    Old methods have been marked deprecated.
(0057983)
kgv   
2016-09-21 12:54   
Please test branches CR27860_2 in OCCT and Products.

> There are differences in images found by testdiff:
> bugs vis bug26344
This change is expected - test case was modified.
(0058014)
apv   
2016-09-22 11:43   
Dear BugMaster,

Branch CR27860_2 from occt git-repository (and CR27860_2 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: 5fbeedb669d7365c09b3fe378b9dc8d7c2401f57
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: 1147

Regressions/Differences:
http://occt-tests/CR27860_2-CR27860_2-OCCT/Debian70-64/summary.html [^]
http://occt-tests/CR27860_2-CR27860_2-OCCT/Windows-64-VC10/summary.html [^]
3rdparty fonts A7
bugs vis bug22879, bug25121
v3d raytrace bug24819

Testing on Linux:
occt component:
Total MEMORY difference: 89678945 / 89800351 [-0.14%]
Total CPU difference: 19500.380000000143 / 19210.349999999937 [+1.51%]
products component:
Total MEMORY difference: 30032279 / 29998572 [+0.11%]
Total CPU difference: 5105.789999999979 / 5119.779999999977 [-0.27%]

Testing on Windows:
occt component:
Total MEMORY difference: 57204817 / 57211877 [-0.01%]
Total CPU difference: 18076.740675798912 / 18509.12864749872 [-2.34%]
products component:
Total MEMORY difference: 21268599 / 21232183 [+0.17%]
Total CPU difference: 4874.906449199955 / 4959.0221883999575 [-1.70%]
(0058015)
apv   
2016-09-22 11:44   
Dear Kirill,

Branches CR27860_2 (from occt git-repository) and CR27860_2 (from products git-repository) have been rejected due to:
- regressions/differences/improvements
(0058018)
git   
2016-09-22 12:11   
Branch CR27860_2 has been updated by kgv.

SHA-1: fb1301bc63aac4bcda5302543efc01f2e79dd884


Detailed log of new commits:

Author: kgv
Date: Thu Sep 22 12:11:45 2016 +0300

    Graphic3d_TransformPers - added extra constructor to avoid ambiguity.

(0058019)
kgv   
2016-09-22 12:12   
Please check updated patch.
(0058057)
git   
2016-09-23 11:47   
Branch CR27860_2 has been updated forcibly by apv.

SHA-1: bfb3e10cfb2c0d2ec28133ec55cbd1cb558d91ea
(0058059)
apv   
2016-09-23 11:52   
Braches CR27860_2 from occt and products git-repositories have been rebased on the current masters.
(0058149)
apv   
2016-09-26 12:09   
Dear BugMaster,

Branch CR27860_2 from occt git-repository (and CR27860_2 from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested.
SHA-1: bfb3e10cfb2c0d2ec28133ec55cbd1cb558d91ea
SHA-1: 8ab8495cd6d0a945e846de4eab3335a075f8403b

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: 1148

Regressions/Differences:
Not detected

Testing cases:
Not needed

Testing on Linux:
occt component:
Total MEMORY difference: 90462748 / 90146572 [+0.35%]
Total CPU difference: 19451.88999999998 / 19251.849999999875 [+1.04%]
products component:
Total MEMORY difference: 30085562 / 30046985 [+0.13%]
Total CPU difference: 5157.149999999979 / 5151.099999999975 [+0.12%]

Testing on Windows:
occt component:
Total MEMORY difference: 57216002 / 57221541 [-0.01%]
Total CPU difference: 17947.337846298764 / 18310.78897609872 [-1.98%]
products component:
Total MEMORY difference: 21272111 / 21235672 [+0.17%]
Total CPU difference: 4877.854868099951 / 4988.631178199945 [-2.22%]
(0059511)
git   
2016-10-28 21:45   
Branch CR27860 has been deleted by kgv.

SHA-1: e827cf0625e5d5023482fe769161b5b23ec4d46c
(0059512)
git   
2016-10-28 21:45   
Branch CR27860_1 has been deleted by kgv.

SHA-1: abc6a21d981eb04de787098fad234ecd1abef0c1
(0059513)
git   
2016-10-28 21:45   
Branch CR27860_2 has been deleted by kgv.

SHA-1: bfb3e10cfb2c0d2ec28133ec55cbd1cb558d91ea