iMSTK
Interactive Medical Simulation Toolkit
releases

========

Releases

Announcement: iMSTK 7.0.0

On behalf of the iMSTK community, we are pleased to announce the release of iMSTK version 7.0. The Interactive Medical Simulation Toolkit (iMSTK) is an open-source toolkit that allows faster prototyping of surgical simulators and skill trainers. iMSTK features advanced high-performance libraries for physics simulation, haptics, advanced rendering/visualization, user hardware interfacing, geometric processing, collision detection, contact modeling, and numerical solvers.

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

Aaron Bray (4):

Andrew Wilson (199):

Ben Boeckel (8):

Connor Bowley (1):

Harald Scheirich (64):

Jacob Moore (40):

JustinMWoo (1):

Stephen Crowell (4):

Tom Birdsong (2):

Contributors: Aaron Bray, Andrew Wilson, Ben Boeckel, Connor Bowley, Harald Scheirich, Jacob Moore, Stephen Crowell, Tom Birdsong, Shreeraj Jadhav (unintegrated ECS Branch)

Release 6.0.0

Announcement: iMSTK 6.0.0

On behalf of the iMSTK community, we are pleased to announce the release of iMSTK version 6.0. The Interactive Medical Simulation Toolkit (iMSTK) is an open-source toolkit that allows faster prototyping of surgical simulators and skill trainers. iMSTK features advanced high-performance libraries for physics simulation, haptics, advanced rendering/visualization, user hardware interfacing, geometric processing, collision detection, contact modeling, and numerical solvers.

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

Andrew Wilson

Enhancements

Testing

Bugs

Documentation

Ben Boeckel

Enhancements

Harald Scheirich

Enhancements

Testing

Bugs

Documentation

Hong Li

Enhancements

Bugs

Jacob Moore

Enhancements

Testing

Jean-Christophe Fillion-Robin

Enhancements

Shreeraj Jadhav

Enhancements

Testing

Documentation

Api Changes

Contributors: Andrew Wilson, Harald Scheirich, Shreeraj Jadhav, Jacob Moore, Jean-Christophe Fillion-Robin, Hong Li, Ben Boeckel

Release 5.0.0

Announcement: iMSTK 5.0.0

This release features major improvements to the collision detection and response capabilities, rendering, and hardware interface modules. Numerous refactors and bug fixes were made across the board to improve extensibility. The testing infrastructure and coverage was improved substantially. Numerous medically relevant examples were added. Most notably, v5.0 comes with a beta version of the C and C# wrappers for iMSTK along with documentation and examples.

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

Andrew Wilson

Enhancements

Documentation Updates

Testing

Harald Scheirich

Enhancements

Documentation Updates

Testing

Sreekanth Arikatla

Enhancements

Testing

Infrastructure

Jianfeng Yen

Enhancements

Ye Han

Enhancements

Khalil Oumimoun

Enhancements

Aron Bray

Testing

Hong Li

Enhancements

Furkan Dinc

Enhancements

Ben Boeckel

Infrastructure

Api Changes

::

PbdPointPointConstraint constraint; constraint.initConstraint( { vertexA, invMassA, vertexVelocityA }, { vertexB, invMassB, vertexVelocityB }, stiffnessA, stiffnessB);

::

std::vector<PbdCollisionConstraint*>* constraints; // ...Fill out constraints... myPbdCollisionSolver->addCollisionConstraints(constraints);

::

// Either order is ok (mesh, sphere) or (sphere, mesh) imstkNew<SurfaceMeshToSphereCD> collisionDetect; collisionDetect->setInput(mySurfMesh, 0); collisionDetect->setInput(mySphere, 1); collisionDetect->update();

// Output order dependent on input order collisionDetect->getCollisionData()->elementsA; // CD elements for the mesh collisionDetect->getCollisionData()->elementsB; // CD elements for the sphere

::

imstkNew<PbdObjectCollision> interaction1(myPbdObjectA, myPbdObjectB); imstkNew<PbdObjectCollision> interaction(myPbdObjectA, myCollidingObjectB);

::

imstkNew<RigidObjectCollision> interaction1(myRbdObjectA, myRbdObjectB); imstkNew<RigidObjectCollision> interaction(myRbdObjectA, myCollidingObjectB);

::

Vec3d center = Vec3d(0.0, 0.0, 0.0); Vec3d extents = Vec3d(0.5, 0.5, 0.5); // Does not have to be a cube imstkNew<OrientedBox> box(center, extents);

::

imstkNew<DebugGeometryObject> debugGeometryObj; scene->addSceneObject(debugGeometryObj);

// Can be called anytime, normally during runtime debugTriangles->appendVertex(Vec3d(0.0, 1.0, 5.0), Color::Red); debugTriangles->appendLine(p1, p2, Color::Green); debugTriangles->appendArrow(p1, p2, Color::Orange); debugTriangles->appendTriangle(p1, p2, p3, Color::Blue);

