Release 3.0.0

Announcement: iMSTK 3.0.0

This release features major improvements to the computational workflow, physics, and rendering aspects of the toolkit. Major refactoring and bug fixes were made across the board to allow easy extension of classes, improve clarity and separation of roles of different imstk libraries and enforce consistency of design across the toolkit.

Here is a comprehensive list of changes made for this release.

New Features

  • Introduction of configurable task-graph and task-based parallelism.
  • Major upgrade to the rendering module (VTK backend)
    • Upgrade to VTK 9.0
    • Realistic fluid rendering using screen space fluids
    • Faster particular rendering of fluids
    • Addition of physically based rendering
  • Addition of 3D image support and volume rendering
  • Improved physics models for particle based dynamics: Addition of extended position based dynamics (xPBD)
  • Addition of support for modeling 1D elastic structures with bending stiffness
  • Addition of faster reduced order deformation models (Linux only)
  • Addition of Reverse Cuthill–McKee algorithm (RCM) for mesh renumbering
  • Major refactoring simulation manager: Improved time stepping policies, multiple scene management and scene controls, addition of async simulation mode
  • Improved capabilities of the geometric utility module: addition of geometric processing filters, New tetrahedral mesh cover generation (based on ray-casting)

Improvements or Refactoring

  • Upgrade external dependency from Vega 2.0 to 4.0 (finite element library backend)
  • Clear majority of the warnings in imstk libraries
  • Refactored examples: consistent naming, factoring out object addition into separate functions, use heart dataset, remove redundant mapping, Removed line mesh example
  • New examples for scene management, volume rendering, task graph
  • Renamed files to be consistent with class names
  • Vulkan shader project removed for VTK backend
  • Remove imstkVolumetricMesh dependency on vega volumetric mesh
  • Easy configuration of finite element deformable object, viewer, renderer and simulation manager
  • Concrete dynamcal models now derive from AbstractDynamicalModel
  • Solvers are moved to models from scene
  • Added default solvers for models
  • SPHSolver is removed
  • SceneObject class now has update calls
  • DynamicalObject de-templatized
  • Fix render window default title to imstk
  • Replace external project download links with .zip versions
  • Uses CHECK() instead of LOF(FATAL)/LOG_IF(FATAL) for simplicity
  • imstkLogger is now a singleton
  • Allow exclusion of files while building library targets
  • Refactoring to use forward declarations where possible
  • Templated solvers with matrix type
  • Faster TetraToTriangle map
  • Interactions are now specified explicitly
  • PbdConstraints moved to Constraints library, PbdConstraints and PbdModel decoupled
  • PbdModel performance improvements
  • SPHModel performance improvements (using TaskGraph)

Bug Fixes

  • Fix PhysX backend build issues on Ubuntu
  • Fix imstkFind.cmake issues
  • Fix imstkConfig.cmake issues
  • PbdModel reset fix
  • All Scene, SceneObjects reset correctly now

API Changes

  • simulationManager::startSimulation() to simulationManager::start()
  • CollisionGraph::addInteraction(std::shared_ptr, std::shared_ptr, CollisionDetection::Type, CollisionHandling::Type, CollisionHandling::Type) to CollisionGraph::addInteraction(std::shared_ptr())
  • DynamicalModels now have default solvers

For more information about imstk, please visit our website:


Venkata Sreekanth Arikatla, Andrew Wilson, Jianfeng Yan, Aaron Bray, Sankhesh Jhaveri, Johan Andruejol