SlicerQR Development

@jcfr @lassoan,

Hello, have you tried running Slicer on a VDI? Does it work?.

We have successfully used Slicer in several virtual environments (VirtualBox, VMWare, Hyper-V) and it works well in docker containers, Windows subsystem for Linux, etc. There was only one exception, Parallels on macOS, which only supported an embarrassingly old OpenGL version (this was about 1-2 years ago, the situation may have improved since then).

There might also be some issues with versions of microsoft’s remote desktop protocol and the version of opengl they support. But other remote desktop solutions like VNC, nomachine, google remote desktop, teamviewer, etc all work well.

Hello @lassoan @pieper @jcfr,

I was asked by a radiologist if there’s a way to present other types of 3D renderings in the 3D view of SlicerQREADS. I’m thinking this would be fairly easy with this amazing development environment. How could I implement some kind of toggle that would show a MIP and other 3D rendering in that 3d view in addition to the current intersecting planes?

Thanks!

Yes, that would be very straightforward. The full volume rendering API is scriptable and can be triggered of events or UI actions. See:

https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#show-volume-rendering-automatically-when-a-volume-is-loaded

@spycolyf We can give more specific advice if you attach a few screenshots of the kind of renderings that you would like to see.

Wow! Thanks! :slight_smile:

OK now that I’m in the beta testing phase of the app, I’m starting to get feedback from physicians about certain features of SlicerQREADS (SQR) they need changed. We are currently making matrices for prioritizing the issues. Therefore, I want to warn you that I will be asking many questions on how to implement certain changes. I think it will be very impressive to the physicians when they see how quickly the changes can be made and my team will be impressing when they se how easily they can be made. So, thank you ahead of time, and forgive me in advanced for many future questions.

Thanks

1 Like

Thanks @lassoan. I will :slight_smile:

@lasson, @pieper

  • A Maximum intensity projection would be most useful.
  • And one more type of rendering with opacities would be great. Got any impressive suggestions?

I’ll look and get more specific, and a link to observe different rendering would save time if you have any. Thanks.

:slight_smile:

Great! I’ll look into those in a little while, but just to be more specific, I need…

  • a MIP
  • at least CT 3D surface renderings skin, bone, lung and brain.

I think other more sophisticated renderings will involve segmentation like with the picture below. Correct? Or could this be done automatically?

I’ve added two code snippets that you can use to set up these renderings.

See this script.

See this script.

Thanks @lassoan, @pieper

I’ve gotten things to work somewhat. I’m trying to implement it in such a way that the user has a choice between MIP, Surface Rendering and Intersecting planes. How can I get back to the Intersecting Planes view after having switched the other views? Also how do I programmatically toggle slice visibility in 3D view (as can be done with the “v” key). Thanks.

I’m not sure what you mean by “intersection planes view”. You can show/hide slice planes and change volume rendering settings.

You can add keyboard shortcut at Qt level or add an observer to the keypress event to each 3D viewer’s interactor (you can search for vtk.vtkCommand.KeyPressEvent for examples; or use a scripted displayable manager to capture keyboard events).

@lassoan Oh, ok. Then I should ask, how do I show/hide the slice planes with Python commands.

Then how do I set the renderings to nothing.

Thanks

I think you are looking for the following: Show slice views in 3D window

@jamesobutler, @lassoan, @pieper

Thanks @jamesobutler,

That works. I appreciate that. Now I can display the renderings without the slice planes. Great!

How do I clear out the renderings to switch to another rendering? I can switch from the opacity rendering to the MIP, but not from the MIP to any other rendering. I think if I can reset or clear the MIP first, it might work. How do I clear out the rendering?

Thanks

You can choose a different rendering preset and set rendering technique to slicer.vtkMRMLViewNode.Composite.

@jcfr

Hello JC, I’m seeing that I can’t set the 3D view to display MIPS or 3D rendering with the SlicerQREADS build. But when I run the SlicerQREADS module inside of the Slicer app, I can perform the 3D render with my Python changes. Did you remove this capability from SlicerQREADS?

Thanks

Did you remove this capability from SlicerQREADS?

Since MIP was not part of the requirements, the VolumeRendering module providing the functionality has been disabled: