View Issue Details

IDProjectCategoryView StatusLast Update
0027596Open CASCADEOCCT:Visualizationpublic2016-12-09 16:39
Reporterkgv Assigned Tobugmaster  
PrioritynormalSeverityminor 
Status closedResolutionfixed 
Product Version7.0.0 
Target Version7.1.0Fixed in Version7.1.0 
Summary0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
DescriptionCurrent implementation of StdPrs_WFShape::Add() adds isolines into dedicated group of primitives for each face. This significantly limits FPS by CPU due to large number of groups for big models.
Steps To ReproduceN/A
TagsNo tags attached.
Test case numberNot needed

Attached Files

  • bleriot_iso_surf_new.png (181,781 bytes)
  • bleriot_iso_surf_old.png (199,716 bytes)

Relationships

related to 0023519 closedbugmaster Community Mixing wireframe and shaded visualization impacts performance 
related to 0025300 closedski Open CASCADE Visualization - Build wireframe representation consistent with the shape's triangulation 
related to 0026612 closedbugmaster Community High memory footprint displaying model with big amount of solids 
related to 0022618 assignedsan Open CASCADE Visualization - Tool for building generic wireframe representation of a face 

Activities

git

2016-06-13 02:32

administrator   ~0054930

Branch CR27596 has been created by kgv.

SHA-1: 917abf941b76bd60c390ae9813be3774f502e848


Detailed log of new commits:

Author: kgv
Date: Mon Jun 13 02:28:27 2016 +0300

    0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
    
    StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
    StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.
    
    StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
    Even more - StdPrs_WFShape now groups lines with the same aspects.
    
    Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
    has been changed from 0.5 to 1.0.

kgv

2016-06-13 02:42

developer   ~0054931

Last edited: 2016-06-13 02:42

Patch is ready for review.

It improves FPS for wireframe presentation of bleriot model
(114912 faces in 4415 parts - thus it is quite heavy for CPU) on my PC from 1 FPS to 18.

A couple of public methods has been kept for API compatibility.
However it is unlikely that them have been used outside - probably better dropping them.

Prs3d_Drawer::LineArrowDraw() is now ignored by StdPrs_WFShape (before the patch it was semi-broken). I'm not sure if it is useful supporting it here.

san

2016-06-14 00:14

developer   ~0054933

Branch CR27596 reviewed without remarks, ready for testing.

git

2016-06-14 14:01

administrator   ~0054952

Branch CR27596 has been updated by kgv.

SHA-1: a690127e8573575ef4c6ef602d1e07188fac81c5


Detailed log of new commits:

Author: kgv
Date: Tue Jun 14 14:01:37 2016 +0300

    fix compilation error on Android

git

2016-06-14 14:02

administrator   ~0054953

Branch CR27596_1 has been created by kgv.

SHA-1: 011a78c3e2f79f6a12b0b5ddba64d3aea209bd15


Detailed log of new commits:

Author: kgv
Date: Tue Jun 14 14:02:27 2016 +0300

    0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives
    
    StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
    StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.
    
    StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
    Even more - StdPrs_WFShape now groups lines with the same aspects.
    
    Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
    has been changed from 0.5 to 1.0.

kgv

2016-06-14 14:03

developer   ~0054954

Patch has been updated to fix compilation error on Android - please use branch CR27596_1 for testing.

kgv

2016-06-14 14:37

developer  

bleriot_iso_surf_new.png (181,781 bytes)

kgv

2016-06-14 14:38

developer  

bleriot_iso_surf_old.png (199,716 bytes)

mkv

2016-06-15 14:36

tester   ~0055023

Dear BugMaster,
Branch CR27596_1 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
SHA-1: 011a78c3e2f79f6a12b0b5ddba64d3aea209bd15

Number of compiler warnings:

occt component :
Linux: 0 (0 on master)
Windows: 0 (0 on master)
MacOS : 0 (0 on master)

products component :
Linux: 72 (72 on master)
Windows: 0 (4 on master)
MacOS : 1171

Regressions/Differences/Improvements:
No regressions/differences

Testing cases:
Not needed

Testing on Linux:
occt component :
Total MEMORY difference: 88334499 / 88280555 [+0.06%]
Total CPU difference: 19466.180000000008 / 19437.609999999968 [+0.15%]
products component :
Total MEMORY difference: 27438026 / 27641722 [-0.74%]
Total CPU difference: 5184.729999999985 / 5152.139999999989 [+0.63%]

Testing on Windows:
occt component :
Total MEMORY difference: 55761302 / 55981508 [-0.39%]
Total CPU difference: 18254.59741589893 / 19056.083753598912 [-4.21%]
products component :
Total MEMORY difference: 18637762 / 18707971 [-0.38%]
Total CPU difference: 4994.372014999952 / 5089.283023399957 [-1.86%]

There are following differences in images found by testdiff.
http://occt-tests/CR27596-1-master-Products/Debian70-64/diff-Debian70-64.html
http://occt-tests/CR27596-1-master-Products/Windows-64-VC10/diff-Windows-64-VC10.html
IMAGE sat read C4: C4.png differs
IMAGE sat read_parallel_1 E6: E6.png differs

