Improving Interaction and LOD Performance in vtkSmartVolumeMapper for Large Datasets

I’m experiencing performance issues with vtkSmartVolumeMapper when loading around 2000 slices, even on a high‑end GPU like the NVIDIA RTX 4000 Ada. During interaction, the mapper takes noticeable time to reduce the LOD (Level of Detail) when the mouse is pressed, and then again takes time to return to high quality when the mouse is released. Rotation, panning, and zooming work, but they don’t feel completely smooth.

Additionally, the application briefly hangs if the user releases the mouse and immediately starts interacting again.

I’ve been advised to try enabling or adjusting the following options to improve performance:

  • UseAdaptiveStepWidth

  • UseCaching

  • SetMaximumSampleDistanceFactor

  • UseIgnoreValue

How can I best optimize vtkSmartVolumeMapper to achieve maximum performance with large (2k‑slice) volume datasets? Are there additional techniques or recommended settings to improve interactivity and reduce LOD switching delays?

Hello,

What is the resolution of the slices? 1024x1024? 2k x 2k?

best,

PC

Thanks for the reply, and the details of the study
Image Resolution:
512 × 512 pixels per slice
Physical Spacing:
Pixel Spacing: 0.708 × 0.708 mm (in-plane resolution)
Slice Thickness: 0.5 mm (between slices)
Additional Information:
Total Number of Slices: 2,151 slices
Modality: CT (Computed Tomography)
Series Description: VASCULAIRE 0.5 CE (Vascular CT with contrast enhancement)

Hello,

Maybe you could experiment with the several vtkSmartVolumeMapper::SetRequestedRenderMode*() methods to find out which mapper best suits your need: VTK: vtkSmartVolumeMapper Class Reference

Alternativelly, you could try a simpler pipeline, whithout LOD. Of course, sending ~2GB to the graphics card would take some time, but it would be done once. That volume should fit comfortably in the card’s 20GB (supposing the volume has just a single 32-bit floating point scalar).

best,

PC

I’m using GPU volume rendering because I have an NVIDIA RTX 4000 Ada card. I’m working with vtkOpenGLGPUVolumeMapper, and the rendering itself works correctly. I’ve also enabled adaptive rendering similar to 3D Slicer:

gpuMapper->SetAutoAdjustSampleDistances(true);

gpuMapper->SetLockSampleDistanceToInputSpacing(false);

gpuMapper->SetUseJittering(true);

gpuMapper->SetSampleDistance(gpuDisplayNode->GetSampleDistance());

gpuMapper->SetMaxMemoryInBytes(this->GetMaxMemoryInBytes(gpuDisplayNode));

However, even with these settings, I still can’t achieve smooth rotation or a faster rendering rate.

Hi,

Have you experimented with the several vtkSmartVolumeMapper::SetRequestedRenderMode*() methods? Which where the results?

best,

PC