iMSTK issueshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues2022-03-20T18:37:02-04:00https://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/398Get/Set Comment Formatting2022-01-23T02:46:10-05:00Andrew WilsonGet/Set Comment FormattingIn many places across imstk the following is used:
```
///
/// \brief Get/Set name
///
const std::string& getName() { return m_name; }
void setName(std::string name) { m_name = name; }
```
Where
```
///
/// \brief Get/Set name
///@{
c...In many places across imstk the following is used:
```
///
/// \brief Get/Set name
///
const std::string& getName() { return m_name; }
void setName(std::string name) { m_name = name; }
```
Where
```
///
/// \brief Get/Set name
///@{
const std::string& getName() { return m_name; }
void setName(std::string name) { m_name = name; }
///@}
```
Should be preferred, as it will show the description for both functions in doxygen.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.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/387SurfaceMeshToMeshCD2022-06-01T16:15:39-04:00Andrew WilsonSurfaceMeshToMeshCDWe currently have ClosedSurfaceMeshToMeshCD. This only works for closed surfaces. It is good for deep contacts.
We do not have the more traditional SurrfaceMeshtoMeshCD, which only locally gives resolution. IE: It checks intersection be...We currently have ClosedSurfaceMeshToMeshCD. This only works for closed surfaces. It is good for deep contacts.
We do not have the more traditional SurrfaceMeshtoMeshCD, which only locally gives resolution. IE: It checks intersection between all the elements (triangles or lines). Then computes resolutions of those elements. The hope being that only small overlaps occur at small dts and if deep contacts happen they would eventually resolve (objects could get stuck). The pro of this method is that it is easily spatially partitioned whereas ClosedSurfaceMeshToMeshCD is not as it tries to find global resolution.
This is usually done with a clipping method. Such method can be found in Bullet or ODE.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/385Uncrustify Linux Support2022-06-02T19:35:42-04:00Andrew WilsonUncrustify Linux SupportI believe linux users currently have to manually run uncrustify with the list file rather than using the target.
`./install/bin/uncrustify
--replace --no-backup -c
../iMSTK/Utilities/Uncrustify/iMSTKUncrustify.cfg -F
Innerbuild/uncrusti...I believe linux users currently have to manually run uncrustify with the list file rather than using the target.
`./install/bin/uncrustify
--replace --no-backup -c
../iMSTK/Utilities/Uncrustify/iMSTKUncrustify.cfg -F
Innerbuild/uncrustify.list`
Note: Uncrustify has an issue where it reports the incorrect file as failing in some cases with list files. A bat file is used on windows to recursively do it individually.Andinet enquobahrieAndinet enquobahriehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/384Entity-Component (ECS) for Scene Object Interface2022-09-26T12:07:35-04:00Andrew WilsonEntity-Component (ECS) for Scene Object InterfaceIntroduction
---
The entity-component architecture is a well known architecture used in many game engines (ECS is more widely used). The motivation behind it is the desire for modularity and extensibility of a scene object interface. The...Introduction
---
The entity-component architecture is a well known architecture used in many game engines (ECS is more widely used). The motivation behind it is the desire for modularity and extensibility of a scene object interface. The idea is to prefer composition over inheritance for the scene object interface. This allows one to add/remove functionality (components) to an object easily. This also allows things like object morphing as you are not tied to a subclass (ex: a PbdObject can become a FemObject by addition of PbdModel and removal of FemModel).
A quick simple psuedo-example for the very unfamiliar (note many ECSs are data oriented and may not have an update, or hybrid and have a subclass that then adds the update):
```
class Component
{
virtual void update() = 0;
}
class Object
{
Component[] components;
void update()
{
for (every comp i in components) { comp.update(); }
}
}
// One should subclass Component to add functionality to Object
```
iMSTK is well suited for this type of architecture due to the large amount of "intra-object customization" required by users. This has been on iMSTK's plate for awhile and it's been lightly moving towards/prepping for it for quite some time now (moving functionality out of the Objects).
Example Use Case
---
Here's an idea of something that could be possible depending on design:
- Ex1: One could construct a ThreadObject which contains PbdModel & AnimatedModel components. Which simulates a line mesh and skins it to a thread geometry.
- Ex2: One could construct a SkinObject which contains multiple PbdModel's, VisualModels, & GeometryMap components.
- Ex3: One could construct a SkinObject which contains one PbdModel but multiple VisualModels + GeometryMap components.
- Ex4: One could construct a all-in-one tool (say arthoscope head) which contains a Camera, Light, RbdModel, & GeometryMap. Possibly even multiple RbdModel's for each piece.
Continued details in documents:
Documents
---
[Notion UML Diagram + Notes](https://www.notion.so/Imstk-ECS-8a00a245e9214ea187d29976e2f02784)Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/383Uncrustify Issues with Lambda's2021-12-24T12:30:51-05:00Andrew WilsonUncrustify Issues with Lambda'sUncrustify always formats lambda's like this:
```
connect<Event>(scene, &Scene::configureTaskGraph,
[&](Event*)
{
// Add a manual constraint after the pbd solve
scene->getTaskGraph()->...Uncrustify always formats lambda's like this:
```
connect<Event>(scene, &Scene::configureTaskGraph,
[&](Event*)
{
// Add a manual constraint after the pbd solve
scene->getTaskGraph()->insertAfter(pbdObject->getPbdModel()->getSolveNode(),
std::make_shared<TaskNode>([&]()
{
// Constrain the position of the 3 vertices of the triangle
// too their original locations
// Completely rigid, if there is jitter it will be very noticable
// We prented it fully converged as a distance constraint
(*pbdVerticesPtr)[0] = initPos[0];
(*pbdVerticesPtr)[1] = initPos[1];
(*pbdVerticesPtr)[2] = initPos[2];
}));
});
```
At the least I would hope it could align the braces of the lambda.