The current 3DSlicer only supports Qt5.15 version, which is embarrassing.

Hello, every ascetic who passes by, please give me some help :smiling_face:

  1. Some time ago, when I was testing openGL rendering, I felt that the interaction was not smooth. How should I improve this?
  2. 3DSlicer seems to only support Qt5.15 so far, and has not yet reached the 6.x version released by the current QT official website. If I want to compile 3Dslicer on Windows, what should I do?
  3. I have some questions about VTK and would like to ask :innocent:

Background

  1. A few days ago, I was rendering Dicom’s cross-section, sagittal, coronal and 3D reconstructions named MPR , and using vtkCommand for interaction. Initially, I used vtkRenderer, vtkRenderWindow, vtkImagePlaneWidget, etc., and found that the interaction was a bit slow; when all were replaced with OpenGL-based (vtkOpenGLRenderer, vtkOpenGLRenderWindow and so on), vtkImagePlaneWidget… balabala, I found that the interaction speed was improved. Now, what I would like to ask my colleagues is: Based on the current basis or overturning the previous ones, what should I do to make the user interact smoothly with VTK? Whether it is Qt/Winform/Slicer, I would like to learn how everyone handles this problem. I will learn now !
  2. Over the weekend, I found out from the 3DSlicer repository that the only supported QT is 5.15. When I use 6 or 5.12, I get an error. I would like to know if anyone has the 5.15 version of Qt. If so, please send it to my email. Thank you very much. Compiling QT5.15.x on Windows is a “nightmare” for me, no less than compiling ffmpeg.
  3. This morning, I seem to have solved the problem with Qt5.15, but the question about VTK has not been solved yet. The morning brings the sun and also brings me wisdom.

Quesion

  1. vtkRenderWindow->GetNumberOfDevices()
    The user has multiple NVIDIA graphics cards (or multiple types of devices that can support rendering) on ​​the machine. Before using VTK rendering, I need to obtain the available rendering devices on the current machine. I use the GetNumberOfDevices() method of the vrkRenderWindow object (because its function isReturns the number of devices (graphics cards) on a system.); when I look at its return value, it isreturn 0 :sob: Now, the solution I take is to use cuda_runtime.h to get the current number of cuda devices, and then use the SetDeviceIndex(ine selectedDeviceIndex) process for rendering.If VTK can obtain in advance the device type or number of OpenGL devices supported by the machine (directly or indirectly), it will be a convenience for developers, at least for this scenario.
  2. Dealing with the problem of rendering multiple image sequences stored in a DICOM folder
    When multiple image sequences are stored in a DICOM folder, vtkDICOMImageReader cannot be used to directly obtain the DICOM sequence and render it. At the same time, vtkDICOMImageReader cannot directly obtain the sequence identifier of the image, causing the rendering to be unsuccessful.When I write this question, I can also understand the current processing logic of the entire VTK O(∩_∩)O. I can get the sequence identifiers in the folder before and after rendering on the client or web page, and then perform VTK rendering.

Friendly & Peaceful

:innocent: :grinning:If you see my question in a moment, please answer my question. Thank you all, and I wish you all the best. :innocent: :grinning:

The current 3DSlicer only supports Qt5.15 version, which is embarrassing.

There is not a lot of incentives for switching to Qt6. Stable (LTS) versions are no longer free for Qt6 and there are no significant developments for classic Qt widgets. Eventually, Qt in 3D Slicer will be updated to get latest fixes but so far there are very few issues that a Qt6 upgrade might fix.

OpenGL is not the issue but how you use it.

You can simply use the latest Qt5 version that you download using Qt online installer.

Since the Qt Company cannot make the paid Qt that much better that would justify their exorbitant subscription fees, they try to make it harder to use free, open-source version. This spreading fear, uncertainty, and doubt around legal use of the free version, harrassing developers, and using tricks, such as making the relevant binaries harder to find.

You can still get Qt5 binaries for free with the current Qt online installer, but you have to check the Archive option and then click Filter:

VTK developers are working on switching to WebGPU API to allow using Vulkan, DirectX, Metal instead of OpenGL. I don’t expect that they will add any OpenGL-related features, but if you implement a fix or enhancement (such as getting more detailed hardware information) then probably they would still accept it.

vtkDICOMImageReader is very limited, its development stopped many years ago, and it should not be used for dealing with DICOM images. It should be removed from VTK to avoid misleading newcomers, but I guess it is kept there for backward compatibility. You can use the vtkDICOM remote module instead.

2 Likes

Thank you very much for your point-to-point reply. :smiling_face:


I would like to ask some more questions:

  • Part 1

I guess I can just compile vtk-dicom on top of the current VTK and use it, right? :grinning:

  • Part 2

How should I use VTK, and at the same time I want to develop the rendering potential of OpenGL as much as possible. :fist:

  • Part 3

Why do most developers use 3dslicer or Qt to develop medical imaging software with VTK? I am a little confused now and don’t know what to do next? :love_hotel:


Thanks for your help