::

imstkNew<DirectionalLight> light; light1->setFocalPoint(Vec3d(-1.0, -1.0, -1.0)); light1->setIntensity(1.0); scene->addLight("light", light);

::

auto pbdHandler = std::dynamic_pointer_cast<PBDCollisionHandling >(interaction->getHandlerA()); pbdHandler->getCollisionSolver().setCollisionIterations(5);

::

std::shared_ptr<ImageData> diffuseImage = MeshIO::read<ImageData>(iMSTK_DATA_ROOT "/textures/fleshDiffuse.jpg"); material->addTexture(std::make_shared<Texture>(diffuseImage, Texture::Type::Diffuse));

Contributors

Andrew Wilson Harald Scheirich Sreekanth Arikatla Jianfeng Yen Ye Han Khalil Oumimoun Aron Bray Hong Li Furkan Dinc Ben Boeckel Andinet Enquobahrie

Release 4.0.0

Announcement: iMSTK 4.0.0

This release features major improvements to the simulation execution pipeline, geometry module, virtual reality support, and haptics. Extensive refactoring and numerous bug fixes were also made across the codebase to allow extensibility of certain classes, improve clarity, separate roles for different iMSTK libraries, and enforce consistent design and conventions across the toolkit.

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

New Features

Improvements or Refactoring

Bug Fixes

API Changes

::

std::shared_ptr<KeyboardDeviceClient> keyboardDevice = viewer->getKeyboardDevice(); std::shared_ptr<MouseDeviceClient> mouseDevice = viewer->getMouseDevice();

std::shared_ptr<OpenVRDeviceClient> leftVRController = vrViewer->getVRDevice

::

// Add mouse and keyboard controls to the viewer imstkNew<MouseSceneControl> mouseControl(viewer->getMouseDevice()); mouseControl->setSceneManager(sceneManager); viewer->addControl(mouseControl);

imstkNew<KeyboardSceneControl> keyControl(viewer->getKeyboardDevice()); keyControl->setSceneManager(sceneManager); keyControl->setModuleDriver(driver); viewer->addControl(keyControl);

::

connect<KeyEvent>(viewer->getKeyboardDevice(), &KeyboardDeviceClient::keyPress, sceneManager, [&](KeyEvent* e) { std::cout << e->m_key << " was pressed" << std::endl; });

::

VecDataArray<double, 3> myVertices(3); myVertices[0] = Vec3d(0.0, 1.0, 0.0); myVertices[1] = Vec3d(0.0, 1.0, 1.0); myVertices[2] = myVertices[0] + myVertices[1];

std::cout << myVertices[2] << std::endl;

::

// Setup a Viewer to render the scene imstkNew<VTKViewer> viewer("Viewer"); viewer->setActiveScene(scene);

// Setup a SceneManager to advance the scene imstkNew<SceneManager> sceneManager("Scene Manager"); sceneManager->setActiveScene(scene); sceneManager->pause(); // Start simulation paused

imstkNew<SimulationManager> driver; driver->addModule(viewer); driver->addModule(sceneManager); driver->start();

Contributors

Andrew Wilson, Venkata Sreekanth Arikatla, Ye Han, Harald Scheirich, Bradley Feiger, Jianfeng Yan, Johan Andruejol, Sankhesh Jhaveri

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

Improvements or Refactoring

Bug Fixes

API Changes

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

Release 2.0.0

Announcement: iMSTK 2.0.0

This release adds major features for the physics and rendering modules. Parallel support is also added. Major improvements to the CMake build and install steps have been implemented. Many modules have been refactored for clarity and to reduce reducdency.

For more information, visit our website: http://www.imstk.org/

New Features

Improvements or Refactoring

Bug Fixes

Contributors for this release

Venkata Sreekanth Arikatla, Nghia Truong, Nicholas Boris Milef, Aaron Bray, Ruiliang Gao, Johan Andruejol

Release 1.0.0

Announcement: iMSTK 1.0.0

We are introducing Interactive Medical Simulation Toolkit (iMSTK)-a free & open source software toolkit written in C++ that aids rapid prototyping of interactive multi-modal surgical simulations.

For more information, visit our website: http://www.imstk.org/

Features

Contributors for this release

Venkata Sreekanth Arikatla, Alexis Girault, Nicholas Boris Milef, Ricardo Ortiz, Thien Nguyen, Rachel Clipp, Mohit Tyagi, Samantha Horvath, Jean-Baptiste Vimort, Sean Radigan, David Thompson, Dženan Zukić, Mayeul Chassagnard, Tansel Halic, Hina Shah, Andinet Enquobahrie, Hong Li, Shusil Dangi