{"id":20399946,"url":"https://github.com/kitware/imstk","last_synced_at":"2025-08-21T10:31:04.103Z","repository":{"id":41310205,"uuid":"408532232","full_name":"Kitware/iMSTK","owner":"Kitware","description":"Mirror of https://gitlab.kitware.com/iMSTK/iMSTK","archived":false,"fork":false,"pushed_at":"2024-10-31T18:09:56.000Z","size":87717,"stargazers_count":24,"open_issues_count":0,"forks_count":11,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-12-09T17:42:47.951Z","etag":null,"topics":["haptics","open-source","physically-based-rendering","physically-based-simulation","surgical-simulation","virtual-reality"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kitware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-20T17:10:54.000Z","updated_at":"2024-10-31T18:10:00.000Z","dependencies_parsed_at":"2024-11-15T04:45:34.233Z","dependency_job_id":null,"html_url":"https://github.com/Kitware/iMSTK","commit_stats":{"total_commits":3125,"total_committers":56,"mean_commits":55.80357142857143,"dds":0.7504,"last_synced_commit":"bc3cb36beffa3cca548c857deef48aae152584ad"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FiMSTK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FiMSTK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FiMSTK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kitware%2FiMSTK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kitware","download_url":"https://codeload.github.com/Kitware/iMSTK/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230507051,"owners_count":18236944,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["haptics","open-source","physically-based-rendering","physically-based-simulation","surgical-simulation","virtual-reality"],"created_at":"2024-11-15T04:35:23.127Z","updated_at":"2025-08-21T10:31:04.086Z","avatar_url":"https://github.com/Kitware.png","language":"C++","readme":"# *SUNSET NOTICE*\n*Support and development of Interactive Medical Simulation Toolkit (iMSTK)\nhas been discontinued as of May-02-2025. This project is no longer under\nactive development or support.*\n\n# iMSTK - Interactive Medical Simulation Toolkit\n* [About](#about)\n  * [Overview](#overview)\n  * [Participants](#participants)\n  * [Licensing](#licensing)\n* [Resources](#resources)\n  * [Documentation](#documentation)\n  * [Discourse](#discourse)\n  * [Issue tracker](#issue-tracker)\n* [Prerequisites](#prerequisites)\n* [Getting started with iMSTK](#getting-started-with-imstk)\n  * [Getting the source code](#1-getting-the-source-code)\n  * [Setting up your SSH key](#2-setting-up-your-ssh-key)\n  * [Building iMSTK](#3-building-imstk)\n    * [On Linux/macOS](#on-linuxmacos)\n    * [On Windows](#on-windows)\n    * [Phantom Omni Support](#phantom-omni-support)\n    * [Haply Inverse3 Support](#haply-support)\n    * [VRPN Support](#vrpn-support)\n    * [Offscreen Rendering](#offscreen-rendering)\n    * [Renderless](#renderless)\n\n## About\n### Overview\n[iMSTK](https://www.imstk.org/) is a C++ based free \u0026 open-source toolkit that aids rapid prototyping of real-time multi-modal surgical simulation scenarios. Surgical simulation scenarios involve algorithms from areas such as haptics, advanced rendering, computational geometry, computational mechanics, virtual reality and parallel computing. iMSTK employs a highly modular and extensible design to enable the use of libraries and codes from these areas in a given application thereby reducing the development time.\n\n### Participants\n- [Kitware, Inc.](http://www.kitware.com/)\n- [CeMSIM-Rensselaer Polytechnic Institute](http://cemsim.rpi.edu/)\n- [University of Central Arkansas](http://sun0.cs.uca.edu/~thalic/virasim.html)\n\n### Funding support:\nThis project is supported in part by the following grants [9R44OD018334](https://www.sbir.gov/sbirsearch/detail/1032259), [1R44EB019802](https://www.sbir.gov/sbirsearch/detail/1047037), [1R44AR075481](https://projectreporter.nih.gov/project_info_details.cfm?aid=9777225\u0026icde=50531419) , [1R01EB025247](https://projectreporter.nih.gov/project_info_details.cfm?aid=9738646\u0026icde=50531433), [2R44DK115332](https://projectreporter.nih.gov/project_info_details.cfm?aid=9843084\u0026icde=50531443)\n\nDisclaimer: The content is solely the responsibility of the authors and does not necessarily represent the official views of the NIH and its institutes.\n\n### Licensing\niMSTK is licensed under [Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)\n\n## Resources\n### Documentation\nClick [here](https://imstk.gitlab.io/) for user documentation.\n\nClick [here](https://imstk.gitlab.io/doxy/index) for doxygen code documentation.\n\nClick [here](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Docs/CodingGuide.md) for iMSTK coding style\n\nClick [here](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Docs/Maintainance.md) to view information about iMSTK maintenance tasks\n\n### Dashboard\nClick [here](https://open.cdash.org/index.php?project=iMSTK) for nightly build \u0026 MR results.\n\n### Discourse\nThe iMSTK Users and Developers can post questions and discuss relevant topics at the [Discourse](https://discourse.kitware.com/c/imstk).\n\n### Issue-tracker\nDesigned more specifically for developers, the issue tracker allows developers to list and discuss issues \u0026 enhancements:\n\u003ehttps://gitlab.kitware.com/iMSTK/iMSTK/issues\n\n*Assign labels to the issues. The description of each label can be found [HERE](https://gitlab.kitware.com/iMSTK/iMSTK/labels).*\n\n\u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=bug\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #cc0033; color: #FFFFFF\" title=\"Report an error at runtime\" \u003ebug\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=compilation\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #cc0033; color: #FFFFFF\" title=\"Report an error during compilation\" \u003ecompilation\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=critical\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #ff0000; color: #FFFFFF\" title=\"Issue that should require the developers main focus\" \u003ecritical\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=enhancement\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #5cb85c; color: #FFFFFF\" title=\"Suggest an enhancement you believe is needed (new features...)\" \u003eenhancement\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=optimization\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #5cb85c; color: #FFFFFF\" title=\"Report a slow process and possibly offer ideas to optimize it\" \u003eoptimization\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=clean+up\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #428bca; color: #FFFFFF\" title=\"Suggestions to improve the code style\" \u003eclean up\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=refactor\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #428bca; color: #FFFFFF\" title=\"Suggest a better way to implement a certain feature\" \u003erefactor\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=testcase\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #ffecdb; color: #333333\" title=\"Suggestion/issue related to a test or example within the project\" \u003etestcase\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=visualization\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #ffecdb; color: #333333\" title=\"Suggestion/issue related to a visualization feature\" \u003evisualization\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=mechanics\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #ffecdb; color: #333333\" title=\"Suggestion/issue related to a mechanics feature\" \u003emechanics\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=device\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #ffecdb; color: #333333\" title=\"Suggestion/issue related to a device feature\" \u003edevice\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=documentation\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #f0ad4e; color: #FFFFFF\" title=\"Report an issue/requirement that is related to documentation (code, project...)\" \u003edocumentation\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=support\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #f0ad4e; color: #FFFFFF\" title=\"Report an issue/requirement that is related to support (dashboard, mailing list, website...)\" \u003esupport\u003c/span\u003e\u003c/a\u003e \u003ca href=\"https://gitlab.kitware.com/iMSTK/iMSTK/issues?label_name%5B%5D=discussion\"\u003e\u003cspan class=\"label color-label \" style=\"background-color: #8e44ad; color: #FFFFFF\" title=\"Start a discussion about a certain topic that requires other users and developers input\" \u003ediscussion\u003c/span\u003e\u003c/a\u003e\n\n## Prerequisites\n* Git\n* Git LFS\n* Python (if using Uncrustify, default on)\n* CMake 3.15 or higher\n\n##### On Linux:\n\n```bash\nsudo apt-get install build-essential libgl1-mesa-dev libxt-dev libusb-1.0-0-dev git-lfs\n```\n\n## Getting started with iMSTK\n### 1. Getting the source code\nTo be able to contribute back to the iMSTK project, the preferred way is to use [Git] for code version control. You can use the following command in the terminal for Linux/macOS, or in [Git Bash] for Windows.\n```sh\ngit clone https://gitlab.kitware.com/iMSTK/iMSTK.git\n```\nOR\n```sh\ngit clone git@gitlab.kitware.com:iMSTK/iMSTK.git\n```\n\n### 2. Optional: Setting up your SSH key\nIf cloning with HTTPS, skip this step. If cloning with SSH the build process will check out external dependency sources with the SSH protocol to avoid manually entering credentials during the build process. To allow this, make sure you set up your ssh key in your profile [HERE](https://gitlab.kitware.com/profile/keys). You can find documentation on how to generate and retrieve your public ssh key [HERE](https://gitlab.kitware.com/help/ssh/README).\n\n### 3. Building iMSTK\nWe use [CMake] to configure the project on every platform. See how to run it [HERE](https://cmake.org/runningcmake/).\n\n* #### On Linux/macOS\n  Type the following commands from the same location you cloned the code. This will configure the build in a directory adjacent to the source directory. To easily change some configuration variables like `CMAKE_BUILD_TYPE`, use `ccmake` instead of `cmake`.\n  ```sh\n  mkdir iMSTK-build\n  cd iMSTK-build\n  cmake ../iMSTK #/path/to/source/directory\n  make -j4 #to build using 4 cores\n  ```\n  You can also use [Ninja] for a faster build instead of Unix Makefiles. To do so, configure the cmake project with `-GNinja`:\n  ```\n  cmake -GNinja ../iMSTK\n  ninja\n  ```\n  This will checkout, build and link all iMSTK dependencies. When making changes to iMSTK [base source code](/Base), you can then build from the `Innerbuild` directory.\n\n* #### On Windows\n  Run CMake-GUI and follow the directions described [HERE](https://cmake.org/runningcmake/). You will have to choose which version of Visual Studio you'd like to use when configuring the project, make sure to select **Microsoft Visual Studio 2017, 2019 or 2022**. CMake will generate a `iMSTK.sln` solution file for Visual Studio at the top level for what is called the Superbuild. Open this file and build all targets, which will checkout, build and link all iMSTK dependencies. Make sure the build mode is set to `Release` or `RelWithDebInfo`, iMSTK is not very usable in `Debug` mode. The switches IMSTK_BUILD_EXAMPLES, IMSTK_BUILD_TESTING and IMSTK_BUILD_VISUAL_TESTING should be on as well. When making changes to iMSTK [base source code](/Base), you can then build from the `iMSTK.sln` solution file located in the `Innerbuild` directory.\n  If you would like to build on multiple cores add /MP[N] to CMAKE_CXX_FLAGS in CMake-GUI, where N is optional representing the number of cores (without N supplied, the build will use as many cores as available on the device).\n  If you check out the unit tests or the examples make sure to run `git install lfs` to make sure that `git lfs` is installed.\n\n* #### 3DSystems Touch Support\n  To support the [3DSystems Touch (formerly Geomagic Touch or Sensable Phantom Omni)](https://www.3dsystems.com/haptics-devices/touch) haptic device, follow the steps below:\n    1. Install the [OpenHaptics] SDK as well as the device drivers:\n        - for [Windows](https://support.3dsystems.com/s/article/OpenHaptics-for-Windows-Developer-Edition-v35?language=en_US)\n        - for [Linux](https://support.3dsystems.com/s/article/OpenHaptics-for-Linux-Developer-Edition-v34?language=en_US)\n    2. Reboot your system.\n    3. Configure your CMake project with the variable `iMSTK_USE_OpenHaptics` set to `ON`.\n    4. After configuration, the CMake variable `OPENHAPTICS_ROOT_DIR` should be set to the OpenHaptics path on your system.\n  \n* #### Haply Support\n  To support the [Haply Inverse3](https://www.haply.co) haptic device, follow the steps below:\n    1. Acquire the C++ Haply Hardware API from [here](https://talk.haply.co/t/release-of-the-version-0-0-5-of-the-c-api/19/4).\n    2. Add the Haply Hardware API to your system path with variable name: Haply_SDK_BASE.\n    3. Configure your CMake project with the variable `iMSTK_USE_HAPLY` set to `ON`.\n\n  Please note the Haply Hardware API is in early stages of development and will be deprecated \u0026 changed in the future.\n\n* #### VRPN Support\n\n  The `VRPNDeviceModule` enables access to a large number devices supported by VRPN. The `VRPNDeviceModule` expects a `vrpn_server` to be running. The iMSTK superbuild builds and\n  installs a server with some default settings but if you want to configure a specific server\n  it might be easier to separately build a server. The file `CMake\\External\\External_VRPN.cmake`\n  shows how to pass configuration into VRPN in case you want to modify the modules enabled and\n  disabled by the build\n\n  The `vrpn.cfg` that is installed by default doesn't have any devices enabled, before use you \n  will need to uncomment the devices that you would like to use. If you use the one inside the \n  iMSTK install directory please note that it will be overwritten every time the superbuild is \n  run. \n\n  Currently iMSTK supports VRPN `Analog`, `Button` and `Tracker` devices. Future support will\n  depend on user demand.\n\n* #### Offscreen Rendering\n  To render without the usage of a GPU or without the usage of a screen on linux (or WSL), iMSTK's VTK renderer may be built with OSMesa.\n    1. Install osmesa libraries via:\n  ```bash\n  sudo apt install mesa-common-dev libosmesa6-dev libglu1-mesa-dev`\n  ```\n    2. Set `iMSTK_USE_VTK_OSMESA` to `ON`\n    3. Proceed to build iMSTK\n\n* #### Renderless\n  To build iMSTK without any rendering \u0026 completely as a physics backend, use:\n    1. Set `iMSTK_USE_RENDERING_VTK` to `OFF`\n    2. Set `iMSTK_BUILD_VISUAL_TESTING` to `OFF`\n\n---\n[NIH-OD]: \u003chttps://www.nih.gov/about-nih/what-we-do/nih-almanac/office-director-nih\u003e\n[NIH-NIBIB]: \u003chttps://www.nibib.nih.gov/\u003e\n[Rensselaer Polytechnic Institute]: \u003cwww.rpi.edu\u003e\n[Kitware, Inc.]: \u003cwww.kitware.com\u003e\n[Git Bash]: \u003chttps://git-for-windows.github.io/\u003e\n[Git]: \u003chttps://git-scm.com\u003e\n[CMake]: \u003chttps://cmake.org\u003e\n[Ninja]: \u003chttps://ninja-build.org/\u003e\n[OpenHaptics]: \u003chttps://www.3dsystems.com/haptics-devices/openhaptics\u003e","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fimstk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkitware%2Fimstk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkitware%2Fimstk/lists"}