Would it be possible to create a VTK visualization extension?
Visualization ToolKit (VTK) is a data standard, and open-source software that is especially useful for visualizing 3D data volumes, such as for example Computational Fluid Dynamics results (see Visualize simulation results in Speckle), or (uncertainty in) ground models (see VTK integration).
A 3D data volume is different from a 3D object in that for most 3D objects you only care about visualizing the outside of the object. Whereas, in the case of 3D data volumes, you want to be able to show scalar and vector fields for all points within the data volume, which means that you need to be able to cut sections, change opacity based on the values in a scalar field, draw flow lines based on a vector field, etc. VTK is an amazing data stabdard, and low-level open-source software for visualizing 3D data volumes.
ParaView is a desktop app that provides a GUI to explore VTK results. The issue with ParaView is that you can’t easily put the VTK results in context with the proposed and existing structures. Moreover, it’s of course not feasible to ask a project manager, or client to install ParaView such that they can explore the VTK results.
Considering all the above, I think it would be incredibly valuable to build a VTK extension for the Speckle viewer. There are several open-source frameworks and apps that use VTK, and that we could possibly use as a starting point or inspiration:
- Desktop: ParaView, 3D Slicer
- Python: PyVista, trame, Dash VTK (think plotly, Dash VTK uses react-vtk-js)
- Javascript: vtk.js, react-vtk-js