We are pleased to announce the release of iMSTK version 3.0. The Interactive Medical Simulation Toolkit (iMSTK) is a free, open-source toolkit that allows faster prototyping of medical trainers and planners. iMSTK features libraries for comprehensive physics simulation, haptics, advanced rendering, and visualization, hardware interfacing, geometric processing, collision detection, contact modeling, and numerical solvers.
In this 3.0 release, major improvements were made to the computational workflow, physics, and graphical rendering capabilities of iMSTK. Extensive refactoring and numerous bug fixes were also made across the code base to allow extensibility of classes, improve clarity, separate roles for different iMSTK libraries, and enforce consistent design and conventions across the toolkit.
iMSTK Release Highlights
iMSTK version 3.0 includes the following updates:
- Introduction of a Task-graph: An introduction of a task-graph allows for a configurable physics pipeline and task-based parallelism. This configuration allows for fast prototyping and great flexibility. Scene-level parallelism is achieved through automatic construction and execution of task graphs for the entire scene. Performance improvements were observed across the board.
- Major Rendering Module Upgrade: The VTK rendering backend was upgraded to VTK 9.0 and therefore physically-based rendering is now supported (see Image 2). This also allows for real-time fluid rendering using screen space fluids (Image 3) and faster particulate rendering of fluids. Additionally, The upgraded rendering module also supports 3D image and volume rendering.
- Improved Models for Particle-based Dynamics: Extended position-based dynamics (xPBD) capabilities have been added (Image 5).
- Support for Modeling 1D Elastic Structures with Bending Stiffness
- Finite element backend library Vega up upgraded from 2.0 to 4.0
- Addition of faster-reduced order deformation models (Linux only). Reduced-order models ran 15-20x speed-ups.
- Addition of Reverse Cuthill–McKee algorithm (RCM) for mesh renumbering (often required for cache efficiency)
- Improvements to simulation manager: improved time-stepping policy, improved multiple scene management and scene controls, the addition of async simulation mode.
- Improvements to geometric utility module: addition of geometric filters, new tetrahedral mesh cover generation based on ray-casting (Image 6)
- Faster TetraToTriangle geometry mapping
- Considerable refactoring of iMSTK Modules
- Geometry mappers, Mesh I/O are now a separate iMSTK libraries
- Collision module is split into CollisionDetection and CollisionHandling
- Removed dependency of Geometry and data structures modules on RenderMaterials
- Moved imstkColor to Common library
- Refactored and improved debug rendering and geometry
- Moved makeCollisionDetectionObject static factory method out of the CollisionDetection class into the Scene library
- Removed imstkVolumetricMesh dependency on vega volumetric mesh
- Simplified configuring finite element deformable object, viewer, renderer, and simulation manager
- Introduced an abstract dynamicalModel
- imstkLogger is now a singleton
- De-templatized the dynamicalObject class
- Allow exclusion of files while building library targets
- API Changes
CollisionGraph::addInteraction(std::shared_ptr<CollidingObject>, std::shared_ptr<CollidingObject>, CollisionDetection::Type, CollisionHandling::Type, CollisionHandling::Type)to
- DynamicalModels now have default solvers and therefore explicit solver specification is not necessary
Please refer to the release notes for a full list of changes and contributors. For additional information about iMSTK, please follow the links below.
- Website: imstk.org
- Repository: gitlab.kitware.com/iMSTK/iMSTK
- Discourse: discourse.kitware.com/c/imstk
- Documentation: imstk.readthedocs.io/en/latest
- Source documentation: imstk.gitlab.io
iMSTK brings together a wide variety of algorithms from multiple disciplines (required for a typical surgical simulation application), in an easy-to-use and scalable way. This release is particularly a huge step in that direction. We intend to continue to move towards faster algorithms, especially with GPU parallelization. The task graph will be extended to support heterogeneous computing (i.e. allow certain task sub-graphs to run on the GPU).
iMSTK as Unity Backend: We have exposed iMSTK inside the Unity game engine, for which we have a working prototype. The goal is to reach wider audiences and allow for much faster prototyping of the applications. Initial testing revealed vast improvements to the time-to-prototype as well as improved end-user experience. A release for this on the Unity asset store is planned for fall 2020.
The next release for iMSTK is scheduled for January 2021. Some of the features for the upcoming release include an advanced network module for multi-user telesurgery applications, signed distance field-based collision detection, extended and comprehensive device module to support a wide range of sensors and actuators, level-set methodology to drive topological changes, advanced rendering features such as ambient occlusion, and subsurface scattering.
Note: The content is solely the responsibility of the authors and does not necessarily represent the official views of the NIH and its institutes.