Hello,
I want to develop a Web-based application which performs interactive/real-time volume rendering on a remote server and displays the result on a Web browser. After some reading it appears that VTK, Paraview, and related technologies are the way to go. However I am really overwhelmed with all the information and the reading I need to do in order to even begin to understand how all these technologies work. Furthermore, I am having a hard time finding documentation for the components my application needs. I have already started creating some prototypes using different technologies, but I have problems with all of them. So, I was wondering if someone can provide advice as to which are the most appropriate technologies for my use-case. After knowing which are the right tools to use, then I will only focus on them for the implementation.
Here is a description of what I need to do: I want to perform interactive volume rendering of a series of 3D data sets (data cubes). The size of these data cubes is between 5MB and 4GB, with the majority of them being around 100MB. The number of the data cubes is about 10,000. The data cubes are already located on the server. I want the user to be able to select the name of a data cube and almost immediately see a volumetric visualisation which can move around, manipulate, and even change transfer functions etc. Furthermore, I want multiple users to be able to render a different cube at the same time. In other words, this is a multi-user application.
Given the size and number of data cubes, I can’t just fetch the cubes on the client and render them using vtk.js. I guess for the small cubes I could use some kind of LOD scheme, but for the big ones, a LOD approach won’t be good enough (especially for slow connections). Because of this, I think that server-side rendering is the way to go, and maybe in the future, for the small cubes, also implement client-side rendering using some kind of LOD scheme.
The problem now is that I do not know which technology I should use to do this. I guess the two options are the ParaView and VTK clients/servers. I have found some examples on the internet demonstrating remote rendering, but the more I explore them, the more questions they raise. For example this: https://kitware.github.io/paraviewweb/examples/RemoteRenderer.html. This example provides two different servers, a ParaView-based and a VTKWeb-based. This example also uses the ParaViewWeb JavaScript client.
Question 1: What is the advantage of using the ParaView instead of VTK as a server?
Question 2: My first thought was to use VTK as a server because I am more familiar with it. Given the requirements of my application, which is the best technology and why?
Question 3: Are there any implications when using ParaViewWeb as a client and VTK as a server?
There are also other examples of remote rendering which use VTK.js on the client side:
Question 4: What is the advantage of using the ParaViewWeb instead of vtk.js as a client?
Question 5: Can a vtk.js client work with a ParaView server? If yes, are there some implications for not using the ParaViewWeb client?
There is also a multi-user setup I will need to do in order to have multiple users running visualisations of different data cubes. Fortunately, there is a guide for this here: https://kitware.github.io/paraviewweb/docs/multi_user_setup.html
Question 6: Will the above setup work for VTK.js + VTKWeb server as well?
Just to summarise, here are the requirements of the application I want to build:
- Perform “real-time” interactive volume rendering of three-dimensional images (cubes) on the Web browser.
- The data set size can be between 5MB to 4GB, with median being 100MB. The number of data sets will be around 10,000.
- Multiple users (i.e., clients (i.e., web browsers)) should be able to use this application at the same time to visualise different data sets.
- Usually, each user will want to visualise one cube at a time, but the visualisation of multiple cubes-per-user is also welcome.
- After the user selects a data set, the visualisation should appear as soon as possible.
- The application will have a series of widgets to control the rendering.
Any suggestions on the right choice of technologies (ParaView(Web) vs VTK(Web)), given the above requirements, is more than welcome. In case you are curious, I am planning to use this tool to visualise astronomical observations of large-scale galaxy surveys.
Thank you very much for your time.
PS: For the admins: Unfortunately the VTK and ParaView forums are separate. Do you think I should post a copy of this post on the ParaView forum as well?