iMSTK issueshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues2021-01-08T17:24:27-05:00https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/173Remove Renderer and its subclass from the user API2021-01-08T17:24:27-05:00Sreekanth ArikatlaRemove Renderer and its subclass from the user APIRemove `Renderer` and its subclass from the user API. The user should only interact with the `Viewer` class.
A couple of options:
* Nest render class inside the viewer
* Make every member of `Render` and its subclasses private. Use `...Remove `Renderer` and its subclass from the user API. The user should only interact with the `Viewer` class.
A couple of options:
* Nest render class inside the viewer
* Make every member of `Render` and its subclasses private. Use `friend` to access `Renderer` inside the `Viewer` classeshttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/172Collidable objects without collision geometry2018-11-12T12:35:59-05:00Sreekanth ArikatlaCollidable objects without collision geometryCrash can occur if the collision mesh is not supplied to the colidable object.Crash can occur if the collision mesh is not supplied to the colidable object.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/171Lack of warning when two scene objects are created with the same name2018-09-15T12:18:05-04:00Sreekanth ArikatlaLack of warning when two scene objects are created with the same namethe second scene object is not added to the scene and there is no warning thrownthe second scene object is not added to the scene and there is no warning thrownhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/170Bug due to the usage of vtkCustomePolyDataMapper2018-11-12T11:40:00-05:00Jean-Baptiste VIMORTBug due to the usage of vtkCustomePolyDataMapperThe bug is appearing when trying to display meshes in project external to iMSTK (everything was working well inside iMSTK: the sandbox for example)
This issue was mainly due to the usage of `vtkCustomePolyDataMapper`
It can be fixed th...The bug is appearing when trying to display meshes in project external to iMSTK (everything was working well inside iMSTK: the sandbox for example)
This issue was mainly due to the usage of `vtkCustomePolyDataMapper`
It can be fixed thanks to the modification (done by @alexis-girault) contained in the attached diff file ([CustomPolyDataMapperFix.patch](/uploads/b822626cf573560a37a06249c1499c33/CustomPolyDataMapperFix.patch))
The main issue is fixed by this modification in `imstkVTKRenderDelegate.h`:
```diff
VTKRenderDelegate()
{
m_actor = vtkSmartPointer<vtkActor>::New();
- m_mapper = vtkSmartPointer<VTKCustomPolyDataMapper>::New();
+ m_mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
m_transform = vtkSmartPointer<vtkTransform>::New();
m_actor->SetMapper(m_mapper);
m_actor->SetUserTransform(m_transform);
}
vtkSmartPointer<vtkActor> m_actor;
- vtkSmartPointer<VTKCustomPolyDataMapper> m_mapper;
+ vtkSmartPointer<vtkPolyDataMapper> m_mapper;
vtkSmartPointer<vtkTransform> m_transform;
};
}
```
For example, here is what could be observed with and without the bug (the lower mandibule displayed in both cases is a thetraedric mesh, which isn't affected by the bug):
![NotWorking](/uploads/42dbb6b60896c2d57fd29018ca51b52e/NotWorking.PNG)
![Working](/uploads/5659fb65f03ded0e811c0a1ad984b479/Working.PNG)Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/169Assimp build issue with 3.3.12022-04-20T09:33:17-04:00Alexis GiraultAssimp build issue with 3.3.1Issue introduced here when using Assimp 3.3.1: https://gitlab.kitware.com/iMSTK/iMSTK/commit/34170af1540b9d7a16d296636bf62016eff8d99c#note_350649
On mac, I now can't build with the following error:
```
/Users/agirault/Projects/imstk/re...Issue introduced here when using Assimp 3.3.1: https://gitlab.kitware.com/iMSTK/iMSTK/commit/34170af1540b9d7a16d296636bf62016eff8d99c#note_350649
On mac, I now can't build with the following error:
```
/Users/agirault/Projects/imstk/rel/External/Assimp/src/code/D3MFImporter.cpp:230:29: error: invalid operands to binary expression ('float (*)(const char *, const char *)' and 'nullptr_t')
vertex.z = ai_strtof>(xmlReader->getAttributeValue(D3MF::XmlTag::z.c_str()), nullptr);
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
Bug is here: https://github.com/assimp/assimp/blob/v3.3.1/code/D3MFImporter.cpp#L230
Not sure why dashboard are fine, for any platform.
@NickMilef @sreekanth-arikatla @jbvimort I remember talking about upgrading to [Assimp 4.0.1](https://github.com/assimp/assimp/tree/v4.0.1) at some point. Do you remember the reason why we didn't?https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/168Fresnel component appears to be incorrect at certain angles2018-03-09T10:37:25-05:00Zhaohui XiaFresnel component appears to be incorrect at certain anglesI think due to a precision issue, the Fresnel calculation becomes negative. This means that artifacts appear at certain angles. This only affects the Vulkan renderer.I think due to a precision issue, the Fresnel calculation becomes negative. This means that artifacts appear at certain angles. This only affects the Vulkan renderer.Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/167Options to preload textures2018-09-15T12:34:34-04:00Zhaohui XiaOptions to preload texturesWhen I add new surface mesh to the scene, the textures are loaded at the same time, causing a delay.When I add new surface mesh to the scene, the textures are loaded at the same time, causing a delay.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/166Write audio interface classes2022-04-20T08:34:16-04:00Sreekanth ArikatlaWrite audio interface classesWrite audio interface classes for SFMLWrite audio interface classes for SFMLhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/165Ability to add render meshes while the simulation is running2018-03-09T10:37:58-05:00Nicholas MilefAbility to add render meshes while the simulation is runningThe ability to add new render meshes while the simulation is running is essential for unbounded problems.The ability to add new render meshes while the simulation is running is essential for unbounded problems.Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/164Add the ability to explicitly set the transform for geometries2018-04-27T11:02:50-04:00Sreekanth ArikatlaAdd the ability to explicitly set the transform for geometriesAt present, one can apply the transform (meaning, append the supplied transform over the previous transform) but not directly overwrite it. While adding this one has to make sure if the transform supplied is rigid transform.At present, one can apply the transform (meaning, append the supplied transform over the previous transform) but not directly overwrite it. While adding this one has to make sure if the transform supplied is rigid transform.Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/163Allow inter mesh maps loadable from external file2019-07-28T15:58:33-04:00Sreekanth ArikatlaAllow inter mesh maps loadable from external fileAt present, the mesh maps are computed at run-time. For large meshes it could take time to do so. It is therefore desirable to have a precomputed map stored in an external file and should be loadable at runtime.At present, the mesh maps are computed at run-time. For large meshes it could take time to do so. It is therefore desirable to have a precomputed map stored in an external file and should be loadable at runtime.https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/162Linux issues2018-04-27T10:57:23-04:00Nicholas MilefLinux issuesI'm making an issue for various Linux issues as I compile it on Linux. Once I get some time, I'll make an MR.
* Assimp issue with "-fPIC" flag:
* https://github.com/assimp/assimp/issues/746
* VTK can't find OpenGL (must use `sudo a...I'm making an issue for various Linux issues as I compile it on Linux. Once I get some time, I'll make an MR.
* Assimp issue with "-fPIC" flag:
* https://github.com/assimp/assimp/issues/746
* VTK can't find OpenGL (must use `sudo apt-get install freeglutv3-dev`)
* https://stackoverflow.com/questions/31170869/cmake-could-not-find-opengl-in-ubuntu
* Libusb 1.0 can't be found (must use `sudo apt-get install libusb-1.0-0-dev`)
* https://stackoverflow.com/questions/4853389/how-to-install-libusb-in-ubuntu
@sreekanth-arikatla @alexis-girault https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/161Enable audio support for Linux and OS X2022-06-29T09:48:49-04:00Sreekanth ArikatlaEnable audio support for Linux and OS XCurrently, audio support is built by default on windows only. This could be extended to Linux and OS XCurrently, audio support is built by default on windows only. This could be extended to Linux and OS Xhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/160Known issues with Vulkan rendering backend2019-06-28T10:54:30-04:00Sreekanth ArikatlaKnown issues with Vulkan rendering backend* [x] The rotation using mouse doesn't work about all axes
* [ ] `RenderMaterial::DisplayMode::WIREFRAME_SURFACE` is not supported yet
* [x] Closing the render window using `esc` key is not supported yet
* [ ] Point rendering not support...* [x] The rotation using mouse doesn't work about all axes
* [ ] `RenderMaterial::DisplayMode::WIREFRAME_SURFACE` is not supported yet
* [x] Closing the render window using `esc` key is not supported yet
* [ ] Point rendering not supported yet
**Not urgent**
* [ ] `Debug` render mode is not fully supported (Nick will expand; also mention axis rendering)
* [ ] Displaying the text on the render window is not supported yet. So `p` doesn't work.
* [x] Add upper-level documentation for setting up Vulkan for the first time
* [x] Multiple examples cannot be run sequentially
* [ ] Do some comparison of frame rates and memory usage between vulkan and vtk backends
* [ ] Add support for Linux and Mac (MoltenVK is apparently open-source now, so Mac support could be a possibility)
Misc.
* [ ] Tetrahedral, hexahedral, line meshes, etc.: will be added to the Vulkan version
* [ ] Certain material properties: will be added overtime, but this is also related to the material editor a bit
* [ ] Interactor features: some of the interactor features aren't implemented yet
* [x] Cubemaps: there isn't support for the traditional variety of cubemaps as implemented in VTK (see latest MR)Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/159'Reset' option doesn't work for NeoHookean type PBD constraint2020-03-08T12:35:13-04:00Sreekanth Arikatla'Reset' option doesn't work for NeoHookean type PBD constraint'Reset' option doesn't work for NeoHookean type PBD constraint'Reset' option doesn't work for NeoHookean type PBD constrainthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/158Auto generate documentation2019-03-07T12:52:47-05:00Sreekanth ArikatlaAuto generate documentationAuto generate documentation files using DoxygenAuto generate documentation files using Doxygenhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/157Improve multithreading2019-07-28T15:42:41-04:00Nicholas MilefImprove multithreadingRight now the multithreading is not safe or efficient. We run each module on a separate thread without any synchronization. The physics module runs on a single thread, saturating that thread, while the rest of the threads barely do any w...Right now the multithreading is not safe or efficient. We run each module on a separate thread without any synchronization. The physics module runs on a single thread, saturating that thread, while the rest of the threads barely do any work. Additionally, there are problems with the modifying state across multiple threads without synchronization, producing this bug (#146). Secondly, there exist problem areas where the performance suffers substantially because the ownership of certain tasks is ambiguous or incorrectly placed (#141).
To solve this, we could use a task-based approach so that the workloads get distributed across all threads. This also helps to ensure thread safety because each task can be arranged to avoid conflicts. This has become a standard in real-time applications to do it this way.
We could look into using a higher-level threading library that supports tasks such as this:
https://www.threadingbuildingblocks.org/
@sreekanth-arikatla @alexis-giraulthttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/156Add configuration files for certain modules2019-07-28T15:58:29-04:00Sreekanth ArikatlaAdd configuration files for certain modulesSome areas where config files could help
1. Scene definitions
2. Global render settings (background, render window properties, render axis etc.)
3. Configuring various scene objects (PBD, FEM, rigid bodies etc.)
What format is the best?Some areas where config files could help
1. Scene definitions
2. Global render settings (background, render window properties, render axis etc.)
3. Configuring various scene objects (PBD, FEM, rigid bodies etc.)
What format is the best?https://gitlab.kitware.com/iMSTK/iMSTK/-/issues/155Improve normal calculation to take into account UV differences2017-09-07T18:30:43-04:00Nicholas MilefImprove normal calculation to take into account UV differencesThis is an edge case, but when a model has UV seams (e.g., two vertices share the same position/normal, but have different UV coordinates), then cracks can appear in tessellated geometry due to different normals.This is an edge case, but when a model has UV seams (e.g., two vertices share the same position/normal, but have different UV coordinates), then cracks can appear in tessellated geometry due to different normals.Nicholas MilefNicholas Milefhttps://gitlab.kitware.com/iMSTK/iMSTK/-/issues/154Rendering architecture discussion2019-03-07T12:52:14-05:00Nicholas MilefRendering architecture discussion**Just a warning, this might be a lot of information to take in at once. Simply put, rendering architectures are influenced by everything.**
As a followup for our meeting, you can see the few slides [here](https://docs.google.com/presen...**Just a warning, this might be a lot of information to take in at once. Simply put, rendering architectures are influenced by everything.**
As a followup for our meeting, you can see the few slides [here](https://docs.google.com/presentation/d/1zwsn4fppSmGqb_vklxMU21mO1wMWlVR6B1BDVBu43no/edit?usp=sharing).
Here are some interesting discussions:
* https://www.gamedev.net/forums/topic/424979-forward-vs-deferred-rendering/
* https://www.gamedev.net/forums/topic/637023-is-clustered-forward-shading-worth-implementing/ (discussing clustered approaches, which we can't do with VTK unless we move to OpenGL 4.3+. It still gives interesting information about the differences between deferred and forward rendering.)
* https://computergraphics.stackexchange.com/questions/146/what-is-the-performance-tradeoff-between-forward-and-deferred-rendering
Basically, this is important to talk about now because it heavily influences how shaders are structured. We can also combine architecture patterns as well.
Here are the big questions:
* (Rendering architecture decision) How much priority to place on:
* translucency?
* material variety (maybe we can list the types of materials to expect)?
* number/types of shadows?
* MSAA?
* What should our G-buffer layout be?
* What's our target hardware?
* What complexity do we want to be the baseline for shading and how physically-based do we want everything?
* http://rtgfx.com/what-is-pbr-really/?
* What options do we want for ambient occlusion? This could influence choices for lighting. It also could determine *when* ambient occlusion calculations occur.
@alexis-girault @sreekanth-arikatla @trudiQ @unihui @HongLi
Also, I can't tag Ken, how would I do that?