Skip to content
Snippets Groups Projects
Commit d0050c3c authored by Andrew Wilson's avatar Andrew Wilson :elephant:
Browse files

Merge branch 'DocUpdate' into 'master'

DOC: Documentation formatting fix

See merge request iMSTK/iMSTK!546
parents 20118cfa 2e9418f4
No related branches found
No related tags found
No related merge requests found
...@@ -37,14 +37,15 @@ Here is a comprehensive list of changes made for this release. ...@@ -37,14 +37,15 @@ Here is a comprehensive list of changes made for this release.
- Topology changes supported - Topology changes supported
- New examples. Many fixed haptics and OpenVR examples. - New examples. Many fixed haptics and OpenVR examples.
- FemurCut - FemurCut
- PBDPicking - PBDPicking
- SDFHaptics - SDFHaptics
- FastMarch - FastMarch
- RigidBodyDynamics2 - RigidBodyDynamics2
- PBDCloth-Remap - PBDCloth-Remap
- SPH-Obj-SDFInteraction - SPH-Obj-SDFInteraction
- Vessel - Vessel
- imstkNew - imstkNew
- Refactor geometry base class transforms - Refactor geometry base class transforms
- OpenVR, Keyboard, and Mouse Device Refactoring - OpenVR, Keyboard, and Mouse Device Refactoring
...@@ -81,66 +82,68 @@ Here is a comprehensive list of changes made for this release. ...@@ -81,66 +82,68 @@ Here is a comprehensive list of changes made for this release.
- OpenVR, Keyboard, and Mouse device refactoring: Mouse and Keyboard now provided under the same DeviceClient API as our haptic devices. You may acquire these from the viewer. They emit events, you can also just ask them about their state. - OpenVR, Keyboard, and Mouse device refactoring: Mouse and Keyboard now provided under the same DeviceClient API as our haptic devices. You may acquire these from the viewer. They emit events, you can also just ask them about their state.
```cpp ::
std::shared_ptr<KeyboardDeviceClient> keyboardDevice = viewer->getKeyboardDevice();
std::shared_ptr<MouseDeviceClient> mouseDevice = viewer->getMouseDevice(); std::shared_ptr<KeyboardDeviceClient> keyboardDevice = viewer->getKeyboardDevice();
std::shared_ptr<MouseDeviceClient> mouseDevice = viewer->getMouseDevice();
std::shared_ptr<OpenVRDeviceClient> leftVRController = vrViewer->getVRDevice std::shared_ptr<OpenVRDeviceClient> leftVRController = vrViewer->getVRDevice
```
- Controls: Our controls are now abstracted. Any control simply implements a device. You may subclass KeyboardControl or MouseControl. We also provide our own default controls: - Controls: Our controls are now abstracted. Any control simply implements a device. You may subclass KeyboardControl or MouseControl. We also provide our own default controls:
```cpp ::
// Add mouse and keyboard controls to the viewer
imstkNew<MouseSceneControl> mouseControl(viewer->getMouseDevice()); // Add mouse and keyboard controls to the viewer
mouseControl->setSceneManager(sceneManager); imstkNew<MouseSceneControl> mouseControl(viewer->getMouseDevice());
viewer->addControl(mouseControl); mouseControl->setSceneManager(sceneManager);
viewer->addControl(mouseControl);
imstkNew<KeyboardSceneControl> keyControl(viewer->getKeyboardDevice()); imstkNew<KeyboardSceneControl> keyControl(viewer->getKeyboardDevice());
keyControl->setSceneManager(sceneManager); keyControl->setSceneManager(sceneManager);
keyControl->setModuleDriver(driver); keyControl->setModuleDriver(driver);
viewer->addControl(keyControl); viewer->addControl(keyControl);
```
- Event System: Key, mouse, haptic, and openvr device event callback can be done like this now. - Event System: Key, mouse, haptic, and openvr device event callback can be done like this now.
- You may alternatively use queueConnect as long as you consume it somewhere (sceneManager consumes all events given to it).
- Your own custom events may be defined in iMSTK subclasses with the SIGNAL macro. See [KeyboardDeviceClient](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/Devices/imstkKeyboardDeviceClient.h) as an example. - You may alternatively use queueConnect as long as you consume it somewhere (sceneManager consumes all events given to it).
- Your own custom events may be defined in iMSTK subclasses with the SIGNAL macro. See [KeyboardDeviceClient](https://gitlab.kitware.com/iMSTK/iMSTK/-/blob/master/Source/Devices/imstkKeyboardDeviceClient.h) as an example.
::
```cpp connect<KeyEvent>(viewer->getKeyboardDevice(), &KeyboardDeviceClient::keyPress,
connect<KeyEvent>(viewer->getKeyboardDevice(), &KeyboardDeviceClient::keyPress, sceneManager, [&](KeyEvent* e)
sceneManager, [&](KeyEvent* e) {
{ std::cout << e->m_key << " was pressed" << std::endl;
std::cout << e->m_key << " was pressed" << std::endl; });
});
```
- Imstk Data Arrays: Data arrays and multi-component data arrays provided. They are still compatible with Eigen vector math. - Imstk Data Arrays: Data arrays and multi-component data arrays provided. They are still compatible with Eigen vector math.
```cpp ::
VecDataArray<double, 3> myVertices(3);
myVertices[0] = Vec3d(0.0, 1.0, 0.0); VecDataArray<double, 3> myVertices(3);
myVertices[1] = Vec3d(0.0, 1.0, 1.0); myVertices[0] = Vec3d(0.0, 1.0, 0.0);
myVertices[2] = myVertices[0] + myVertices[1]; myVertices[1] = Vec3d(0.0, 1.0, 1.0);
myVertices[2] = myVertices[0] + myVertices[1];
std::cout << myVertices[2] << std::endl;
std::cout << myVertices[2] << std::endl;
```
- SimulationManager may now be setup and launched as follows: - SimulationManager may now be setup and launched as follows:
```cpp ::
// Setup a Viewer to render the scene
imstkNew<VTKViewer> viewer("Viewer");
viewer->setActiveScene(scene);
// Setup a SceneManager to advance the scene // Setup a Viewer to render the scene
imstkNew<SceneManager> sceneManager("Scene Manager"); imstkNew<VTKViewer> viewer("Viewer");
sceneManager->setActiveScene(scene); viewer->setActiveScene(scene);
sceneManager->pause(); // Start simulation paused
imstkNew<SimulationManager> driver; // Setup a SceneManager to advance the scene
driver->addModule(viewer); imstkNew<SceneManager> sceneManager("Scene Manager");
driver->addModule(sceneManager); sceneManager->setActiveScene(scene);
driver->start(); sceneManager->pause(); // Start simulation paused
```
imstkNew<SimulationManager> driver;
driver->addModule(viewer);
driver->addModule(sceneManager);
driver->start();
- `VisualObject` typedef removed. Just use `SceneObject`. - `VisualObject` typedef removed. Just use `SceneObject`.
- `HDAPIDeviceServer` renamed to `HapticDeviceManager` - `HDAPIDeviceServer` renamed to `HapticDeviceManager`
...@@ -169,20 +172,21 @@ Here is a comprehensive list of changes made for this release. ...@@ -169,20 +172,21 @@ Here is a comprehensive list of changes made for this release.
**New Features** **New Features**
* Introduction of configurable task-graph and task-based parallelism. - Introduction of configurable task-graph and task-based parallelism.
* Major upgrade to the rendering module (VTK backend) - Major upgrade to the rendering module (VTK backend)
- Upgrade to VTK 9.0
- Realistic fluid rendering using screen space fluids
- Faster particular rendering of fluids
- Addition of physically based rendering
* Upgrade to VTK 9.0 - Addition of 3D image support and volume rendering
* Realistic fluid rendering using screen space fluids - Improved physics models for particle based dynamics: Addition of extended position based dynamics (xPBD)
* Faster particular rendering of fluids - Addition of support for modeling 1D elastic structures with bending stiffness
* Addition of physically based rendering - Addition of faster reduced order deformation models (Linux only)
* Addition of 3D image support and volume rendering - Addition of Reverse Cuthill–McKee algorithm (RCM) for mesh renumbering
* Improved physics models for particle based dynamics: Addition of extended position based dynamics (xPBD) - Major refactoring simulation manager: Improved time stepping policies, multiple scene management and scene controls, addition of async simulation mode
* Addition of support for modeling 1D elastic structures with bending stiffness - Improved capabilities of the geometric utility module: addition of geometric processing filters, New tetrahedral mesh cover generation (based on ray-casting)
* Addition of faster reduced order deformation models (Linux only)
* Addition of Reverse Cuthill–McKee algorithm (RCM) for mesh renumbering
* Major refactoring simulation manager: Improved time stepping policies, multiple scene management and scene controls, addition of async simulation mode
* Improved capabilities of the geometric utility module: addition of geometric processing filters, New tetrahedral mesh cover generation (based on ray-casting)
**Improvements or Refactoring** **Improvements or Refactoring**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment