Announcement

Collapse
No announcement yet.

ObliqeSlice problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ObliqeSlice problem

    Hello,
    I use OIV write a medical application. I need rendering slice(oblique) with thickness(such as https://www.youtube.com/watch?v=GThB...qmz5l8&index=1, this soft is writen by OIV). The OIV medical module have some class such as SoOrthoSlice, SoObliqueSlice. But they don't support rendering a slice with a thickness.
    I read the SDK example, It seems MedicalMIP example can work well for this purpose.
    My question : Is there any proposal for rending oblique slice with thickness ?

  • #2
    Hi,
    You are correct. Thick slice rendering is supported, but currently there is no single class to provide this feature.
    Thick slice rendering is achieved using:
    • A volume rendering node (SoVolumeRender) to draw the slice,
      with 'renderMode' set to (typically) MAX_INTENSITY_PROJECTION
    • A node, or nodes to define the thickness of the slice (number of voxels that will be combined for each pixel on the screen).
      There are two cases:
      • Ortho (axis aligned) thick slice
        This case is easy. A region of interest node (SoROI) can be used to define the thickness. Put the center of the ROI box at the slice "position".
      • Oblique (arbitrary) thick slice
        This case is more complicated and requires multiple nodes. A rectangular box is used as a clipping region to define the thickness and a transform node is used to position and orient the clipping box. The MedicalMIP example ($OIVHOME/examples/source/Medical/Rendering/Visualization) shows how to do this. In fact this technique can also be used for axis aligned thick slices (but is not necessary if only axis aligned thick slices are needed).
    • A camera node (SoOrthographicCamera) that is rotated to be perpendicular to the slice and positioned to point toward the center of the slice.
      For an axis aligned slice, this is straightforward (same as viewing any SoOrthoSlice). For an oblique slice, it is more complicated but, as shown in the MedicalMIP example, the necessary rotation can be taken from the rotation node that orients the clipping box.
    Regards,
    Mike

    Comment


    • #3
      Originally posted by mikeheck View Post
      Hi,
      You are correct. Thick slice rendering is supported, but currently there is no single class to provide this feature.
      Thick slice rendering is achieved using:
      • A volume rendering node (SoVolumeRender) to draw the slice,
        with 'renderMode' set to (typically) MAX_INTENSITY_PROJECTION
      • A node, or nodes to define the thickness of the slice (number of voxels that will be combined for each pixel on the screen).
        There are two cases:
        • Ortho (axis aligned) thick slice
          This case is easy. A region of interest node (SoROI) can be used to define the thickness. Put the center of the ROI box at the slice "position".
        • Oblique (arbitrary) thick slice
          This case is more complicated and requires multiple nodes. A rectangular box is used as a clipping region to define the thickness and a transform node is used to position and orient the clipping box. The MedicalMIP example ($OIVHOME/examples/source/Medical/Rendering/Visualization) shows how to do this. In fact this technique can also be used for axis aligned thick slices (but is not necessary if only axis aligned thick slices are needed).
      • A camera node (SoOrthographicCamera) that is rotated to be perpendicular to the slice and positioned to point toward the center of the slice.
        For an axis aligned slice, this is straightforward (same as viewing any SoOrthoSlice). For an oblique slice, it is more complicated but, as shown in the MedicalMIP example, the necessary rotation can be taken from the rotation node that orients the clipping box.
      Regards,
      Mike
      Thanks , your answer is very clear.

      Comment

      Working...
      X