mkv

2016-06-15 14:37

tester   ~0055024

Dear kgv,
Branch CR27596_1 has been rejected due to:
- differences in images

kgv

2016-06-15 14:58

developer   ~0055025

Changes in images are OK, please switch to tested.

mkv

2016-06-15 15:26

tester   ~0055030

Dear BugMaster,
Branch CR27596_1 is TESTED.

git

2016-06-17 12:13

administrator   ~0055138

Branch CR27596_1 has been deleted by inv.

SHA-1: 011a78c3e2f79f6a12b0b5ddba64d3aea209bd15

git

2016-06-17 12:13

administrator   ~0055139

Branch CR27596 has been deleted by inv.

SHA-1: a690127e8573575ef4c6ef602d1e07188fac81c5

Related Changesets

occt: master 1b9f5d95

2016-06-14 11:02:27

kgv


Committer: bugmaster Details Diff
0027596: Visualization, StdPrs_WFShape - pack isolines into single group of primitives

StdPrs_ShadedShape, computeFaceBoundaries() now does not create additional temporary buffer for edges.
StdPrs_Isolines::AddOnTriangulation() now reconstacts polylines from segments projected onto triangulation.

StdPrs_WFShape::Add() now packs isolines into single group in presentation (instead of per-face group).
Even more - StdPrs_WFShape now groups lines with the same aspects.

Prs3d_Drawer::UIsoAspect(), ::VIsoAspect(), ::VIsoAspect() - default width
has been changed from 0.5 to 1.0.
Affected Issues
0027596
mod - src/Aspect/Aspect_AspectLine.hxx Diff File
mod - src/Graphic3d/Graphic3d_AspectLine3d.hxx Diff File
mod - src/Prs3d/Prs3d.cxx Diff File
mod - src/Prs3d/Prs3d.hxx Diff File
mod - src/Prs3d/Prs3d_Drawer.cxx Diff File
mod - src/StdPrs/StdPrs_DeflectionCurve.cxx Diff File
mod - src/StdPrs/StdPrs_Isolines.cxx Diff File
mod - src/StdPrs/StdPrs_Isolines.hxx Diff File
mod - src/StdPrs/StdPrs_ShadedShape.cxx Diff File
mod - src/StdPrs/StdPrs_WFShape.cxx Diff File
mod - src/StdPrs/StdPrs_WFShape.hxx Diff File

Issue History

Date Modified Username Field Change
2016-06-13 01:07 kgv New Issue
2016-06-13 01:07 kgv Assigned To => kgv
2016-06-13 01:07 kgv Relationship added related to 0023519
2016-06-13 02:32 git Note Added: 0054930
2016-06-13 02:42 kgv Note Added: 0054931
2016-06-13 02:42 kgv Assigned To kgv => san
2016-06-13 02:42 kgv Status new => resolved
2016-06-13 02:42 kgv Steps to Reproduce Updated
2016-06-13 02:42 kgv Note Edited: 0054931
2016-06-14 00:14 san Note Added: 0054933
2016-06-14 00:14 san Assigned To san => bugmaster
2016-06-14 00:14 san Status resolved => reviewed
2016-06-14 14:01 git Note Added: 0054952
2016-06-14 14:02 git Note Added: 0054953
2016-06-14 14:03 kgv Note Added: 0054954
2016-06-14 14:37 kgv File Added: bleriot_iso_surf_old.png
2016-06-14 14:37 kgv File Added: bleriot_iso_surf_new.png
2016-06-14 14:38 kgv File Deleted: bleriot_iso_surf_old.png
2016-06-14 14:38 kgv File Added: bleriot_iso_surf_old.png
2016-06-14 14:47 mkv Assigned To bugmaster => mkv
2016-06-15 14:36 mkv Note Added: 0055023
2016-06-15 14:37 mkv Note Added: 0055024
2016-06-15 14:37 mkv Assigned To mkv => kgv
2016-06-15 14:37 mkv Status reviewed => feedback
2016-06-15 14:37 mkv Assigned To kgv => mkv
2016-06-15 14:37 mkv Test case number => Not needed
2016-06-15 14:38 mkv Assigned To mkv => kgv
2016-06-15 14:58 kgv Note Added: 0055025
2016-06-15 14:58 kgv Assigned To kgv => mkv
2016-06-15 15:26 mkv Note Added: 0055030
2016-06-15 15:26 mkv Assigned To mkv => bugmaster
2016-06-15 15:26 mkv Status feedback => tested
2016-06-16 20:47 kgv Relationship added related to 0022618
2016-06-16 20:49 kgv Relationship added related to 0025300
2016-06-17 12:04 bugmaster Changeset attached => occt master 1b9f5d95
2016-06-17 12:04 bugmaster Status tested => verified
2016-06-17 12:04 bugmaster Resolution open => fixed
2016-06-17 12:13 git Note Added: 0055138
2016-06-17 12:13 git Note Added: 0055139
2016-06-17 15:07 kgv Relationship added related to 0026612
2016-12-09 16:30 aiv Status verified => closed
2016-12-09 16:39 aiv Fixed in Version => 7.1.0