iMSTK issueshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues2020-11-14T02:25:45-05:00https://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/36VTK upgrade breaks the VegaFEM example with segfault2015-09-07T15:21:45-04:00Ricardo OrtizVTK upgrade breaks the VegaFEM example with segfaultThe segmentation fault happens in vtkOpenGLRenderWindow::GetColorBufferSizes, specifically when this function calls:
```c++
glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER,
attachment,
GL_FRAMEBUFFER_ATTAC...The segmentation fault happens in vtkOpenGLRenderWindow::GetColorBufferSizes, specifically when this function calls:
```c++
glGetFramebufferAttachmentParameteriv(GL_DRAW_FRAMEBUFFER,
attachment,
GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, &size);
```
[here](https://gitlab.kitware.com/vtk/vtk/blob/d45f8a1fa284428be74095a4e808f98d6b37eb84/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx#L545). This seems to be happening in Linux, can't be reproduced in Mac OSX.Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/6Add left out comments!2020-11-14T02:25:44-05:00Sreekanth ArikatlaAdd left out comments!Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/26Haptic Rendering2020-11-14T02:25:46-05:00Ricardo OrtizHaptic RenderingTool coupler should take care of implementing haptic response and rendering according to the type of tools it is attached to.
[Basic introduction](http://jks-folks.stanford.edu/papers/Haptic-Rendering.pdf)
[Virtual Tool Coupler](ht...Tool coupler should take care of implementing haptic response and rendering according to the type of tools it is attached to.
[Basic introduction](http://jks-folks.stanford.edu/papers/Haptic-Rendering.pdf)
[Virtual Tool Coupler](https://books.google.com/books?id=TlfMBQAAQBAJ&pg=SA23-PA8&lpg=SA23-PA8&dq=virtual+tool+coupler&source=bl&ots=oO7aO3OInv&sig=EOD9nD4x0uSpU60U4YEm4PXRXFg&hl=en&sa=X&ved=0CB8Q6AEwAGoVChMI7fCK8d7YxgIVhFeSCh3fnQTQ#v=onepage&q=virtual%20tool%20coupler&f=false)
[God object method for point haptic interaction](http://web.engr.illinois.edu/~zilles/papers/iros.pdf)
[God object method for 6-dof haptic](http://cs.uccs.edu/~ssemwal/CS677/Haptic_01667644.pdf)Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/13clear all compiler warnings!2020-11-14T02:25:44-05:00Sreekanth Arikatlaclear all compiler warnings!Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/21standardize and enable user controlled articulated objects2020-11-14T02:25:45-05:00Sreekanth Arikatlastandardize and enable user controlled articulated objectsex. laparoscopic toolsex. laparoscopic toolshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/16clean up smVAO and smVBO2020-11-14T02:25:44-05:00Sreekanth Arikatlaclean up smVAO and smVBOAfter looking at smVAO, it looks like it was just smVBO, copied and then modified, as there are several member variables that aren't used, and at neamed/typed the same as in smVBO, most notably:
GLuint vboDataId;
GLuint vboIndexId;
...After looking at smVAO, it looks like it was just smVBO, copied and then modified, as there are several member variables that aren't used, and at neamed/typed the same as in smVBO, most notably:
GLuint vboDataId;
GLuint vboIndexId;
QHash<smInt, smInt> dataOffsetMap;
QHash<smInt, smInt> indexOffsetMap;
QHash<smInt, smInt> numberofVertices;
QHash<smInt, smInt> numberofTriangles;Release 1.0.0Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/60Time integration module2016-09-26T09:32:57-04:00Ricardo OrtizTime integration moduleThis time integration module implements forward/backward Euler methods and a flexible/versatile Spectral Deferred Method based on the euler's schemes.This time integration module implements forward/backward Euler methods and a flexible/versatile Spectral Deferred Method based on the euler's schemes.Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/253Add data visualizer for the collision data2021-01-08T18:15:11-05:00Sreekanth ArikatlaAdd data visualizer for the collision datahttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/254Extensible Object Factories2022-04-14T14:55:07-04:00Andrew WilsonExtensible Object FactoriesA number of base classes in imstk use enums for types and object factories. This looks like a giant if statement with a ton of includes. These are ok, but they aren't extensible. The better solution is to have each class register to the ...A number of base classes in imstk use enums for types and object factories. This looks like a giant if statement with a ton of includes. These are ok, but they aren't extensible. The better solution is to have each class register to the factory a function by its class name to create itself.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/255refactor VTKTextStatusManager to use vtkCornerAnnotation2022-09-26T12:07:45-04:00Sreekanth Arikatlarefactor VTKTextStatusManager to use vtkCornerAnnotationAndrew WilsonAndrew Wilsonhttps://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/57Examples do not quit on Linux2016-09-26T09:32:58-04:00Alexis GiraultExamples do not quit on LinuxClicking the (x) menu button or pressing 'q' triggers the termination of the simulator but does not close the window on Linux. Force quit is necessary.Clicking the (x) menu button or pressing 'q' triggers the termination of the simulator but does not close the window on Linux. Force quit is necessary.Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/31Integrate SMTK2020-11-14T02:25:46-05:00Ricardo OrtizIntegrate SMTKI foresee a tight integration between simmedtk and smtk. SMTK will be used for setting all parameter in the simulator (including Vega parameters)I foresee a tight integration between simmedtk and smtk. SMTK will be used for setting all parameter in the simulator (including Vega parameters)Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/29LCP Solver for Contact Response2020-11-14T02:25:46-05:00Ricardo OrtizLCP Solver for Contact ResponseLinear Complementarity Problem (LCP) based solver for collision response.
1. Projected Gauss Seidel
2. Newton-Raphson Method
3. Non-linear Conjugate Gradient
http://image.diku.dk/kenny/download/vriphys10_course/lcp.pdfLinear Complementarity Problem (LCP) based solver for collision response.
1. Projected Gauss Seidel
2. Newton-Raphson Method
3. Non-linear Conjugate Gradient
http://image.diku.dk/kenny/download/vriphys10_course/lcp.pdfhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/35Remove Core dependency on OpenGL2016-09-26T09:32:59-04:00Ricardo OrtizRemove Core dependency on OpenGLOnly Renderer should depend on OpenGL.Only Renderer should depend on OpenGL.Alexis GiraultAlexis Giraulthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/256mesh converter from .vtk to .veg2020-09-04T11:54:21-04:00Jianfeng Yanmesh converter from .vtk to .vegVega model reduction reads .veg files, but sometimes we only have .vtk files.Vega model reduction reads .veg files, but sometimes we only have .vtk files.Jianfeng YanJianfeng Yanhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/257MOR runs much slower than before2020-11-02T14:08:49-05:00Jianfeng YanMOR runs much slower than beforeCompared to a previous version, MOR runs several times slower.Compared to a previous version, MOR runs several times slower.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/258cmake flag iMSTK_USE_MODEL_REDUCTION does not work2020-11-02T14:05:16-05:00Jianfeng Yancmake flag iMSTK_USE_MODEL_REDUCTION does not workModel reduction is not built with iMSTK_USE_MODEL_REDUCTION ON. The problem is its value is not correct in subdirectories.Model reduction is not built with iMSTK_USE_MODEL_REDUCTION ON. The problem is its value is not correct in subdirectories.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/42Buildbot is not working2015-10-24T07:15:22-04:00Ricardo OrtizBuildbot is not workingInvestigate why buildbot stopped delegating builds to the slavesInvestigate why buildbot stopped delegating builds to the slavesRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/28Separate Assembler and Solvers form Scene Objects2020-11-14T02:25:46-05:00Ricardo OrtizSeparate Assembler and Solvers form Scene ObjectsAt present the scene object class handles (a) internal force computation (b) assembly (c) solver. According to the design, assembly and solver part of the code should be separate modules in the framework.
The assembler should be able...At present the scene object class handles (a) internal force computation (b) assembly (c) solver. According to the design, assembly and solver part of the code should be separate modules in the framework.
The assembler should be able to:
+ determine the type of assembly that is required based on the type of objects
+ Number of sub-systems that has to be formed based on the collision contexthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/11Various minor tasks!2020-11-14T02:25:44-05:00Sreekanth ArikatlaVarious minor tasks!+ Move smStaticSceneObject to smSimulators folder
+ Renaming required at many places: smDummySimulator, smContact, smMystylus, initCustom, syncBuffer
+ Move smCollisionMoller source into utilities
+ Extend/enlarge basic analytical geo...+ Move smStaticSceneObject to smSimulators folder
+ Renaming required at many places: smDummySimulator, smContact, smMystylus, initCustom, syncBuffer
+ Move smCollisionMoller source into utilities
+ Extend/enlarge basic analytical geometric types such as smPlane, smSphere, smEllipsoid
+ Move smTextureManager, smMouse,smGeometry etc out of smCore
+ Make sure iterators are all pre-incremented. Post-increment results in slower code. As a policy we should require that all indexing variables (this include iterators) should be pre-incremented.
https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/41Check Dashboards2015-10-01T15:49:45-04:00Ricardo OrtizCheck Dashboardstsuchi.rpi and reach seem to be failing nightly dashboards. Investigate and fix.tsuchi.rpi and reach seem to be failing nightly dashboards. Investigate and fix.Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/259Failed to initialize Phantom Omni Phantom12020-11-10T11:01:06-05:00huiqiTian222Failed to initialize Phantom Omni Phantom1when i run the example Example-BoneShaving,Example-ObjectCOntroller or the other project which Haptic device needed, i got error
```
2020/09/24 17:22:06 505391 FATAL [imstkHapticDeviceClient.cpp->imstk::HapticDeviceClient::initial...when i run the example Example-BoneShaving,Example-ObjectCOntroller or the other project which Haptic device needed, i got error
```
2020/09/24 17:22:06 505391 FATAL [imstkHapticDeviceClient.cpp->imstk::HapticDeviceClient::initialize:48]
******* EXIT trigger caused by LOG(FATAL) entry:
"Failed to initialize Phantom Omni Phantom1
******* STACKDUMP *******
stack dump [0]
stack dump [1]
stack dump [2]
stack dump [3]
stack dump [4]
stack dump [5]
stack dump [6]
stack dump [7] beginthreadex
stack dump [8] BaseThreadInitThunk
stack dump [9] RtlUserThreadStart
Exiting after fatal event (FATAL). Fatal type: SIGABRT
Log content flushed flushed sucessfully to sink
"Failed to initialize Phantom Omni Phantom1
******* STACKDUMP *******
stack dump [0]
stack dump [1]
stack dump [2]
stack dump [3]
stack dump [4]
stack dump [5]
stack dump [6]
stack dump [7] beginthreadex
stack dump [8] BaseThreadInitThunk
stack dump [9] RtlUserThreadStart
Exiting after fatal event (FATAL). Fatal type: SIGABRT
Log content flushed flushed sucessfully to sink
g3log g3FileSink shutdown at: 17:22:06
Log file at: [./simulation.imstk.20200924-172205.log]
```
however i can run the example build with the haptic sdk or driver , what should i do to overcome this error, thanks for your patience.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/64Build failing on OSX2016-09-25T20:12:37-04:00Sean RadiganBuild failing on OSXSee the Dashboard here:
http://my.cdash.org/viewBuildError.php?buildid=917830
Relevant messages:
```
"imstk::ToolCoupler::ToolCoupler(std::__1::shared_ptr<imstk::DeviceInterface>)", referenced from:
std::__1::shared_ptr<...See the Dashboard here:
http://my.cdash.org/viewBuildError.php?buildid=917830
Relevant messages:
```
"imstk::ToolCoupler::ToolCoupler(std::__1::shared_ptr<imstk::DeviceInterface>)", referenced from:
std::__1::shared_ptr<imstk::ToolCoupler> std::__1::shared_ptr<imstk::ToolCoupler>::make_shared<std::__1::shared_ptr<imstk::VRPNForceDevice>&>(std::__1::shared_ptr<imstk::VRPNForceDevice>&&&) in SDK.cpp.o
"imstk::ToolCoupler::~ToolCoupler()", referenced from:
std::__1::__shared_ptr_emplace<imstk::ToolCoupler, std::__1::allocator<imstk::ToolCoupler> >::~__shared_ptr_emplace() in SDK.cpp.o
std::__1::__shared_ptr_emplace<imstk::ToolCoupler, std::__1::allocator<imstk::ToolCoupler> >::~__shared_ptr_emplace() in SDK.cpp.o
"imstk::DeviceInterface::~DeviceInterface()", referenced from:
std::__1::__shared_ptr_emplace<imstk::VRPNDeviceServer, std::__1::allocator<imstk::VRPNDeviceServer> >::~__shared_ptr_emplace() in SDK.cpp.o
std::__1::__shared_ptr_emplace<imstk::VRPNDeviceServer, std::__1::allocator<imstk::VRPNDeviceServer> >::~__shared_ptr_emplace() in SDK.cpp.o
"imstk::InitIODelegates()", referenced from:
imstk::SDK::initialize() in SDK.cpp.o
```
I believe the issue can be fixed by adding ```Devices``` and ```VirtualTools``` to the ```target_link_libraries(SimulationManager``` function.
I can't verify this on OSX though.
Here is a patch that I believe would solve this.
```diff
diff --git a/SimulationManager/CMakeLists.txt b/SimulationManager/CMakeLists.txt
index 254289c..4964437 100644
--- a/SimulationManager/CMakeLists.txt
+++ b/SimulationManager/CMakeLists.txt
@@ -29,11 +29,13 @@ imstk_add_library(SimulationManager
target_link_libraries(SimulationManager
PRIVATE
+ Assembler
Core
- Simulators
- Rendering
CollisionContext
- Assembler
+ Devices
+ Rendering
+ Simulators
+ VirtualTools
)
if(BUILD_TESTING)
```
Release 1.0.0Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/10Remove dependency on CUDA helper files in smSolvers2020-11-14T02:25:44-05:00Sreekanth ArikatlaRemove dependency on CUDA helper files in smSolversRelease 1.0.0https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/14Standardize shader and texture management!2020-11-14T02:25:44-05:00Sreekanth ArikatlaStandardize shader and texture management!tanseltanselhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/1Rename and create a namespace for iMSTK2021-12-17T02:13:51-05:00Sreekanth ArikatlaRename and create a namespace for iMSTKRicardo OrtizRicardo Ortizhttps://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/7Add coding guidelines wiki page2020-11-14T02:25:44-05:00Sreekanth ArikatlaAdd coding guidelines wiki pageRelease 1.0.0Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/8Use size_t for all index type variables2020-11-14T02:25:44-05:00Sreekanth ArikatlaUse size_t for all index type variablesRelease 1.0.0Dženan ZukićDženan Zukićhttps://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/15Replace smHash, smIndiceArrayIter with stl containers counterparts.2020-11-14T02:25:44-05:00Sreekanth ArikatlaReplace smHash, smIndiceArrayIter with stl containers counterparts.Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/18Create generic Controller interfaces2020-11-14T02:25:45-05:00Sreekanth ArikatlaCreate generic Controller interfacesCreate interfaces so that is "easy" to add future *Controllers* to the library.
Some exmaples of external FE libraries:
+ [Feel++](http://www.feelpp.org/)
+ [GetDP](http://www.geuz.org/getdp/)(good [intro](http://www.ankitsrivastava....Create interfaces so that is "easy" to add future *Controllers* to the library.
Some exmaples of external FE libraries:
+ [Feel++](http://www.feelpp.org/)
+ [GetDP](http://www.geuz.org/getdp/)(good [intro](http://www.ankitsrivastava.net/2013/09/gmsh-and-getdp/) to getDP)
+ MBD
+ Fluids solversRicardo OrtizRicardo Ortizhttps://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/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/24Refactor Haptic Interfaces2020-11-14T02:25:45-05:00Ricardo OrtizRefactor Haptic InterfacesRefactor the haptic interface by creating a hierarchy can can be reused by other devices.
Device->OmniDevice
The implementation of the omni device will use a pimpl idiom to contain the actual implementation of the communication lay...Refactor the haptic interface by creating a hierarchy can can be reused by other devices.
Device->OmniDevice
The implementation of the omni device will use a pimpl idiom to contain the actual implementation of the communication layer. All implementations go in the cpp file.
```c++
class PhantomDevice : public Device
{
public:
// Constructor
OmniDevice();
// Destructor
~OmniDevice();
// Initialize device
void init();
// Shutdown device
void shutdown();
...
private:
class PhantomOmni;
std::unique_ptr<PhantomOmni> phantomOmni;
};
```
The Device base class will be inherited by all devices and will manage the actual input/output data coming in and out of the device, something like this:
```c++
class Device
{
public:
// Constructor
Device(const std::string &deviceName);
// Destructor
~Device();
private:
// Vectors
std::vector<smVec3d> vectors;
...
};
```
+ Related to issue #20 Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/34Copyright Header2017-04-25T13:04:07-04:00Ricardo OrtizCopyright HeaderInvestigate appropriate copyright language for the library that includes Kitware as a copyright holder.Investigate appropriate copyright language for the library that includes Kitware as a copyright holder.Andinet enquobahrieAndinet enquobahriehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/37[BUG] Using assimp OBJ reader creates artifacts for the rendering mesh in the...2015-09-08T10:06:33-04:00Ricardo Ortiz[BUG] Using assimp OBJ reader creates artifacts for the rendering mesh in the simulation.Artifacts can be seen when using this reader. My guess is that somehow the resulting node array gets corrupted or the ordering of the nodes is messed up.Artifacts can be seen when using this reader. My guess is that somehow the resulting node array gets corrupted or the ordering of the nodes is messed up.Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/38VTK Rendering Issues2017-02-06T16:02:27-05:00Ricardo OrtizVTK Rendering IssuesThe VTK rendering engine has some issues with the update rates. It seems to be slow and jerky when interacting with the model (rotating, etc.).
@dcthomp Suggested that this could be an issue within the window interactor.The VTK rendering engine has some issues with the update rates. It seems to be slow and jerky when interacting with the model (rotating, etc.).
@dcthomp Suggested that this could be an issue within the window interactor.Release 1.0.0David ThompsonDavid Thompsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/43The Windows dashboard seems to be failing for some time now2016-09-26T09:32:59-04:00Ricardo OrtizThe Windows dashboard seems to be failing for some time nowRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/44kawa, tsushi failing on the dashboard2016-09-26T09:32:58-04:00Ricardo Ortizkawa, tsushi failing on the dashboardRPI failing dashboards.
http://my.cdash.org/index.php?project=SimMedTK&date=2015-09-20RPI failing dashboards.
http://my.cdash.org/index.php?project=SimMedTK&date=2015-09-20Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/45Investigate why renderCubeToTexture fails to link2016-09-26T09:32:58-04:00Ricardo OrtizInvestigate why renderCubeToTexture fails to link... to ViewerBase::addFBO.... to ViewerBase::addFBO.Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/46Update docs to reflect changes in buildbot and kwrobot2017-07-03T14:37:49-04:00Ricardo OrtizUpdate docs to reflect changes in buildbot and kwrobotRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/47Integrate Collision Context and Assembler2016-09-26T09:32:58-04:00Ricardo OrtizIntegrate Collision Context and AssemblerRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/48Model, Viewer, Controller for the Simulation Manager2016-09-26T09:32:58-04:00Ricardo OrtizModel, Viewer, Controller for the Simulation ManagerRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/49Remove GLEW from the super build and link against vtkglew2016-09-26T09:32:58-04:00Ricardo OrtizRemove GLEW from the super build and link against vtkglewRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/50Change sha1 sum for the box data in the vega example2016-09-26T09:32:58-04:00Ricardo OrtizChange sha1 sum for the box data in the vega exampleRicardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/51Packaging the library2016-09-26T09:32:58-04:00Ricardo OrtizPackaging the libraryCreate packages of iMSTK using cpackCreate packages of iMSTK using cpackSean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/53Rename2016-09-26T09:32:58-04:00Ricardo OrtizRenameSimMedTK -> iMSTKSimMedTK -> iMSTKhttps://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/55Camera navigation example data sha1 is incorrect.2016-09-26T09:32:58-04:00Ricardo OrtizCamera navigation example data sha1 is incorrect.This is breaking the dashboard.This is breaking the dashboard.Alexis GiraultAlexis Giraulthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/56Update camera clipping range2016-09-26T09:32:58-04:00Alexis GiraultUpdate camera clipping rangeWhen the camera controller updates the camera position, it looks like the clipping range is not updated, since we can see the rendering being cut by the 'far' plane when getting to far away from the objects in the scene (in LaparoscopicC...When the camera controller updates the camera position, it looks like the clipping range is not updated, since we can see the rendering being cut by the 'far' plane when getting to far away from the objects in the scene (in LaparoscopicCamera example)Alexis GiraultAlexis Giraulthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/58SIMMEDTK_DISABLE_MOUSE_INTERACTION does not work2016-09-26T09:32:57-04:00Alexis GiraultSIMMEDTK_DISABLE_MOUSE_INTERACTION does not workWhen using setViewerRenderDetail() on the ViewerBase in LaparoscopicCamera example the flag SIMMEDTK_DISABLE_MOUSE_INTERACTION has no effect.When using setViewerRenderDetail() on the ViewerBase in LaparoscopicCamera example the flag SIMMEDTK_DISABLE_MOUSE_INTERACTION has no effect.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/61Solvers modules is not enabled in master.2016-09-26T09:32:57-04:00Ricardo OrtizSolvers modules is not enabled in master.Ricardo OrtizRicardo Ortizhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/62Suppress Clang override function warnings2016-09-26T09:32:57-04:00Ricardo OrtizSuppress Clang override function warningsoverrides a member function but is not marked 'override'overrides a member function but is not marked 'override'Sean RadiganSean Radiganhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/63Correct wrong looking shader on Shader example2016-12-09T12:41:48-05:00Alexis GiraultCorrect wrong looking shader on Shader exampleThe [example](/Examples/Shaders) showcasing wet shaders on the brain creates weird looking reflections.
![Screenshot_20160205_091412](/uploads/4d83b2a11b5640275d55098fca828ae4/Screenshot_20160205_091412.png)
![Screenshot_20160205_1...The [example](/Examples/Shaders) showcasing wet shaders on the brain creates weird looking reflections.
![Screenshot_20160205_091412](/uploads/4d83b2a11b5640275d55098fca828ae4/Screenshot_20160205_091412.png)
![Screenshot_20160205_110409](/uploads/3e4db78bf6b1925d1ad9c0f49c494149/Screenshot_20160205_110409.png)
![Screenshot_20160205_110502](/uploads/14e5ec476cb90c4e06c8ee5b736fad78/Screenshot_20160205_110502.png)
tanseltanselhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/66FTD2XX.dll missing from computer2016-10-04T12:49:03-04:00Nicholas MilefFTD2XX.dll missing from computerThis is more of a setup bug than a compilation bug. The compilation process is working well now for me. Right now I'm getting a runtime error that FTD2XX.dll is not being found when I try running Sandbox.exe. Also, should it be FTD2XX64....This is more of a setup bug than a compilation bug. The compilation process is working well now for me. Right now I'm getting a runtime error that FTD2XX.dll is not being found when I try running Sandbox.exe. Also, should it be FTD2XX64.dll?Alexis GiraultAlexis Giraulthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/260link to iMSTK outside of the Examples folder2020-11-18T20:33:06-05:00yzm123link to iMSTK outside of the Examples folder![Snipaste_2020-10-15_19-27-35](/uploads/db83ede835d060e8d179408056298dcc/Snipaste_2020-10-15_19-27-35.png)
![Snipaste_2020-10-15_19-27-44](/uploads/0f77cbffda0dca914bcf1ca79fc980d5/Snipaste_2020-10-15_19-27-44.png)
Hello, everyone.
I t...![Snipaste_2020-10-15_19-27-35](/uploads/db83ede835d060e8d179408056298dcc/Snipaste_2020-10-15_19-27-35.png)
![Snipaste_2020-10-15_19-27-44](/uploads/0f77cbffda0dca914bcf1ca79fc980d5/Snipaste_2020-10-15_19-27-44.png)
Hello, everyone.
I try to manually link to iMSTK outside of the Examples folder, then I build the example DeformableBody in a new project.I got the above result. Could anybody give me some suggession about why there is nothing displayed in the window?
Thanks for any clue you can provide on this topichttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/261How can i show dicom image2020-11-07T16:52:13-05:00huiqiTian222How can i show dicom imagenow i can read dicom image with
`auto dicom = MeshIO::read<ImageData>("../../resource/DICOM");
imstkNew<VisualObject> dicomObj("dicom");
dicomObj->setVisualGeometry(dicom);
scene->addSceneObject(dicomObj);`
but it just show a blac...now i can read dicom image with
`auto dicom = MeshIO::read<ImageData>("../../resource/DICOM");
imstkNew<VisualObject> dicomObj("dicom");
dicomObj->setVisualGeometry(dicom);
scene->addSceneObject(dicomObj);`
but it just show a black image or volum. what should i do to make it right\n
besid, i got error when read dicom image : there was a problem retrieving ddata from xxx.dcm
please show me some advise, thanks.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/262how can get Haptic device Buttons event.2020-11-21T18:21:55-05:00huiqiTian222how can get Haptic device Buttons event.i want to get to use the haptic device's button.
now i can control a object with Haptic device , here is the core code. referenced the example “ObjectController”
`auto server = std::make_shared<HapticDeviceManager>();
auto client = se...i want to get to use the haptic device's button.
now i can control a object with Haptic device , here is the core code. referenced the example “ObjectController”
`auto server = std::make_shared<HapticDeviceManager>();
auto client = server->makeDeviceClient(phantomOmni1Name);
auto controller = std::make_shared<SceneObjectController>(object, client);
scene->addController(controller);
viewer->addChildThread(server);`
but when i want to get button's event. i read some source code about imstk like "imstkHapticDeviceManager.cpp" "imstkHapticeDeviceClient.cpp"
besides, i also read example code about HDAPI Graphics Examples, HDAPI Console Examples.
in my openion, i need to write HDcallback function to get the button event. like this
`
HDCallbackCode HDCALLBACK CallbackFunction(void* pData){*******}
`
in main function
`
hdStartScheduler();
hdScheduleAsynchronous(releaseHotFieldCallback, 0, HD_MAX_SCHEDULER_PRIORITY);
`
here is the thing, if i want to run with out error, i need to initialize the haptic device whit this line code
`
HHD hHD = hdInitDevice(HD_DEFAULT_DEVICE);
`
but it's conflict with client code , Cannot exist together
`
auto client = server->makeDeviceClient(phantomOmni1Name);
`
also i noticed that in "imstkHapticDeviceManager.cpp" there has function "initialize()" to initialize the client which called
"imstkHapticDeviceClient.cpp" m_handle = hdInitDevice(this->getDeviceName().c_str());
but when i add this line "server->initialize()" to my code, the application will crashed.
what should i do to solve this problem, thank for any adcice.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/263PbdCloth Example Fails at Higher Resolutions2021-04-05T23:27:54-04:00Andrew WilsonPbdCloth Example Fails at Higher ResolutionsResolutions higher than 128x128Resolutions higher than 128x128https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/264collision problem2020-11-21T18:21:47-05:00huiqiTian222collision problemHello, I have some questions about collision in imstk
I use the following code to join the collision interaction
```
scene->getCollisionGraph()->addInteraction(makeObjectInteractionPair(PBDObj1, PBDObj2, InteractionType::PbdObjToPbdObj...Hello, I have some questions about collision in imstk
I use the following code to join the collision interaction
```
scene->getCollisionGraph()->addInteraction(makeObjectInteractionPair(PBDObj1, PBDObj2, InteractionType::PbdObjToPbdObjCollision,
CollisionDetection::Type::MeshToMeshBruteForce));
```
1. Regarding the interactionType, I noticed that there is an enumeration class in imstkOBjectInteractionFactory.h that lists some types, but
not all types are implemented in imstkOBjectInteractionFactory.cpp. Does it mean that not all interactionTypes can be used?
Moreover, although the femObjToCollidingObjPenaltyForce type is implemented, it does not return, imstkOBjectInteractionFactory.cpp line 102.
**I want to realize the collision of FEMOBj and collidingOBj, PBDOBJ and collidingOBj.**
2. Regarding collision handling, I want to achieve similar **puncture effects and friction effects**, what should I do to achieve these
effects
3. Regarding collisionDetectionType, Is there any essential difference between pointset and surfmesh?
when i read mesh with different code, different dataType showd:
```
auto surfMesh = MeshIO::read<SurfaceMesh>("xxx.obj"); ---------- surfMesh
auto surfMesh = MeshIO::read("xxx.obj"); ------------------------PointSet
```
then which way is correct to use to collisionDetection.
Thank you very much for any suggestions.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/265Download the data optionally at the build2022-04-20T08:26:25-04:00Sreekanth ArikatlaDownload the data optionally at the buildBuild should not be held for the downloadBuild should not be held for the downloadhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/266visualModel can not hide2020-12-03T17:12:10-05:00huiqiTian222visualModel can not hidetoday i update the iMSKT source code. a small bug i got.
then this code
`visualObj->getVisualModel(0)->hide();
fedeformableObj->getVisualModel(0)->hide()`
do not work, it's still showed in my scene.
imstkVisualModel.h line 81today i update the iMSKT source code. a small bug i got.
then this code
`visualObj->getVisualModel(0)->hide();
fedeformableObj->getVisualModel(0)->hide()`
do not work, it's still showed in my scene.
imstkVisualModel.h line 81https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/267How can read PNG JPG image.2020-12-03T16:48:18-05:00huiqiTian222How can read PNG JPG image.hi, i want to read some PNG image in my scene.
in VTK, we can just use `VTKPNGReader` to read PNG image perfectly. but how can i read these iamges in iMSTK.
1. i try to read PNG image in VTK ways, but it sames i can not convert `vtkim...hi, i want to read some PNG image in my scene.
in VTK, we can just use `VTKPNGReader` to read PNG image perfectly. but how can i read these iamges in iMSTK.
1. i try to read PNG image in VTK ways, but it sames i can not convert `vtkimagedata` to imskt's `imageData` here's my code
`vtkSmartPointer<vtkPNGReader> PNGreader = vtkSmartPointer<vtkPNGReader>::New();
PNGreader->SetFileName("xxx.png");
std::shared_ptr<ImageData> imageData(std::move(GeometryUtils::copyToImageData(PNGreader->GetOutput())));`
2. then i noticed that renderMaterial got a api `addtexture` which can read PNG image.
i create a plan geometry. then i try to add a PNG image as texture, but nothing happend. here's my code
`auto planGeom = std::make_shared<Plane>();
planGeom->setWidth(750);
imstkNew<Texture> texture("xxx.png", Texture::Type::Roughness);
imstkNew<RenderMaterial> Mat;
Mat->addTexture(texture);
imstkNew<VisualModel> vm(planGeom, Mat);
imstkNew<VisualObject> visualeObj("visual");
visualObj->addVisualModel(vm);`
thanks for any advice. hope you have a good day.😀https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/268TextureDelegate Modifications2021-04-05T20:58:28-04:00Andrew WilsonTextureDelegate ModificationsTextureDelegates need to be updated with event system. Particularly in SurfaceMeshRenderDelegate.
- When a new texture is added, it should update the VTK one
- When parameters of a texture is changed, it should update the VTK one
These ...TextureDelegates need to be updated with event system. Particularly in SurfaceMeshRenderDelegate.
- When a new texture is added, it should update the VTK one
- When parameters of a texture is changed, it should update the VTK one
These should not be called every update of the delegate but only when the texture posts modified. A queueConnect should be used along with a message queue.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/269CollisionData SceneObjects2021-08-05T21:02:43-04:00Andrew WilsonCollisionData SceneObjectsMake specific VisualObjects in iMSTK for debugging simulations that have simple interference like so:
```
imstkNew<CollisionDataVisualObject> object;
// Can handle and filter types of collision datas
object->addCollisionData(myCollision...Make specific VisualObjects in iMSTK for debugging simulations that have simple interference like so:
```
imstkNew<CollisionDataVisualObject> object;
// Can handle and filter types of collision datas
object->addCollisionData(myCollisionData);
scene->addSceneObject(object);
```
Other visualization controls can be added such as line widths, arrows, scales, etc.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/270Remove DebugRenderGeometry and DebugDelegates2021-08-05T21:03:08-04:00Andrew WilsonRemove DebugRenderGeometry and DebugDelegatesThe DebugRenderGeometry and Delegate currently provide topology changing functionalities and buffering that the SurfaceMesh and LineMesh don't. Allowing one to easily insert a line/etc for a contact or whatever.
After we add topology ch...The DebugRenderGeometry and Delegate currently provide topology changing functionalities and buffering that the SurfaceMesh and LineMesh don't. Allowing one to easily insert a line/etc for a contact or whatever.
After we add topology change (both changing topology/buffer swap and buffering) support to SurfaceMesh and LineMesh the debug geometry should be removed/replaced with usage of SurfaceMesh and LineMesh as they would be redundant.
Additionally Geometry supports multi viewer/observers but DebugGeometry still uses flags which can only be used by one observer.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/271how to add haptic decvice force effect?2021-01-05T18:07:58-05:00huiqiTian222how to add haptic decvice force effect?i'd like to add some force feedback in haptic device, contact force and noncontact force, what should i do to achive this. please enlighten me.i'd like to add some force feedback in haptic device, contact force and noncontact force, what should i do to achive this. please enlighten me.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/272Example-RigidBodyDynamics, "reset simulation" doesn't work correctly2021-01-05T16:34:36-05:00Harald ScheirichExample-RigidBodyDynamics, "reset simulation" doesn't work correctlyusing 'r' to reset the simulation causes the dragon model to flip around the ground plane
[Capture](/uploads/61b5b90c6fc220b1df05c872ecc70e48/Capture.PNG)using 'r' to reset the simulation causes the dragon model to flip around the ground plane
[Capture](/uploads/61b5b90c6fc220b1df05c872ecc70e48/Capture.PNG)https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/273iMSTK Uncrustify stealth dependency on PythonInterp2022-01-07T01:15:13-05:00Johan AndruejoliMSTK Uncrustify stealth dependency on PythonInterpUncrustify requires [PythonInterp](https://github.com/uncrustify/uncrustify/blob/23184091f66c5ba8434da08639cb2cdde77dfeb1/CMakeLists.txt#L20) though it's never prescribed by iMSTK itself anywhere.
This creates a confusing build failure...Uncrustify requires [PythonInterp](https://github.com/uncrustify/uncrustify/blob/23184091f66c5ba8434da08639cb2cdde77dfeb1/CMakeLists.txt#L20) though it's never prescribed by iMSTK itself anywhere.
This creates a confusing build failure in the superbuild if you system doesn't have python.
Worse, this may work against you by linking to whatever python you have on your system without you knowing **which** one.
Possible fix:
iMSTK should probably add a ```find_package(PythonInterp REQUIRED)``` to [External_Uncrustify.cmake](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/CMake/External/External_Uncrustify.cmake) and make sure to pass the proper vars to Uncrustify if possible.
That would at least ensure that the missing python libraries get caught at configure time.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/274Expose Fluid Material Properties2022-06-03T00:05:05-04:00Andrew WilsonExpose Fluid Material PropertiesCurrently many screen space fluid material properties are not controllable. It may be best if there exist a FluidMaterial subclass for these. It should then be dealt with in the VTKFluidRenderDelegate.Currently many screen space fluid material properties are not controllable. It may be best if there exist a FluidMaterial subclass for these. It should then be dealt with in the VTKFluidRenderDelegate.Andinet enquobahrieAndinet enquobahriehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/275Geometry Transform Refactor2021-01-21T18:45:12-05:00Andrew WilsonGeometry Transform RefactorGeometry currently uses a weird TRS (with uniform scaling) at its base class level. It should instead use a single 4x4 transform.Geometry currently uses a weird TRS (with uniform scaling) at its base class level. It should instead use a single 4x4 transform.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/276Geometry Init/Current Refactor2021-05-14T08:41:06-04:00Andrew WilsonGeometry Init/Current RefactorCurrently geometry composites post/pre (current/init) members. Such as in PointSet it has current and init positions. This has proven difficult. Instead an entirely separate geometry object should be used. This is especially helpful for ...Currently geometry composites post/pre (current/init) members. Such as in PointSet it has current and init positions. This has proven difficult. Instead an entirely separate geometry object should be used. This is especially helpful for post/pre velocities and other attributes. As well as every other member that has post/pre state, including those in primitive geometries.
Obvious failures of such thing are shown in PbdClothRemap. If one subdivides then resets, it will fail. Similarly for any attribute reset will fail.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/277Extend ImageData to 2d2021-04-05T12:37:46-04:00Andrew WilsonExtend ImageData to 2dJust as the title says, extend to 2d. We could also then look into utilizing it for texturing. Additionally the aptly named ImageDataRenderDelegate which does volume rendering of a 3d image should be renamed and a 2d RenderDelegate added.Just as the title says, extend to 2d. We could also then look into utilizing it for texturing. Additionally the aptly named ImageDataRenderDelegate which does volume rendering of a 3d image should be renamed and a 2d RenderDelegate added.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/278Extend LevelSetModel to Other Geometries2021-01-08T21:42:52-05:00Andrew WilsonExtend LevelSetModel to Other GeometriesLevelSetModel is currently only designed for 3d images. It can further be generalized for any Geometry with generic function value and finite difference functions.
Namely it would be nice to have it working with 2d images and tetrahedra...LevelSetModel is currently only designed for 3d images. It can further be generalized for any Geometry with generic function value and finite difference functions.
Namely it would be nice to have it working with 2d images and tetrahedral meshes.
One step farther and you could generalize it for other differential equations. Such as heat or reaction diffusion.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/279Remove RigidBodyWorld Singleton2022-04-12T17:00:07-04:00Andrew WilsonRemove RigidBodyWorld SingletonRigidBodyModel (PhysX) should not be using a singleton. It should follow a pattern similar to RigidBodyModel2 for a shared implicit DynamicalModel.RigidBodyModel (PhysX) should not be using a singleton. It should follow a pattern similar to RigidBodyModel2 for a shared implicit DynamicalModel.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/280PbdObject-CollidingObject Collision2021-08-05T21:02:51-04:00Andrew WilsonPbdObject-CollidingObject CollisionCurrently PbdObject only can collide with other PbdObjects whose masses are set to 0 for static collision. But it should be able to collide with CollidingObject.Currently PbdObject only can collide with other PbdObjects whose masses are set to 0 for static collision. But it should be able to collide with CollidingObject.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/306VRPN server inactive2021-10-04T08:24:07-04:00Harald ScheirichVRPN server inactiveHarald ScheirichHarald Scheirichhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/281RbdObject2-CollidingObject Collision2021-03-16T18:53:14-04:00Andrew WilsonRbdObject2-CollidingObject CollisionCurrently for rigid object collision in RigidBodyModel2 both objects need to be of type RbdObject2. But one way collision should be supported through CollidingObject.Currently for rigid object collision in RigidBodyModel2 both objects need to be of type RbdObject2. But one way collision should be supported through CollidingObject.Andrew WilsonAndrew Wilsonhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/282Functions to Test if VR device is present2022-01-07T01:08:35-05:00Andrew WilsonFunctions to Test if VR device is presentWe should be able to check and alert users of this when they run VR enabled examples. This is likely a function in VTK. If not through VTK, definitely OpenVR.We should be able to check and alert users of this when they run VR enabled examples. This is likely a function in VTK. If not through VTK, definitely OpenVR.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/283PBD Constraint Sleeping2022-07-20T13:01:46-04:00Andrew WilsonPBD Constraint SleepingSome method to sleep constraints would be useful for large tissues. Most parts of tissue don't simulate until touched. Even then, only a localized area of constraints are active. This would avoid expensive math done in some constraints.
...Some method to sleep constraints would be useful for large tissues. Most parts of tissue don't simulate until touched. Even then, only a localized area of constraints are active. This would avoid expensive math done in some constraints.
This may still require a loop to test if the constraints are alive.
Additionally some sort of partitioning could aid sleeping and culling work.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/284unit test for coloring2021-06-08T13:19:38-04:00Jianfeng Yanunit test for coloringCreate unit tests for the graph coloring.Create unit tests for the graph coloring.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/285Analytical Geometries Orientation Axes2021-05-26T13:39:25-04:00Andrew WilsonAnalytical Geometries Orientation AxesMany of the analytical geometries use an orientation axes to represent rotations. Not all orientations can be represented with a single axes.
For instance, a analytical plane with normal (0, 1, 0) cannot be rotated around y.
This shoul...Many of the analytical geometries use an orientation axes to represent rotations. Not all orientations can be represented with a single axes.
For instance, a analytical plane with normal (0, 1, 0) cannot be rotated around y.
This should instead be an AngleAxes. dir + theta. It would be more intuitive to just use the base class geometry 4x4 transform. Most of the render delegates just do an expensive rotate vector to vector computation anyways, to produce this transform.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/286Help building master branch2021-03-18T23:28:53-04:00pedro-patlanHelp building master branchHi,
I'm having issues when I tried to build iMSTK on master branch. I'm facing the next issue:
`iMSTK/Source/Common/imstkVecDataArray.h:301:25: error: ‘m_data’ was not declared in this scope`. So I looked into the code and `m_data` is n...Hi,
I'm having issues when I tried to build iMSTK on master branch. I'm facing the next issue:
`iMSTK/Source/Common/imstkVecDataArray.h:301:25: error: ‘m_data’ was not declared in this scope`. So I looked into the code and `m_data` is not declared. Does anyone have the same issue?
Best,
Pedrohttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/287Separate PBD constraint generation from PbdModel2021-07-06T22:14:09-04:00Andrew WilsonSeparate PBD constraint generation from PbdModelIt would probably be good to separate these and provide another class for generating constraints. One that can be subclassed and customized by a user without having to subclass PbdModel itself to customize. This would also nicely reduce ...It would probably be good to separate these and provide another class for generating constraints. One that can be subclassed and customized by a user without having to subclass PbdModel itself to customize. This would also nicely reduce the size of the PbdModel class.
It could serve as sort of a constraint generation policy. For example, right now we define constraint generation in a global matter with enums. If "enableConstraint" then it is assumed the user wants these constraints everywhere on the mesh. What happens when the mesh changes? Or is entirely replaced?
Ideally this almost functor like policy class would have two virtual functions.
- One for a global change, called when initializing the first time or if the geometry of the model completely replaced.
- The second for local change and local reinit. It would preserve the original constraint parameters and possibly remap the indices of the constraints if topology change occurred. Optionally no map is provided (this would be if buffering and removal was used such that indices do not change).
This way a user could provide a very custom constraint generation policy for custom applications (for instance in VESS there is a mask of vertices that don't even have constraints). Might be a nice way to deal with topology changes of the PbdModel.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/288FemurObject.cpp need add head file <ctime>2021-05-17T10:05:16-04:00huiqiTian222FemurObject.cpp need add head file <ctime>#include 《ctime》 in FemurObjec.cpp or RemurObject.h
Otherwise, `identifier not found` error will be reported when compiling cause this line
`srand(static_cast<unsigned int>(time(NULL)));`#include 《ctime》 in FemurObjec.cpp or RemurObject.h
Otherwise, `identifier not found` error will be reported when compiling cause this line
`srand(static_cast<unsigned int>(time(NULL)));`https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/289Examples fail to run for a new guy2021-04-02T19:38:39-04:00KimExamples fail to run for a new guyI have followed the Configuration and Build instructions (for Linux) as described on your readthedocs.io site, but the examples fail to execute when I try running them. The error produced is always related to a failure to find or run th...I have followed the Configuration and Build instructions (for Linux) as described on your readthedocs.io site, but the examples fail to execute when I try running them. The error produced is always related to a failure to find or run the associated library file, e.g.:
````
./Example-Graph: error while loading shared libraries: libvtkCommonMisc-9.0.so.1: cannot open shared object file: No such file or directory
````
The library files appear to be all present in the iMSTK_build/install/lib folder. I found and ran the setup_iMSTK.sh script, but that had no effect. I am running the Examples from the iMSTK_build/install/bin folder, using simple execution instructions, like; ./Example-Graph
I'm new to scientific visualization, and assume I am doing something wrong, just don't know what. Would you have any suggestions for me?
Kimhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/290Camera `setFocalPoint` issue when view direction colinear to up2022-06-01T18:09:30-04:00Harald ScheirichCamera `setFocalPoint` issue when view direction colinear to upset focal point fails without warning when view direction is equal to the implicit up, we can either warn the user when this happens or select a different up directionset focal point fails without warning when view direction is equal to the implicit up, we can either warn the user when this happens or select a different up directionhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/291PointSet::setInitialVertexPositions doesn't set m_vertexPositions2021-06-01T14:51:09-04:00Harald ScheirichPointSet::setInitialVertexPositions doesn't set m_vertexPositionsSetInitialVertexPositions is in the public interface, but using it seems to require SetVertexPositions as well, as it only sets the m_initialVertexPositions member variable, when creating a surface mesh for example this means ComputeVert...SetInitialVertexPositions is in the public interface, but using it seems to require SetVertexPositions as well, as it only sets the m_initialVertexPositions member variable, when creating a surface mesh for example this means ComputeVertexNeighborTriangles fails as it asumes m_vertextPositions to be correctly set. Either the SetInitialVertexPositions should be not be in the public interface or it needs to do the right with with regards to `m_vertexPositions`https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/292Bug: Can not rotate and tranlate volume data2021-04-02T22:58:18-04:00huiqiTian222Bug: Can not rotate and tranlate volume datai just load a volume nrrd image data, but can not rotate or translate it.
All the following codes have no effect
```
`volume->rotate(Vec3d(0, 1, 0), PI);
volume->setRotation(Vec3d(1, 0, 0), PI / 2);
volume->setTranslation(Vec3d(0, 20...i just load a volume nrrd image data, but can not rotate or translate it.
All the following codes have no effect
```
`volume->rotate(Vec3d(0, 1, 0), PI);
volume->setRotation(Vec3d(1, 0, 0), PI / 2);
volume->setTranslation(Vec3d(0, 200, -100));
volume->translate(100, 100 ,100)`
```https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/293Superbuild seems to only utilize 1 core for vtk build2021-05-25T17:32:31-04:00Harald ScheirichSuperbuild seems to only utilize 1 core for vtk buildLooks like the superbuild doesn't set `\MP` for the vtk build, (and maybe others) its particularily visible with vtk as its the only thing that is building for a while.Looks like the superbuild doesn't set `\MP` for the vtk build, (and maybe others) its particularily visible with vtk as its the only thing that is building for a while.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/294Examples not working due to relative path issue of shared library libopenvr_...2021-04-07T11:43:38-04:00reneXreneczechdev@gmail.comExamples not working due to relative path issue of shared library libopenvr_api (LNX)I'm getting an error with openvr when running any of the examples.
`error while loading shared libraries: ../../../../install/lib/libopenvr_api.so: cannot open shared object file: No such file or directory`
Maybe, owing to VTK depends...I'm getting an error with openvr when running any of the examples.
`error while loading shared libraries: ../../../../install/lib/libopenvr_api.so: cannot open shared object file: No such file or directory`
Maybe, owing to VTK depends on openvr the library is pointing to an incorrect relative path...
I'm using `09299da9ad1b8ddb4b0b0cd323532eb29b4e81b1` version. OS Debian 9.
Thanks in advance for any help.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/295no response to keyboard control2021-04-02T12:53:33-04:00Jianfeng Yanno response to keyboard controlThe master branch compiled successfully on linux, and the examples (for example Example-PBDVolume) can start without issue, but they do not response at all to the keyboard control (space, q, r, etc). The issue was introduced in MR/commit...The master branch compiled successfully on linux, and the examples (for example Example-PBDVolume) can start without issue, but they do not response at all to the keyboard control (space, q, r, etc). The issue was introduced in MR/commit 266ffa21.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/296`VTKSurfaceMeshRenderDelegate` doesn't correctly update scalars2021-07-07T08:13:52-04:00Harald Scheirich`VTKSurfaceMeshRenderDelegate` doesn't correctly update scalarsWhen the mesh gets updated the delegate needs to react update scalars as well
For example this happens when localMarchingCubes updates its submesh, scalars that are attached to this submesh can't not be processed after the first frame....When the mesh gets updated the delegate needs to react update scalars as well
For example this happens when localMarchingCubes updates its submesh, scalars that are attached to this submesh can't not be processed after the first frame. this can be fixed by adding for example by adding
```
// Map vertex scalars if it has them
if (m_geometry->getVertexScalars() != nullptr)
{
m_mappedVertexScalarArray = GeometryUtils::coupleVtkDataArray(m_geometry->getVertexScalars());
m_polydata->GetPointData()->SetScalars(m_mappedVertexScalarArray);
}
```
to the body of the `geometryUpdate()` function but i am asuming cellScalars need to be updated here as well. But the delegate handles points and triangles in two different manners (sharing data vs copying), this might also be an issue in some of the other delegates as well.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/297'`VTKSurfaceMeshRenderDelegate` doesn't deal with data size changes2021-07-09T14:06:30-04:00Harald Scheirich'`VTKSurfaceMeshRenderDelegate` doesn't deal with data size changesAny call that reallocates the underlying datastructure of `points` or `tris` will cause problems, any call to `resize()` or `clear()` to `imstkDataArray` and `imstkVecDataArray` will cause the internal storage reallocated. But in [`updat...Any call that reallocates the underlying datastructure of `points` or `tris` will cause problems, any call to `resize()` or `clear()` to `imstkDataArray` and `imstkVecDataArray` will cause the internal storage reallocated. But in [`updateGeometry` line 225](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/Rendering/VTKRenderer/RenderDelegate/imstkVTKSurfaceMeshRenderDelegate.cpp#L225) the delegate only checks for equality of the wrapping shared pointer, to update its internals. In contrast the vtk data is bound to the internal pointer of the `imstkData/VecDataArray` (see GeometryUtils::coupleVtkDataArray`) so if the user _doesn't_ set new data in the mesh via `mesh.initialize` or `mesh.setVertexPositions` this check will fall through.
The check in line 225 could be made against the underlying structure that might fix some of the problems but i am not sure all cases are covered then. This is probably an issue with other delegates as well
If a structure takes a shared pointer and gives access to that shared pointer (i.e. the mesh taking the point data as a shared_ptr) then the assumption is that modifying this structure will result in the correct behavior of the rest of the system, otherwise the data should be taken by copy or other ways indicating to the user that this data cannot just be modified.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/298DataArray and VecDataArray are doing too many heap allocations2022-01-07T01:07:53-05:00Harald ScheirichDataArray and VecDataArray are doing too many heap allocationsBoth DataArray and VecDataArray are doing allocations/deletions in cases where its not necessary.
- `clear()` is implemented as `resize(0)` which not only deletes the current memory but additionally also allocates new memory of size 1
...Both DataArray and VecDataArray are doing allocations/deletions in cases where its not necessary.
- `clear()` is implemented as `resize(0)` which not only deletes the current memory but additionally also allocates new memory of size 1
This should probably be implemented as a constant time `m_size=0` without allocations
- `resize()` for any case where the new capacity is smaller than the existing capacity also allocates new memory, this should probably be implemented as just a simple change to `m_size`
A change here though would impact #297 maybe other systems that rely on the internal data pointer.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/299imstkLocalMarchingCubes copying a lot of data2021-06-04T14:40:44-04:00Harald ScheirichimstkLocalMarchingCubes copying a lot of dataIn [`mcSubImage`](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/Filtering/imstkLocalMarchingCubes.cpp#L402) new data gets stored in a local `std::list` then a new `imstkVecData` structure gets created, the data from the lis...In [`mcSubImage`](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/Filtering/imstkLocalMarchingCubes.cpp#L402) new data gets stored in a local `std::list` then a new `imstkVecData` structure gets created, the data from the lists copied into the `imstkVecData` and then set in the mesh via `initialize`.
What i'd expect to see would be us to be able to rebuild the mesh data throught the `shared_ptr` handle the the mesh provides to its points and triangle structures, it seems that the current implementation works around issue #297. If we can just modify the meshes data structure (and fix #298) the allocations would stop or at least occur at a different frequency.
The use of a local list means that every new point in every new iteration will incur an allocation, even a move to a member local intermediary `std::vector` would allow that system to amortize these allocations over time and eventual once a maximum is reached not allocate per frame (at the cost of local storage in thehttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/300texture swaped in runtime ?2021-04-05T20:57:31-04:00huiqiTian222texture swaped in runtime ?i just noticed there is bug fixed iMSTK/iMSTK!553.
but still i can not change texture or set Color in the runtime, here is my core code.
curSliceIndex is changed, but texture has no effort.
```
imstk::connect<MouseEvent>(viewer->getMo...i just noticed there is bug fixed iMSTK/iMSTK!553.
but still i can not change texture or set Color in the runtime, here is my core code.
curSliceIndex is changed, but texture has no effort.
```
imstk::connect<MouseEvent>(viewer->getMouseDevice(), &MouseDeviceClient::mouseScroll,
[&](MouseEvent* e) {
if (e->m_scrollDx > 0.0) {
if (curSliceIndex < 22) {
curSliceIndex++;
Scene->getSceneObject("slice")->getVisualModel(0)->getRenderMaterial()->addTexture(texture[curSliceIndex]);
}
}
if (e->m_scrollDx < 0.0) {
if (curSliceIndex > 0) {
curSliceIndex--;
Scene->getSceneObject("slice")->getVisualModel(0)->getRenderMaterial()->addTexture(texture[curSliceIndex]);
}
}
std::cout << "sliceIndex:" << curSliceIndex << std::endl;
});
```
thans for your patience.