Viewing a volume with two different volume rendering properties at same time

i was wonderin if it is possible to view two volume properties at once .

in my workflow, i can greatly benefit from making a soft tissue outline rendering while i can view a hard tissue rendering at the same time .

i already did that with segmentation and altering opacity , but in many cases, the volume rendering can be superior way to visaulaization and a shorter way to do so , of course, that highly depends on the quality of the images

You can clone your volume and use the second volume property on that. You need to use gpu multi volume ray casting, which is experimental. For some cases regular gpu rendering may also work, but depending on angles you might have artifacts. This is a use case we are interested in seeing more support. Let us know how it goes.

1 Like

I’ll try that . Thank you for the suggestion

Just to mention that I’m used to this way of rendering in Planmeca cbct viewer .
It has a soft tissue and hard tissue rendering control . I doubt it uses two volume since it is fast and seamless .

Please attach a few screenshots and we can then tell what volume rendering settings to use to achieve a similar look.

this is done in planmeca viewer

this is done in slicer with multi volum

however the one with slicer is hard to get very well defined soft tissues outline which is the most important thing for the soft tissue rendering in this use

We had a prototype for a mode something like that. It worked with Slicer volume rendering but we never fully integrated it in the UI. The whole Slicer Volume Rendering module could use a rework when someone has the time.

that looks awesome , hopefully we see this in slicer soon

In the Planmeca screenshot the skin surface is displayed using transparent surface-like rendering. There are several options for achieving this in Slicer.

There are two interesting things to note on the Planmeca screenshot:

  1. The skin surface and bones come from two completely different images. You can see this very clearly at the tip of the chin. Do you intentionally visualize skin surface from one image and bones from another?
  2. Skin, soft-tissues, and low-density bone are all aggressively suppressed, so it seems that Planmeca uses the technique shown in @pieper’s demo above (have a 0-opacity gap in the scalar opacity mapping to suppress soft tissues, while showing skin surface and bone)

Just to clarify, this rendering is already available in Slicer (what the demo shows is just a different way of editing transfer functions, so that you can move selected control points together, independently from the others). For example, reproducing the same two-peak scalar opacity transfer function using the current volume rendering module:

You can increase ambient lighting to make the edges of the skin surface better visible:

In addition to suppressing soft tissues using scalar opacity mapping, you can also suppress soft tissues using gradient opacity mapping (since there are no sudden intensity changes in soft tissues):

So, it seems that you can achieve skin surface + bone rendering with a single volume renderer. However, Slicer also offers many other options for suppressing soft tissues and displaying skin surface differently from bone (mask out soft tissue and use single-volume rendering; separate skin surface and bone using volume masking and render the two volumes independently using multi-volume rendering; or segment skin surface using thresholding, fill holes using Wrap Solidify effect, and render as a transparent model).

1 Like

thank you for extensive replay , really appreciated .

the soft tissue in planmecca is just a chin rest making the soft tissue seeming funny . otherwise its the same patient .

i already tried the skin segmentation/bone render solution nicely in many cases ,

i wanted to experiment with rendering different component since it gives some sort off texture that i don’t know if possible with segmentation

two question comes to me now
1 is that a preset available in slicer the one you used here for the cbct rendering ?
2 what’s difference between gradient opacity and scalar map opacity ?


It is not a built-in preset, but you can choose a similar built-in preset, modify it by drag-and-dropping control points in the transfer functions, and then add it to the preset list. See:

Scalar opacity mapping allows you to assign opacity to a voxel based on its intensity value. It can be used to suppress visibility (set opacity to 0) of soft tissues, without impacting visibility of bone.

Gradient opacity mapping allows you to assign opacity to a voxel based on the rate of intensity change at that position. This can be used to enhance regions where there is a sudden intensity change, such as skin surface (air/soft tissue intensity are very different) and bone surface (bone/soft tissue intensity are very different).

Probably you can achieve the best results by tuning all transfer functions.

Once you figure out what general shape of transfer function works, you would usually create a simple module that allows the user to generate that transform function using 3-4 sliders:

  • size and position of gap between the two scalar opacity mapping function peaks
  • height of the “skin” peak
  • threshold in gradient opacity mapping function below that the opacity is set to 0