iMSTK merge requestshttps://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests2022-06-17T17:43:17-04:00https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/835Feature/suture2022-06-17T17:43:17-04:00Jacob MooreFeature/suture<!-- The text within this markup is a comment, and is intended to provide
guidelines to open a Pull Request for the iMSTK repository. This text will not
be part of the Pull Request. -->
<!-- See the [Contributing guidelines](https://git...<!-- The text within this markup is a comment, and is intended to provide
guidelines to open a Pull Request for the iMSTK repository. This text will not
be part of the Pull Request. -->
<!-- See the [Contributing guidelines](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/CONTRIBUTING.md). Specifically:
Start commit messages with a standard prefix (and a space):
* BUG: fix for runtime crash or incorrect result
* COMP: compiler error or warning fix
* DOC: documentation change
* ENH: new functionality
* PERF: performance improvement
* STYLE: no logic impact (indentation, comments)
* WIP: Work In Progress not ready for merge
* REFAC: Refactoring the code
Provide a short, meaningful message that describes the change you made.
When the PR is based on a single commit, the commit message is usually left as
the PR message.
-->
ENH: Adding basic functionality for suturing.
## PR Checklist
- [x] No API changes were made (or the changes have been approved)
- [x] No major design changes were made (or the changes have been approved)
- [x] No new dependecies were added (or the new dependencies have been approved)
- [x] Added test (or behavior not changed)
- [x] Updated API documentation (or API not changed)
- [x] Ran the `CodeFormatEnforcer` task and verified the license header is in all new files
- [x] Added [iMSTK examples](https://gitlab.kitware.com/iMSTK/iMSTK/-/tree/master/Examples) for all new major features (if any)
This MR adds an interaction between a NeedleObject, a Pbd thread, and the surface mesh of a PbdObject so simulate suture and stitching. There are still a few things that need to be done before this is merged:
- [X] Iterative code review (thanks in advance for the feedback)
- [x] Incorporation of the CCD behavior for the thread (and any associated debugging/testing)
- [X] A discussion about where the components need to live
- [X] A discussion about what would need to change to generalize this for any type of suturing interaction. Currently it works with a specific needle.
<!-- **Thanks for contributing to iMSTK!** -->Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/522ENH: ModuleDrivers, Modules added. Geometry transforms. Multi viewer support....2021-01-21T18:45:10-05:00Andrew WilsonENH: ModuleDrivers, Modules added. Geometry transforms. Multi viewer support....OVERVIEW
- The ModuleDriver was added. This is the abstract base class for all drivers. That is, objects the user sets up and gives the modules, which implement the running of the modules.
- SimulationManager was added. This is the only ...OVERVIEW
- The ModuleDriver was added. This is the abstract base class for all drivers. That is, objects the user sets up and gives the modules, which implement the running of the modules.
- SimulationManager was added. This is the only concrete implementation of ModuleDriver. It can run modules in parallel, sequentially (with other sequential modules), or adaptively (substeps based on time passed). Viewers only run sequentially.
- The configuration used across most imstk examples is to run all modules in parallel. A couple examples use substepping by specifying the SceneManager as adaptive. Eventually we'd hope to move away from running SceneManagers in parallel.
- Another pro is that the VTK render call is not done within the event loop anymore. This could cause weird behavior in VTK with render updates freezing when other events such as interactors were used. This also allows smooth interpolation of the camera.
- Rendering Lights fix
- Transforms used in Geometry base class now (anisotropic scaling supported).
- Finite difference curvature functor added
- Currently commented out in LevelSetModel
- VisualObjectImporter upgraded. Supports the import of scene graphs/hierarchical transforms (but flattens them). And shared materials.
- ImplicitGeometryToPointSetCCD fix
- LevelSetCH
- Now supports varied gaussianKernel sizes
- Proportional force support added back
- Advection point masking support added
- Controllers now have access to dt's
- RigidObjectController fixed
- Multiple viewers supported in renderer and its delegates
- Scene now has option (and is default behavior) to initialize the center of the debug camera on the bounding box of the scene.
EXAMPLES & EXTERNAL DATA
- stanfordBunny added both SDF and STL
- femurBone SDF updated (rotated)
- axesPoly.vtk added
- SDFHapticExample added, this does point spring constraints via SDF on the stanford bunny.
- LevelSet-RigidInteractionExample updated for stable haptic feedback and some bloat removed. It is tuned to my system though, if yours is slower it may not work. Also now has a ghost object to visualize the actual location of the tool vs the coupled.https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/463Improve and refactor rendering module2020-06-21T09:40:02-04:00Sreekanth ArikatlaImprove and refactor rendering modulehttps://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/458Physics update refactor2020-06-03T14:19:05-04:00Andrew WilsonPhysics update refactorFurther modularization of the physics pipeline in Imstk using a computational graph to add task based parallelism and configuration of the pipeline.
* Flips dependency of Solvers & DynamicalModels avoiding a circular dependency and d...Further modularization of the physics pipeline in Imstk using a computational graph to add task based parallelism and configuration of the pipeline.
* Flips dependency of Solvers & DynamicalModels avoiding a circular dependency and default solvers
* Pbd reset bug fix
* Pbd performance improvement
* Pbd collision bug fixes
* Pbd constraints moved out of DynamicalModels
* Breaks physics update into computational steps adding the imstkComputeGraph
* Adds tbb based parallelism for this graph, all objects may now run in parallel until they interact which then establishes sync points. Can be turned off, which instead topologically sorts the graph and executes sequentially.
* SPH takes special advantage of this doing numerous steps in its own subgraph.
* Greatly changes how interactions are accomplished to handle them in a parallel manner
* Adds benchmarking of each computational step, displaying each's elapsed time in a real time bar graph
* Conformance with Solvers and DynamicalModels
* Scene's no longer contain solvers
* SceneObjects now update (in parallel) (for scripting movement/animation other in the loop updates you may need)
* All SceneObjects reset on Scene reset now, not just those of specific types
* PbdRigidObject removed
https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/359Upgrade some warnings to fatal errors2021-08-30T17:07:19-04:00Sreekanth ArikatlaUpgrade some warnings to fatal errorsNghia TruongNghia Truonghttps://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/335ENH: Vulkan display modes2019-07-05T12:38:50-04:00Nicholas MilefENH: Vulkan display modes* Closes #226 (includes POINTS and WIREFRAME_SURFACE)
* Fixes bug with VR crashing due to uninitialized variable
Points does not currently allow the use of `setPointSize()`. This may be added later.* Closes #226 (includes POINTS and WIREFRAME_SURFACE)
* Fixes bug with VR crashing due to uninitialized variable
Points does not currently allow the use of `setPointSize()`. This may be added later.https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/324Parallel PBD constraint projection2019-06-25T10:56:26-04:00Nghia TruongParallel PBD constraint projectionhttps://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/312Add back-end mode for simulation manager2019-06-23T20:05:40-04:00Sreekanth ArikatlaAdd back-end mode for simulation managerAdds a backend mode where the simulation will not run in an infinite loop. It expects the application level code to call `advanceFrame()` on the simulation manager object.Adds a backend mode where the simulation will not run in an infinite loop. It expects the application level code to call `advanceFrame()` on the simulation manager object.