View Issue Details

IDProjectCategoryView StatusLast Update
0003073Slicer4Core: Performancepublic2017-07-25 22:38
Reporterlassoan Assigned Tojcfr  
Status acknowledgedResolutionopen 
Product Version 
Target VersionbacklogFixed in Version 
Summary0003073: Slow model slice intersection rendering

In vtkMRMLModelSliceDisplayableManager::vtkInternal::UpdateDisplayNodePipeline() the polydata gets invalidated without any condition (by calling polyData->Modified()). This causes about 2x slowdown in the slice intersection rendering.

Currently the locator in the cutter is rebuilt every single time a slice intersection is redrawn, while it should be rebuilt only when the polydata actually changes.

There is a comment before the polyData->Modified() call: "need this to update bounds of the locator, to avoid crash in the cutter". If the locator really cannot detect the polydata bound modification properly then we should check the bound and if (and only if) the bound has changed then call polyData->Modified().

How to reproduce:

  • Load MRHead example
  • Go to editor module, threshold with the default value, create a model
  • Enable "Slice intersections visible" for the generated model
  • Open the Performance test module and run the Reslicing test
    Rendering time:
    Current version: 1131ms per frame
    After removing polyData->Modified(): 670ms per frame

Tested latest trunk version, on Win7 64-bit.

TagsNo tags attached.


parent of 0003514 closedyuzheng VTK6 Integration - Slicer code refactoring to not use vktDataObject type argument in pipelines 


There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2013-04-16 19:30 lassoan New Issue
2013-04-16 19:30 lassoan Status new => assigned
2013-04-16 19:30 lassoan Assigned To => jcfr
2014-03-07 09:51 jcfr Status assigned => acknowledged
2014-03-07 09:52 jcfr Relationship added parent of 0003514
2017-07-25 22:38 lassoan Severity major => minor
2017-07-25 22:38 lassoan Target Version => backlog