Page MenuHomePhabricator

Check ODF rendering after VTK 2D rendering is active
Closed, ResolvedPublic

Description

This bug was undiscovered due to our iil rendering.

VTK internally uses a method called HasTranslucentPolygonalGeometry() inside the vtkActor classes to check whether an image/actor is transparent or not. This method uses the texture (the dti image slice) to figure out if the object is transparent. The texture is passed to the vtkActor via SetTexture().

If a dti image is passed this way to the actor, the HasTranslucentPolygonalGeometry() method will always return 0 (which triggers opaque rendering), no matter if an opacity was set for the actor or not. However, dti images are only rendered in transparent rendering mode. That means if you set the opacity of an other image (not the dti image) the dti image will be rendered. In the 3D case is always a transparent object involved and thus they are rendered.

I assume that VTK can't handle the special data format:

TensorImage (0x2f80930)
   PixelType: f
   BitsPerElement: 192
   NumberOfComponents: 6
   BitsPerComponent: 32

and is not able to interprete the 6 components of the image correctly. One way to start would be to check what the output format of the vtkImageReslice is.

@Marco: can we make this a party bug?

Related Objects

Event Timeline

Klaus and I fixed this issue:
the composite mapper (generating the dti images) did not return the dti image prop, but the odf image prop. That is why the HasTranslucentPolynomialGeometry() method returned a wrong result.

However, we encountered a new problem: Q-Balls are rendered, but not on top of the images. The images disappear when enabling the Q-Balls.

Before this bug is closed, the ODF-rendering must be checked once the VTK 2D image rendering is merged to the master by Thomas.

Resetting all bugs without active assignee flag to "CONFIRMED". Change status to IN_PROGRESS if you are working on it.

Just tested the new rendering on a test branch and everything seems to work properly. Will be tested again after final integration of the new rendering.