Multi volume rendering

Hello world,

I recently wrote an extension to import GE 3D/4D ultrasound (US) data into 3DSlicer. Right now, my colleagues and me want to visualise the 3D US volume along with (registered) preop. digital substraction angiography data. However, we found that there used to be a multi volume rendering feature which is not supported anymore. Can someone remember the reasons for this?

Are there any recent developments towards multi volume rendering? Actually, there even seems to be a pretty nice VTK extension enabling this functionality using raycasting [1]. Therefore, we were thinking about extending Slicer rendering engine by this approach. Would that make sense?

Best,
Nico

[1] (Bozorgi, 2015) / https://github.com/bozorgi/VTKMultiVolumeRayCaster

Multi-volume rendering is being added to VTK8, so in Slicer we won’t specifically work on developing this feature in Slicer. Once the feature is available in VTK, we’ll update Slicer GUI accordingly.

Till then, probably your best bet is to create 3D actors from your DSA volume using Segment editor (there are lots of semi-automatic tools that can provide nice visualization of bones and soft tissues with a couple of minutes of manual work). You can use VMTK to create nice vessel tree (vesselness filtering, level set filtering, centerline extraction).

If you want to try some experiments with the bozorgi multivolume code it would be interesting to know how they work out. Slicer’s VolumeRendering module should be fairly easy to extend, and the MRML level already supports associating independent rendering parameters per-volume.

Regarding your question about why the older multivolume renderer was removed, it was a support issue. GPU code can be somewhat fragile and hard to debug across devices, so it helps to have a actively maintained and widely used code base. Driver issues, memory limitations, device-specific rendering artifacts, etc can all eat up a lot of debugging time.