MantisBT - Open CASCADE
View Issue Details
0025180Open CASCADE[OCCT] OCCT:Visualizationpublic2014-08-20 19:132016-12-09 16:40
san 
kgv 
normalintegration request 
closedfixed 
 
[OCCT] 7.1.0[OCCT] 7.1.0 
Not needed
0025180: Visualization - Homogeneous transformation API in TKV3d
Currently, 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.
Stress 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
No tags attached.
related to 0024837closed bugmaster Open CASCADE Visualization - revise design and implementation of connected Interactive Objects 
related to 0027860closed kgv Open CASCADE Visualization - clean up Transformation Persistence API 
Issue History
2014-08-20 19:13sanNew Issue
2014-08-20 19:13sanAssigned To => duv
2014-08-20 19:13sanRelationship addedrelated to 0024837
2014-08-20 19:14sanDescription Updatedbug_revision_view_page.php?rev_id=7908#r7908
2014-08-20 19:15sanStatusnew => assigned
2014-09-16 12:06gitNote Added: 0031742
2014-09-16 17:01duvNote Added: 0031776
2014-09-16 17:01duvAssigned Toduv => abv
2014-09-16 17:01duvStatusassigned => resolved
2014-09-17 14:09abvNote Added: 0031801
2014-09-17 14:09abvAssigned Toabv => duv
2014-09-17 14:09abvStatusresolved => assigned
2014-09-17 14:24duvAdditional Information Updatedbug_revision_view_page.php?rev_id=8070#r8070
2014-09-17 14:25duvNote Added: 0031805
2014-09-17 14:25duvAssigned Toduv => abv
2014-09-17 14:25duvStatusassigned => resolved
2014-09-17 15:17abvNote Added: 0031809
2014-09-17 15:17abvStatusresolved => assigned
2014-09-17 18:58abvAssigned Toabv => san
2014-10-17 20:19sanNote Added: 0033297
2014-10-17 20:19sanAssigned Tosan => duv
2014-10-17 20:19sanTarget Version6.8.0 => 7.1.0
2016-09-16 11:50kgvAssigned Toduv => kgv
2016-09-16 11:50kgvSeveritytext => integration request
2016-09-18 15:00kgvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=14714#r14714
2016-09-18 15:00kgvAdditional Information Updatedbug_revision_view_page.php?rev_id=14715#r14715
2016-09-18 15:15gitNote Added: 0057894
2016-09-18 15:16kgvRelationship addedrelated to 0027860
2016-09-18 15:16kgvNote Added: 0057895
2016-09-18 15:16kgvAssigned Tokgv => san
2016-09-18 15:16kgvStatusassigned => resolved
2016-09-18 15:16kgvRelationship addedrelated to 0024393
2016-09-20 12:22sanNote Added: 0057942
2016-09-20 12:22sanAssigned Tosan => bugmaster
2016-09-20 12:22sanStatusresolved => reviewed
2016-09-20 12:24apvAssigned Tobugmaster => apv
2016-09-21 10:27apvNote Added: 0057968
2016-09-21 10:27apvAssigned Toapv => kgv
2016-09-21 10:27apvStatusreviewed => feedback
2016-09-21 12:57gitNote Added: 0057984
2016-09-21 12:58kgvNote Added: 0057985
2016-09-21 12:58kgvAssigned Tokgv => bugmaster
2016-09-21 12:58kgvStatusfeedback => reviewed
2016-09-21 13:06apvAssigned Tobugmaster => apv
2016-09-22 11:45apvNote Added: 0058016
2016-09-22 11:45apvAssigned Toapv => kgv
2016-09-22 11:45apvStatusreviewed => assigned
2016-09-22 11:48apvNote Added: 0058017
2016-09-23 14:07gitNote Added: 0058068
2016-09-23 14:10gitNote Added: 0058069
2016-09-23 14:10kgvNote Added: 0058070
2016-09-23 14:10kgvAssigned Tokgv => bugmaster
2016-09-23 14:10kgvStatusassigned => resolved
2016-09-23 14:11kgvStatusresolved => reviewed
2016-09-23 14:11kgvNote Edited: 0058070bug_revision_view_page.php?bugnote_id=58070#r14768
2016-09-23 14:54apvAssigned Tobugmaster => apv
2016-09-25 14:29kgvNote Added: 0058122
2016-09-26 12:28apvNote Added: 0058153
2016-09-27 12:24apvNote Added: 0058194
2016-09-27 12:24apvAssigned Toapv => kgv
2016-09-27 12:24apvStatusreviewed => assigned
2016-09-27 12:26apvNote Added: 0058195
2016-09-27 13:07gitNote Added: 0058198
2016-09-27 13:08kgvNote Added: 0058200
2016-09-27 13:08kgvAssigned Tokgv => bugmaster
2016-09-27 13:08kgvStatusassigned => resolved
2016-09-27 13:08kgvStatusresolved => reviewed
2016-09-27 14:24apvAssigned Tobugmaster => apv
2016-09-28 10:27apvTest case number => Not needed
2016-09-28 10:30apvNote Added: 0058236
2016-09-28 10:30apvAssigned Toapv => bugmaster
2016-09-28 10:30apvStatusreviewed => tested
2016-10-03 13:47kgvChangeset attached => occt master 1f7f5a90
2016-10-03 13:47kgvAssigned Tobugmaster => kgv
2016-10-03 13:47kgvStatustested => verified
2016-10-03 13:47kgvResolutionopen => fixed
2016-10-21 12:05kgvSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=15033#r15033
2016-10-28 21:41gitNote Added: 0059434
2016-10-28 21:44gitNote Added: 0059489
2016-10-28 21:51gitNote Added: 0059597
2016-12-09 16:29aivStatusverified => closed
2016-12-09 16:40aivFixed in Version => 7.1.0

