iMSTK issueshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues2017-07-03T15:39:10-04:00https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/100Place resources for examples online2017-07-03T15:39:10-04:00Sreekanth ArikatlaPlace resources for examples online* The resources (mesh files, texture files, shaders etc.) can be placed online to facilitate easy download
* They can be downloaded automatically through a Cmake script that is part of the example* The resources (mesh files, texture files, shaders etc.) can be placed online to facilitate easy download
* They can be downloaded automatically through a Cmake script that is part of the exampleRelease 1.0.0https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/54Better logging mechanism2017-06-30T12:29:35-04:00Sreekanth ArikatlaBetter logging mechanismSomething like:
http://www.codeproject.com/Articles/288827/g-log-An-efficient-asynchronous-logger-using-Cplus (Source: https://bitbucket.org/KjellKod/g2log)Something like:
http://www.codeproject.com/Articles/288827/g-log-An-efficient-asynchronous-logger-using-Cplus (Source: https://bitbucket.org/KjellKod/g2log)Release 1.0.0Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/22Standardize error handling across the framework2020-11-14T02:25:45-05:00Sreekanth ArikatlaStandardize error handling across the frameworkRelease 1.0.0https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/19Create a macro to export symbols when building library in windows.2020-11-14T02:25:45-05:00Sreekanth ArikatlaCreate a macro to export symbols when building library in windows.Release 1.0.0Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/12Update rendering to use the latest OpenGL standard2020-11-14T02:25:44-05:00Sreekanth ArikatlaUpdate rendering to use the latest OpenGL standardThe code has many legacy OpenGL calls, this costs the framework rendering speed, causes confusion for users, and causes incompatibility with other libraries like Oculus (Oculus' SDK rendering changed, so no longer an issue)
1. This ta...The code has many legacy OpenGL calls, this costs the framework rendering speed, causes confusion for users, and causes incompatibility with other libraries like Oculus (Oculus' SDK rendering changed, so no longer an issue)
1. This task would greatly improve performance: Implement a VBO for storage of vertex data on the GPU for any rendered meshes (this might be just smSurfaceMeshes, not sure though).
2. Create default pass-through vertex and fragment shaders for objects that won't require custom shaders for rendering
3. Remove all fixed pipeline OpenGL code, and force a shader style rendering that takes MVP matricesRelease 1.0.0Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/5Enable the rest of the examples2020-11-14T02:25:44-05:00Sreekanth ArikatlaEnable the rest of the examplesRelease 1.0.0https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/33Implement generic IO module2015-09-02T07:43:49-04:00Ricardo OrtizImplement generic IO moduleThis task splits from the vtk Rendering interface module. The need for creating a generic interface for reading VTK files,.stl,.obj and .veg as well as textures that can be loaded both by vtk engine as well as for the original engine.This task splits from the vtk Rendering interface module. The need for creating a generic interface for reading VTK files,.stl,.obj and .veg as well as textures that can be loaded both by vtk engine as well as for the original engine.Sprint IRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/25Implement New Rendering Interfaces2020-11-14T02:25:45-05:00Ricardo OrtizImplement New Rendering InterfacesImplement rendering interface to connect SimMedTK to the new rendering engine.
Implementation will depend on the rendering engine chosen but these are requirements on the design:
1. The design should abstract the interface so that m...Implement rendering interface to connect SimMedTK to the new rendering engine.
Implementation will depend on the rendering engine chosen but these are requirements on the design:
1. The design should abstract the interface so that most communication occurs at a higher levels in the hierarchy.
2. Should allow for external renderers to be plug in to the library.
Issues #4 and #12 come under this
Sprint IRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/20Standardize and enable phantom omni interface2020-11-14T02:25:45-05:00Sreekanth ArikatlaStandardize and enable phantom omni interfaceSprint ISean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/9SimMedTK Configuration file(s)2020-11-14T02:25:44-05:00Sreekanth ArikatlaSimMedTK Configuration file(s)Discuss and finalize the items for config files for SMTK.
Implement the finalized planDiscuss and finalize the items for config files for SMTK.
Implement the finalized planRelease 2.0.0https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/4Using VTK to add text rendering2020-11-14T02:25:44-05:00Sreekanth ArikatlaUsing VTK to add text renderingenable text to be rendered to opengl screenenable text to be rendered to opengl screenRelease 2.0.0Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/470Pbd Rigid Grasping2022-10-06T18:03:24-04:00Andrew WilsonPbd Rigid GraspingWe need to be able to grasp rigid objects. Such as a needle (also other rigids for testing can be nice).
- [x] Pbd Rigid Grasping
- [x] Rigid Analytic on Rigid Analytic grasping w/ Haptics
- [x] Rigid Analytic on Deformable Mesh graspin...We need to be able to grasp rigid objects. Such as a needle (also other rigids for testing can be nice).
- [x] Pbd Rigid Grasping
- [x] Rigid Analytic on Rigid Analytic grasping w/ Haptics
- [x] Rigid Analytic on Deformable Mesh grasping w/ Haptics
- [x] Rigid Mesh on Rigid Analytic grasping (this may be done not sure) w/ Haptics
- [x] Positional/point grasping
- [x] Grasping with rotation
- [x] Multi point grasping
- [x] Lap Tool (capsule stand in) Needle Manipulation Example
Grasping was implemented with PbdRigidBodyPointToPointConstraint which constrains a point on a rigid body to a point on another. It can exert both forces and torques to achieve this. Unfortunately the object can still "spin" around the grasped point. You could, ofc, establish more grasp points but you'd want to in an orthonormal basis to prevent rotation in all directions. I would sooner recommend using a PbdAngularDistanceConstraint (already introduced, but possibly not working), and introduce an optional offset there. So you could maintain the relative angles made when grasping.
Multi point grasping could be tricky to keep stable. I don't think the linear will present huge problems. Maybe a low stiffness on the PbdAngularDistanceConstraint. I would test both with and without haptics. With haptics may be more stable. Since you can't pull one device without also pulling the other. Of course, if you don't have two haptic devices I think testing without is fine. Additionally all our devices don't render torque so if you grab a needle in two locations and rotate in opposite directions there will be conflicts/unsolvable situations.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/460Two-way Suture To Tissue Constraint2022-08-16T15:09:24-04:00Andrew WilsonTwo-way Suture To Tissue ConstraintCurrently we have a constraint that moves a a suture thread line into the tissue. The tissue does not deform with the thread.
Now that we have pbd multi bodies. We can make this two-way and move the tissue with the thread and thread wit...Currently we have a constraint that moves a a suture thread line into the tissue. The tissue does not deform with the thread.
Now that we have pbd multi bodies. We can make this two-way and move the tissue with the thread and thread with the tissue simultaneously.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/456Pbd Rigid Body Haptics/Virtual Coupling2022-08-16T09:44:32-04:00Andrew WilsonPbd Rigid Body Haptics/Virtual CouplingWhilst pbd rigid body wasn't necessarily added for haptics. It is well suited for it provided some issues are worked out.
I tried the naive implementation of pbd haptics with virtual coupling. By using the external force one can sum int...Whilst pbd rigid body wasn't necessarily added for haptics. It is well suited for it provided some issues are worked out.
I tried the naive implementation of pbd haptics with virtual coupling. By using the external force one can sum into the velocity applied before pbd integrations positions at the start of its pipeline.
```
Compute Virtual Coupling Force from difference in positions and with velocity damping
Integrate Positions (apply force to velocity, and velocity to position producing newPos)
Modifying newPos
Compute velocity from change in position prev to newPos
```
For some reason this shows extreme instability compared to the rigid body. Why is not yet clear to me. There's some specific models for damping introduced in some pbd papers. It might be worth investigating those.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/455Needle Component2022-09-26T12:07:27-04:00Andrew WilsonNeedle ComponentWith the component MR we are able to add a needle component. Which can be carried around in a SceneObject without subclassing. This would be a good next step towards a general needle architecture.
ie:
```
class NeedleComponent : public ...With the component MR we are able to add a needle component. Which can be carried around in a SceneObject without subclassing. This would be a good next step towards a general needle architecture.
ie:
```
class NeedleComponent : public Component
{
public:
// Could be stored in component as well
virtual Vec3d getNeedleDirection() { return Vec3d::Zero(); }
virtual Vec3d getNeedleTip() { return Vec3d::Zero(); }
PunctureState punctureState;
};
int main()
{
SceneObject obj0;
auto needleComp0 = obj0.addComponent<NeedleComponent>();
PbdObject obj1;
auto needleComp1 = obj1.addComponent<NeedleComponent>();
RigidObject obj2;
auto needleComp2 = obj2.addComponent<NeedleComponent>();
}
```
This dissolves the need for NeedleObject in every example which is especially annoying when different subclasses are used. One can refactor the examples and leave NeedleObjects in but just have the NeedleObjects add a NeedleComponent. Additionnally interaction will need to use the component now to get things like tip, direction, etc.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/449Relative Velocity Virtual Coupling2022-08-29T16:03:02-04:00Andrew WilsonRelative Velocity Virtual CouplingThe virtual coupling in Otaduy's paper accounts for device velocity, relative velocity in damping. This doesn't make massively noticeable effects but would improve it.
Unfortunately many devices and APIs don't provide velocity for you m...The virtual coupling in Otaduy's paper accounts for device velocity, relative velocity in damping. This doesn't make massively noticeable effects but would improve it.
Unfortunately many devices and APIs don't provide velocity for you meaning you must compute the velocity yourself. What's more tricky is that it is dependent on dt and the device updates on a separate thread with differing update rates.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/442Screen Text Instructions on Examples2022-07-26T08:42:50-04:00Andrew WilsonScreen Text Instructions on ExamplesI've had at least 2 people now ask me if the program they just started was frozen when in reality the program just started paused and they need to press space to start (often nice for haptics). It could be useful and easy to add some tex...I've had at least 2 people now ask me if the program they just started was frozen when in reality the program just started paused and they need to press space to start (often nice for haptics). It could be useful and easy to add some textual info on screen for some examples to avoid this.Jacob MooreJacob Moorehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/440Debug Vertex Labels2022-06-28T17:35:58-04:00Andrew WilsonDebug Vertex LabelsA VisualModel that you could add that would display the numbering of the vertices would be very useful for debug. ie: VertexLabelVisualModelA VisualModel that you could add that would display the numbering of the vertices would be very useful for debug. ie: VertexLabelVisualModelhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/431Multi Channel Texturing2022-06-02T01:39:01-04:00Andrew WilsonMulti Channel TexturingIt appears as though VTK **might** support multi channel texturing, given some googling history. Especially given this commented out line of code in our code: https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/RenderingVTK/Rende...It appears as though VTK **might** support multi channel texturing, given some googling history. Especially given this commented out line of code in our code: https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/RenderingVTK/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.cpp#L571
Multi channel texturing is useful as it allows multiple sets of texture coordinates on an object with different textures that are then blended together. This is particular useful for cutting where cut faces almost always have another texture. But also other effects & general texture changes.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/430Shape Matching2022-06-02T01:22:31-04:00Andrew WilsonShape MatchingShape matching can be used globally, locally, or for plasticity.
Shape Matching and moreso Local Shape Matching (see [A Survey on Position Based Dynamics, 2017](http://mmacklin.com/2017-EG-CourseNotes.pdf))Shape matching can be used globally, locally, or for plasticity.
Shape Matching and moreso Local Shape Matching (see [A Survey on Position Based Dynamics, 2017](http://mmacklin.com/2017-EG-CourseNotes.pdf))