iMSTK issueshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues2022-05-12T22:24:02-04:00https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/410Shared Libraries2022-05-12T22:24:02-04:00Andrew WilsonShared LibrariesA number of attempts over the years have been made to produce shared libraries for iMSTK. I'm adding this issue here moreso to document its difficulty from experience of trying it, not so much to suggest it should be done. If one wanted ...A number of attempts over the years have been made to produce shared libraries for iMSTK. I'm adding this issue here moreso to document its difficulty from experience of trying it, not so much to suggest it should be done. If one wanted to it would require huge changes.
1.) iMSTK exposes a significant amount of members from dependent libraries. Namely template ones such as the STL & Eigen. These libraries do not export classes as they are template libraries. You cannot export a class you do not even know the size of. So anywhere something like std::vector<int> appears in a public or protected interface we have a problem. Solutions:
- Export a specialization of the template class, ie: export std::vector<int>. This then locks in the ABI/binary interface (and things like size). Also presents dangers if you took it to another system whose ABI was different, for instance int was not the same size.
- Hide members that you can. By using pimpl where possible or make private and hide warning.
- Wrap the member class & export wrapped interface.
- Provide alternative method for passing if it just appears in a function (for ex: double* instead of a Vec2d).
2.) Singletons & statics. iMSTK has Logger as singleton & a few statics for ids. The concept of these get tricky when you think about a library that can be loaded at runtime, particular on windows for which the library can literally be shared. When should we create a second instance of the logger? When should we use the existing one?
- Conversely we have an issue if you try to link iMSTK (statically built) into two separate dll's. Then use both those dll's. You may experience issues regarding its singleton and statics.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/409Errors in build solution of SFML project2022-04-10T19:46:06-04:00JackCao003Errors in build solution of SFML project![20220409_042603](/uploads/7e97c4448d14980c692a266f99ff9fc4/20220409_042603.png)
Dear ladies and gentlemen,a problem is showed above when build solution of SFML project.It's my first time to use opensource code,how can I solve it? Thank...![20220409_042603](/uploads/7e97c4448d14980c692a266f99ff9fc4/20220409_042603.png)
Dear ladies and gentlemen,a problem is showed above when build solution of SFML project.It's my first time to use opensource code,how can I solve it? Thanks for your help.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/408Move Examples To Unit Tests2022-06-02T15:33:56-04:00Andrew WilsonMove Examples To Unit TestsA number of examples we have don't serve well as examples. As we gain more medically relevant examples, these are become less useful to have here. In particular, none of these are interactive.
- [x] RCM
- [x] FastMarch
- [ ] Geometry...A number of examples we have don't serve well as examples. As we gain more medically relevant examples, these are become less useful to have here. In particular, none of these are interactive.
- [x] RCM
- [x] FastMarch
- [ ] GeometryTransforms
- [ ] GeometryProcessing
- [ ] ObjectControllerDummyClient
- [ ] Audio
- [ ] ConvertVTKToVega
- [x] TaskGraph
- [ ] TaskGraphTiming
- [ ] TaskGraphConfigure
- [ ] CreateEnclosingMesh
- [ ] OctreeIntersection
- [x] PbdClothCollision
Additionally examples take the longest amount of time in the imstk build so cutting down on them is nice (note tests tend to share binaries resulting in slightly faster builds). It's also nice to provide a set of concise & convincing examples.Andinet enquobahrieAndinet enquobahriehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/407Upgrade Examples That use Mouse Virtual Coupling to use DummyClient2022-08-22T03:17:53-04:00Andrew WilsonUpgrade Examples That use Mouse Virtual Coupling to use DummyClientRight now many examples implement a dumbed down virtual coupling in their post update with mouse controls. These should be ported to use DummyClient so that we can reuse the virtual coupling implemented in RigidObjectController.Right now many examples implement a dumbed down virtual coupling in their post update with mouse controls. These should be ported to use DummyClient so that we can reuse the virtual coupling implemented in RigidObjectController.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/406Consolidate RbdConstraint & PbdConstraint2022-09-27T20:45:41-04:00Andrew WilsonConsolidate RbdConstraint & PbdConstraintThe RbdConstraint & PbdConstraint could become more similar in implementation.
- [ ] Use a flag or some other interface to indicate that a constraint, be it PbdConstraint or RbdConstraint. Should be clearable. IE: Put into a separate c...The RbdConstraint & PbdConstraint could become more similar in implementation.
- [ ] Use a flag or some other interface to indicate that a constraint, be it PbdConstraint or RbdConstraint. Should be clearable. IE: Put into a separate container that is cleared every simulation frame.
- [ ] This would require introduction of a container of constraints in RigidBodyModel that does not clear. New feature.
- [ ] Rename RbdConstraint::compute to computeValueAndGradient, to match Pbd.
- [ ] Pass in the required constraint values by reference like computeValueAndGradient. J & vu.
- [ ] Explore why computeValueGradient is not called in a loop before RigidBodyModel::Solve.
- [ ] The signs might be backwards in one of the constraint gradients (I think RbdConstraint has backward sign).
- [ ] Consider renaming PbdConstraint::initConstraint to PbdConstraint::init. Then introducing RbdConstraint::init & removing constructor initialization.
- [ ] Remove PbdCollisionConstraint. Rework all PbdConstraints to stem from the same base PbdConstraint (may not be possible performantly without templates, was attempted at numerous points, difficult).
This should make it much easier to work with the two models.
I suspect as we approach a proper solution of compliance between the two models we will arrive at something similar to PBD rigid bodies described in the paper "Detailed Rigid Body Simulation with Extended Position Based Dynamics"https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/405Unable to build from solution file: Visual Studio MSB8066 error2022-03-20T18:37:02-04:00sahilkamathUnable to build from solution file: Visual Studio MSB8066 errorI am trying to build the solution in a Windows system using cmake and Visual Studio 17.1.1. After following the instructions for cmake-gui, I tried to build the iMSTK.sln file (ALL_BUILD target) and got MSB8066 error. I have attached the...I am trying to build the solution in a Windows system using cmake and Visual Studio 17.1.1. After following the instructions for cmake-gui, I tried to build the iMSTK.sln file (ALL_BUILD target) and got MSB8066 error. I have attached the log files which I think are relevant. The Innerbuild folder is empty.
What am I doing wrong?
Thank you for your consideration.
[iMSTK.log](/uploads/47970effc2abdcee97726c5e174ba0a0/iMSTK.log)
[CMakeOutput.log](/uploads/0c3e3b757eb4b850de5f782794fbbb61/CMakeOutput.log)
[CMakeError.log](/uploads/6949e225e1ecd8f71615dcb8153c68ed/CMakeError.log)
[CMakeError__1_.log](/uploads/0627f4ee32a0edc2cc67c490b2061997/CMakeError__1_.log)
[CMakeOutput__1_.log](/uploads/d10d0bfd348ebf12e377d4787b419609/CMakeOutput__1_.log)https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/404PbdPickingExample Indeterministic Cyclic2022-03-15T15:39:38-04:00Andrew WilsonPbdPickingExample Indeterministic CyclicThe PbdPickingExample appears to indeterministically conclude the graph is cyclic.
There are 4 interactions. 2 PbdObjectCollisions & 2 PbdPicking. If both picking's are removed the error still occurs. If 1 PbdObjectCollision is left the...The PbdPickingExample appears to indeterministically conclude the graph is cyclic.
There are 4 interactions. 2 PbdObjectCollisions & 2 PbdPicking. If both picking's are removed the error still occurs. If 1 PbdObjectCollision is left the error does not occur.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/403Case sensitivity not handled in WSL build environment2022-06-29T09:39:38-04:00Harald ScheirichCase sensitivity not handled in WSL build environmentOur CI server is currently configured to be case-insensitive
https://docs.microsoft.com/en-us/windows/wsl/case-sensitivity
documents how to change thisOur CI server is currently configured to be case-insensitive
https://docs.microsoft.com/en-us/windows/wsl/case-sensitivity
documents how to change thisAndrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/402Improve 'Overview of iMSTK' section of the documentation2022-07-06T18:20:44-04:00Sreekanth ArikatlaImprove 'Overview of iMSTK' section of the documentationExpand the 'Overview of iMSTK' section of readthedocs documentation to give users a more detailed introduction to key components of imstk. Add a walk through example.Expand the 'Overview of iMSTK' section of readthedocs documentation to give users a more detailed introduction to key components of imstk. Add a walk through example.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/401ApplyToData Should Transform Mesh Normals & Tangents2022-08-25T10:04:36-04:00Andrew WilsonApplyToData Should Transform Mesh Normals & TangentsIf you load a mesh where the normals are provided in the file, have meaning, and aren't just overriden later. Then ApplyToData transform that mesh. You will mess up the normals & tangents causing weird lighting issues.If you load a mesh where the normals are provided in the file, have meaning, and aren't just overriden later. Then ApplyToData transform that mesh. You will mess up the normals & tangents causing weird lighting issues.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/400C# Wrapper Build Without Haptics Fails2022-03-15T15:39:44-04:00Andrew WilsonC# Wrapper Build Without Haptics FailsWhen haptics is not built with the wrapper fails to compile. Needs fixing.When haptics is not built with the wrapper fails to compile. Needs fixing.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/399BUG: EnforceCodeStyle Namings2022-02-09T16:53:56-05:00Andrew WilsonBUG: EnforceCodeStyle NamingsMany classes changed from all caps acronyms to first letter uppercase.
- [x] Many classes still using all uppercase.
- [x] Many doxygen class title's not updated, breaking doxygen linkage.
- [x] SWIG wrappings broken. Not on testing ...Many classes changed from all caps acronyms to first letter uppercase.
- [x] Many classes still using all uppercase.
- [x] Many doxygen class title's not updated, breaking doxygen linkage.
- [x] SWIG wrappings broken. Not on testing machine.
- [ ] VRPN example broken. Not on testing machine.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/396C# Wrapper Test2022-03-14T22:57:08-04:00Andrew WilsonC# Wrapper TestIt would be nice to have a way to know when the C# wrapper is broke but not have it fail the entire build. Which would prevent us from continuing to run iMSTK tests & validate MRs. Recently JC showed a way to make builds tests which seem...It would be nice to have a way to know when the C# wrapper is broke but not have it fail the entire build. Which would prevent us from continuing to run iMSTK tests & validate MRs. Recently JC showed a way to make builds tests which seems like something we could do here.
The issue is we would need iMSTK_WRAP_CSHARP to cause an iMSTK build fail when it's on. But only when testing on our automated machines would we want to report as a failed test.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/395ViewerVTK & RenderingVTK Module Toggles2022-05-12T22:25:15-04:00Andrew WilsonViewerVTK & RenderingVTK Module TogglesNow that the libraries have been separated we may add a toggle for ViewerVTK & RenderingVTK which will allow one to build without these modules. Ultimately for using iMSTK as a physics backend only (a VTK without vtk rendering or differe...Now that the libraries have been separated we may add a toggle for ViewerVTK & RenderingVTK which will allow one to build without these modules. Ultimately for using iMSTK as a physics backend only (a VTK without vtk rendering or different rendering libs can be provided).https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/394Pbd Tet Inversion2022-07-20T17:50:52-04:00Andrew WilsonPbd Tet InversionCurrently none of FEM Pbd models work well with tet inversion which happens often at large timesteps for real time simulations. Only pbd volume+distance constraints can deal with it but those suffer other physical inaccuracies.
![Untitl...Currently none of FEM Pbd models work well with tet inversion which happens often at large timesteps for real time simulations. Only pbd volume+distance constraints can deal with it but those suffer other physical inaccuracies.
![Untitled](/uploads/b011e061c88f3e882807818c747edfe4/Untitled.png)
- Neo hookean becomes unstable as it approaches 0 in & inverts.
- StVK is the most stable but tets become stuck after inverted.
We'd either need a modified neo hookean or modified StVk (not shown above).
Fixed: MR #872Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/392TBB Upgrade2021-12-20T15:57:18-05:00Andrew WilsonTBB UpgradeTBB should be upgraded, at least soon after the VTK9.1 goes in so they can be on the same version. It hasn't appeared to cause any issues.TBB should be upgraded, at least soon after the VTK9.1 goes in so they can be on the same version. It hasn't appeared to cause any issues.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/391Assimp 5.1.4 Upgrade2022-06-01T17:28:30-04:00Andrew WilsonAssimp 5.1.4 UpgradeLooks like Assimp went through some bugfixes recently including support for the latest blender file type (big blend changes over 2.8-2.9) this could greatly improve workflow (at least for prototyping things quickly). Hopefully some other...Looks like Assimp went through some bugfixes recently including support for the latest blender file type (big blend changes over 2.8-2.9) this could greatly improve workflow (at least for prototyping things quickly). Hopefully some other things are ironed out now that v5.0 is more mature as there are many file type bugs. Especially when you get into the nitty gritty details of something like animation.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/390PbdTissueSurfaceNeedleExample Needs Custom Tangents or Split Faces2022-06-01T16:25:04-04:00Andrew WilsonPbdTissueSurfaceNeedleExample Needs Custom Tangents or Split FacesThe sharp edges & natural typical approach to computing tangents leads to bad tangents on the edges of the tissue block we use in these examples which causes the texture to lighten on the sides. Solution would be to just split the mesh u...The sharp edges & natural typical approach to computing tangents leads to bad tangents on the edges of the tissue block we use in these examples which causes the texture to lighten on the sides. Solution would be to just split the mesh up on those sharp edges.
![image](/uploads/9c3d29b220cb5bd28764c761a0ef4d90/image.png)https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/389Archive Extraneous things from iMSTK Group2022-01-05T22:54:49-05:00Andrew WilsonArchive Extraneous things from iMSTK GroupThis is for discussion/reminder of things that should be removed.
Archive:
- [x] [libpthread](https://gitlab.kitware.com/iMSTK/libpthread): Unused as of JCs latest MR (https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/702)
- [x] [...This is for discussion/reminder of things that should be removed.
Archive:
- [x] [libpthread](https://gitlab.kitware.com/iMSTK/libpthread): Unused as of JCs latest MR (https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/702)
- [x] [gli](https://gitlab.kitware.com/iMSTK/gli): Unused, for reading images in Vulkan.
- [x] [ODE](https://gitlab.kitware.com/iMSTK/ODE): Unused
- [x] [imgui](https://gitlab.kitware.com/iMSTK/imgui): Unused
- [x] [VegaFEM-CMake4.0](https://gitlab.kitware.com/iMSTK/vegafemv4.0): There are two Vegas this one is not used as of (https://gitlab.kitware.com/iMSTK/iMSTK/-/merge_requests/702).
- [x] [SCCD](https://gitlab.kitware.com/iMSTK/SCCD): May be used in the future, but we could always just archive, unarchive later.
Achive (Not apart of iMSTK):
- [x] NeurosurgeryApp
- [x] [OMFSurgeryApp](https://gitlab.kitware.com/iMSTK/OMFSurgeryApp)
Unsure (potentially archive):
- [x] [MaterialEditor](https://gitlab.kitware.com/iMSTK/MaterialEditor)
- [ ] [imstk-feature-requests](https://gitlab.kitware.com/iMSTK/imstk-feature-requests)
- [x] [imstkCodeDoc](https://gitlab.kitware.com/iMSTK/imstk.gitlab.io)https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/388Add/Fix VR Controller Input2021-12-20T15:57:20-05:00Andrew WilsonAdd/Fix VR Controller InputVR controller input doesn't work astoundingly well through older versions of VTK. It reports some buttons with ids but not all work. Mostly just the triggers. With VTK 9.1 comes the introduction of json input files for mapping actions wh...VR controller input doesn't work astoundingly well through older versions of VTK. It reports some buttons with ids but not all work. Mostly just the triggers. With VTK 9.1 comes the introduction of json input files for mapping actions which is useful here. Eventually it'd be nice to have a more generic interface. But for now, this issue is just about getting the other buttons and thumbstick/trackpad of the controllers working.