Notes
(0031742)
git   
2014-09-16 12:06   
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.
(0031776)
duv   
2014-09-16 17:01   
Dear abv,

Please review the patch.
(0031801)
abv   
2014-09-17 14:09   
Please document the changes made (either in commit message, or in bug note)
(0031805)
duv   
2014-09-17 14:25   
Dear abv,

The changes have been documented in bug note.
(0031809)
abv   
2014-09-17 15:17   
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)
(0033297)
san   
2014-10-17 20:19   
To be considered more carefully after 6.8.0 release.
Transformations API to be agreed by all concerned persons.
(0057894)
git   
2016-09-18 15:15   
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.
(0057895)
kgv   
2016-09-18 15:16   
Updated patch is ready for review.
(0057942)
san   
2016-09-20 12:22   
Branch CR25180_1 reviewed without remarks, ready for testing.

Note that the patch is based on a patch for 0027860.
(0057968)
apv   
2016-09-21 10:27   
Fix for issue 0027860 has been rejected. Issue 0025180 is waiting updated version of fix.
(0057984)
git   
2016-09-21 12:57   
Branch CR25180_1 has been updated forcibly by kgv.

SHA-1: 2f1ad16351c7bf22b875627262fa2fab9f0e0ba0
(0057985)
kgv   
2016-09-21 12:58   
Branch has been rebased onto updated patch for 0027860 (beware that 0027860 has also branch for Products).
(0058016)
apv   
2016-09-22 11:45   
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
(0058017)
apv   
2016-09-22 11:48   
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
(0058068)
git   
2016-09-23 14:07   
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()

(0058069)
git   
2016-09-23 14:10   
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.
(0058070)
kgv   
2016-09-23 14:10   
(edited on: 2016-09-23 14:11)
Regression with manipulator should be fixed now.
Please check updated patch in branch CR25180_2 (based on 0027860).

(0058122)
kgv   
2016-09-25 14:29   
CR25180_2 for Products has been pushed to fix building C#/Java samples (only samples have been changed).
(0058153)
apv   
2016-09-26 12:28   
Branch CR25180_2 from products git-repository has been rebased on the current master.
(0058194)
apv   
2016-09-27 12:24   
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%]
(0058195)
apv   
2016-09-27 12:26   
Dear Kirill,

Branches CR25180_2 from occt and products git-repositories have been rejected due to:
- regressions/differences/improvements
(0058198)
git   
2016-09-27 13:07   
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

(0058200)
kgv   
2016-09-27 13:08   
Please check updated patch.
(0058236)
apv   
2016-09-28 10:30   
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%]
(0059434)
git   
2016-10-28 21:41   
Branch CR25180_2 has been deleted by kgv.

SHA-1: 4683a81eec3adddbdd045c3b838b524377c9c031
(0059489)
git   
2016-10-28 21:44   
Branch CR25180_1 has been deleted by kgv.

SHA-1: 791321f7402ce164fe56bc63127d9b821fdd361b
(0059597)
git   
2016-10-28 21:51   
Branch CR25180 has been deleted by kgv.

SHA-1: 5a78e5f6ed95d4efeefdaec700316cf0aea35ae2