Scenegraph object visibility issues

In my investigations of PV 5.11 I stumbled upon an issue that has been there before, but seems to be getting worse. The shortest description that I can give is that vtkViewNode objects (typically generated by a vtkViewNodeFactory, such as within the raytracing backend) don’t seem to have their visibility/lifetime maintained in a way that corresponds to the visibility of their renderables in a typical render view, especially right at the start of creating a new renderview. This results in for example the 3D widgets of a slice plane not being hidden when I open a new view and enable the ray tracing backend:

  1. Open any example dataset in a standard renderview
  2. Attach a slice filter with ‘Show plane’ disabled (click apply)
  3. Enable raytracing
  4. Open a new standard renderview (Making the pipeline visible is optional)
  5. Switch back to the old renderview

Now you can see that a lot of elements of the slice widget are visible again, plus there now appears to be a second set of slice widget elements of a slightly different scale. Turning off ray tracing still shows no widget elements rendered, so in the regular representation everything is still fine.

It seems like this particular issue is related to the vtkPVMetaSliceDataSet, which populates two different vtkPVDisplaySizedImplicitPlaneRepresentation instances, one for the standard cut plane widget, and another for a Hyper Tree Grid Slicer widget. Visibility of the first one seems to be initialized badly on creation of a new view, whereas visibility of the hyper tree cutter seems to never be modified (I guess the controls are hidden?), so the viewnodes remain in memory all the time. Somehow when creating a new render view, they then pop back up in the old one along with the regular 3D cutter widget, but I haven’t been able to pinpoint the exact location of that issue in the PV source.

I’m not using the raytracing backend myself, but the plugin I work on is similarly relying on the scenegraph nodes to correspond with what’s visible in the view (for widgets) / added to the pipeline (for actors). Hopefully this can be investigated further based on the leads above.

hi Kees,
I tried replicating this with OSX, 5.11.0, and failed. Could you give us brain dead detailed instructions to replicate? For instance, OSX, 5.11.0, builtin server. File/ Open/ Examples/ can.exo. Apply. Slice. Uncheck Show Plane. Apply. Enable Raytracing. Split screen horizontal. Turn eyeball on for slice. Select left view. You see the following image (attach image).

1 Like

Sure, I’ve been able to replicate this both on Windows 10 and Ubuntu 22.04.1. The steps are as follows:

1: Open(disk_out_ref.ex2), Apply
2. Click Slice filter button, disable ‘Show Plane’, Apply
3. Bit of camera rotation to view slice
4. Enable raytracing:

5. (+)->Create View → Render View
6. Enable raytracing:

7. Click on view ‘Layout #1’:

The second view (Step 6) will show the duplicated widget geometry (until you move the camera), whereas the first view will just show the standard plane cutting widget, which is still wrong since ‘Show Plane’ has been disabled.

This issue is being tracked here I think

FYI @timothee.chabat @Dave_DeMarle

@Sankhesh_Jhaveri - Intel contracted Kitware to fix this last year. It was fixed to the best of my knowledge, and has since regressed.

I can confirm that 5.10 doesn’t have this problem, whereas I believe longer ago (with 5.9.0?) it used to show up as well.

I have a fix for it in a branch. I’ll clean it up later today and create a merge request.

1 Like