Commit 10f8e2bf authored by Andrew Wilson's avatar Andrew Wilson 🐘
Browse files

Merge branch 'ReleaseDocUpdate' into 'master'

DOC: Update releases.rst

See merge request !700
parents cdd21144 1d25beea
......@@ -2,6 +2,287 @@
Release 5.0.0
**Announcement: iMSTK 5.0.0**
This release features major improvements to the collision detection and response capabilities, rendering, and hardware interface modules. Numerous refactors and bug fixes were made across the board to improve extensibility. The testing infrastructure and coverage was improved substantially. Numerous medically relevant examples were added. Most notably, v5.0 comes with a beta version of the C and C# wrappers for iMSTK along with documentation and examples.
Here is a comprehensive list of changes made for this release.
**Andrew Wilson**
- Extended PBD model to allow needle-tissue interactions (`07819c60 <>`_)
- PBDTissueSurfaceNeedleContact: Simple approach to needle insertion of deformable 2d triangle mesh tissue with rigid body haptics.
- RbdSDFNeedle: Simple approach to needle insertion of static tissue for which a rigid body needle may rotate/pivot before being fully inserted.
- PBDTissueVolumeNeedleContact: More involved approach to needle insertion of deformable tetrahedral mesh tissues with rigid body haptics. Uses two-way embedded coupling.
- PBDStaticSuture: Suture thread and needle vs static geometry. Uses custom arc to point constraint. Suture thread non functional yet. Only surface constrained.
- The collision detection architecture was comprehensively refactored and updated (`ed212e8f <>`_)
- PbdObject vs CollidingObject possible: PbdObject vs Rigid, SPH, FEM, any CollidingObject are now possible.
- Pbd vs Primitives Collision: PbdCollisionConstraint’s and PbdCollisionHandler now use pointers and values instead of DataArray's allowing collision between something that doesn’t have a vertex buffer.
- PbdPointToEdgeConstraint: Allows mesh to curved surface collision when used together with point-to-point and point-to-triangle.
- MeshToMeshBruteForceCD New Implementation: Able to resolve deep contacts in manifold shapes. Stable and accurate method, not performant for large meshes.
- Virtual constraint addition for Pbd and Rbd models: Allows redefinition of contact response models. Used for needles, drills, thread holes, cutting, etc.
- PbdRigidCollision interaction: Two-way collision between RigidObject2 and PbdObject. Gives response between both objects. (useful for haptics, no reaction force on the RigidObject2 is felt without it). See PBDTissueContactExample.
- CollisionDebugObject: Can be added to the scene to display CollisionData as faces, edges, points, or directions/arrows.
- SurfaceMeshToSphereCD: Triangle mesh to sphere collision. Demonstrated in PbdClothCollisionExample & RbdSurfaceMeshToSphereCDExample.
- Restitution and friction added to PbdModel
- Light properties can be changed at runtime, attenuation exposed (`2d9a78c1 <>`_)
- Textures can now be setup via ImageData instead of filenames, swapped at runtime, & pixels modified at runtime (`6e79fb81 <>`_)
- VisualModels can be added/remove from the scene at runtime. (`f1e55106 <>`_)
- Camera now provides projection matrix and eye rays (`bdbffbb8 <>`_)
- Added OrientedBox to geometry (replaces Cube) (`845dd6c5 <>`_)
- PbdConstraintFunctor was added that allows customization of constraints generated for a PbdModel. (`e3a9753f <>`_)
- Added strides to PBD bending model. Bend constraints can now be generated for differing strides allowing stiffer threads/strings at lower iterations. (`350adc5f <>`_)
- Added RenderMaterial::ShadingModel::None allowing shading to be turned off where necessary (`e7811080 <>`_)
- Added RenderMaterial::DisplayMode::Normals that displays normal directions using arrows (`614e296e <>`_)
- Added Texture Projection filter that projects attributes (eg: uv coords) via closest point projection (`17fb7679 <>`_)
- Cell attributes were added to LineMesh (`08b08212 <>`_)
- LineMeshes can be read in via VTK file type (`6e20e88b <>`_)
- SceneObject::visualUpdate virtual function is now called before every render for every SceneObject in the scene (`fa95ff5f <>`_)
- Added disposable syringe, orthopedic drill, c6 needle 3d models to the imstk data
- Performance improvements to SPH (`6a2bb089 <>`_)
- Performance improvements to Dense LSM (`d2a2b88f <>`_)
- Remove nonfunctional Pulse (`3b41b3e1 <>`_)
- Remove nonfunctional Vulkan (`5e7eddbc <>`_)
**Documentation Updates**
- PbdModel documentation updated (`6eb4a04a <>`_)
- CollisionDetection documentation updated (`2d9a78c1 <>`_)
- PbdBendConstraintFunctor testing (`dc431620 <>`_)
- CollisionDetection testing (`07819c60 <>`_), `3b19c782 <>`_, `91d09f63 <>`_)
- PbdCollisionConstraint testing (`ed212e8f <>`_)
- PGSSolver testing (`567f126e <>`_)
**Harald Scheirich**
- VRPN Analog, Button and Tracker devices. No limit to VRPN in iMSTK anymore (co-authored by Khalil Oumimoun) (`0f02a666 <>`_)
- Improved testing capabilities. Reduced overhead in testing infrastructure removing auto generated classes. (`3059ffbe <>`_)
- Added Git LFS-based external data management for data required by tests and examples. (`7eb3d176 <>`_)
- Update gtest (`a4d30ec5 <>`_)
**Documentation Updates**
- Improve C# Wrapper Documentation (`28050bd3 <>`_)
- Added documentation for external Data and dependency update process (`a4051249 <>`_)
- Added coding style guidelines (`1f450dcf <>`_)
- DataArray testing (`99f18c24 <>`_, `8b08c873 <>`_)
- Device & Control testing (`1b76fed9 <>`_)
- EventObject testing (`538915c8 <>`_)
- GeometryAlgorithm testing (`d061764a <>`_)
- SurfaceMesh tests (`e7dfcb23 <>`_)
- Render testing (`57725ee0 <>`_)
**Sreekanth Arikatla**
- Remove plotter utils (`5508d197 <>`_)
- Remove APIUtils (`554cde05 <>`_)
- Cleanup Vulkan references and remove related external dependencies imgui, glm (`d6cea42b <>`_)
- Scene bounding box computation (`458fa955 <>`_)
- PbdConstraintFunctor testing (`a55301f1 <>`_)
- Geometry testing (`613402e1 <>`_, `84caab04 <>`_)
- CollisionDetection testing (`07819c60 <>`_, `3a135f83 <>`_, `6b5a3685 <>`_, `2e6ad2aa <>`_, `266ea1b3 <>`_, `64363cd1 <>`_, `2f9e385f <>`_, `666467bd <>`_)
- Scene testing (`cfdbe9e3 <>`_)
- Enabled nightly readTheDocs build.
**Jianfeng Yen**
- SWIG-based generation of C and C# wrappers along with C# examples and tests (See Source/Wrappers/csharp) (`c11d712c <>`_)
- Performance Improvements to FEM (`c9f002ec <>`_)
**Ye Han**
- Triangular mesh cutting via local remeshing (`e7c01ead <>`_)
- Added SurfaceMeshToCapsuleCD static collision method (`42a321fb <>`_)
**Khalil Oumimoun**
- VRPN Analog, Button and Tracker devices (`0f02a666 <>`_)
**Aron Bray**
- Integration tests for rendering and geometry modules (`96f084a1 <>`_)
**Hong Li**
- Extension of PBD Constraints to inflate tissue (`3bf08161 <>`_)
**Furkan Dinc**
- Screen space ambient occlusion support (`ab38797d <>`_)
**Ben Boeckel**
- Added Linux to the merge request builds
- Fixed issue on the MSVC 2017 merge request build
**Api Changes**
- `PbdPointDirectionConstraint` replaced with `PbdPointToPointConstraint`.
- `PbdCollisionConstraint::initConstraint` now use `VertexMassPair` structs for initialization.
PbdPointPointConstraint constraint;
{ vertexA, invMassA, vertexVelocityA },
{ vertexB, invMassB, vertexVelocityB },
stiffnessA, stiffnessB);
- `PbdCollisionConstraint::projectConstraint` updated, accepts no parameters anymore as it uses pointer values provided during `PbdCollisionConstraint::initConstraint`.
- `PbdCollisionSolver::addConstraint` now only accepts a constraint, no buffers.
std::vector<PbdCollisionConstraint*>* constraints;
// ...Fill out constraints...
- `CollisionDetection` replaced with `CollisionDetectionAlgorithm`. Now subclasses `GeometryAlgorithm` with inputs given via `GeometryAlgorithm::setInput`.
// Either order is ok (mesh, sphere) or (sphere, mesh)
imstkNew<SurfaceMeshToSphereCD> collisionDetect;
collisionDetect->setInput(mySurfMesh, 0);
collisionDetect->setInput(mySphere, 1);
// Output order dependent on input order
collisionDetect->getCollisionData()->elementsA; // CD elements for the mesh
collisionDetect->getCollisionData()->elementsB; // CD elements for the sphere
- Collision interactions renamed, more consistent naming, removal of "Pair".
- `PbdObjectCollisionPair` renamed to `PbdObjectCollision`.
- `SphObjectCollisionPair` renamed to `SphObjectCollision`.
- `RigidObjectLevelSetCollisionPair` renamed to `RigidObjectLevelSetCollision`.
- `RigidObjectCollisionPair` renamed to `RigidObjectCollision`.
- `PbdObjectCollision` can now be constructed with both PbdObject+PbdObject or PbdObject+CollidingObject
imstkNew<PbdObjectCollision> interaction1(myPbdObjectA, myPbdObjectB);
imstkNew<PbdObjectCollision> interaction(myPbdObjectA, myCollidingObjectB);
- `RigidObjectCollision` can now be constructed with both RigidObject2+RigidObject2 or RigidObject2+CollidingObject
imstkNew<RigidObjectCollision> interaction1(myRbdObjectA, myRbdObjectB);
imstkNew<RigidObjectCollision> interaction(myRbdObjectA, myCollidingObjectB);
- `OrientedBox` should be used in place of `Cube`.
Vec3d center = Vec3d(0.0, 0.0, 0.0);
Vec3d extents = Vec3d(0.5, 0.5, 0.5); // Does not have to be a cube
imstkNew<OrientedBox> box(center, extents);
- `RenderMaterial` now uses doubles, not floats.
- Removed Octree collision in `SurfaceMeshToSurfaceMeshCD`. The octree is still present but pending touch ups.
- `RigidBodyModel2` and corresponding classes moved from expiremental to main imstk namespace.
- `DebugRenderGeometry` replaced with `DebugGeometryObject`. Usage as follows:
imstkNew<DebugGeometryObject> debugGeometryObj;
// Can be called anytime, normally during runtime
debugTriangles->appendVertex(Vec3d(0.0, 1.0, 5.0), Color::Red);
debugTriangles->appendLine(p1, p2, Color::Green);
debugTriangles->appendArrow(p1, p2, Color::Orange);
debugTriangles->appendTriangle(p1, p2, p3, Color::Blue);
- `DebugRenderDelegate`'s replaced with the already existing `RenderDelegate`'s.
- Removed Vulkan, Pulse, apiUtilities, imgui
- `NarrowPhaseCD` namespace functions moved and refactored into more general static intersection functions in `CollisionUtils`.
- Name was removed from the light class, light names are managed by the Scene
imstkNew<DirectionalLight> light;
light1->setFocalPoint(Vec3d(-1.0, -1.0, -1.0));
scene->addLight("light", light);
- Removed `Real`'s, use `double`'s instead.
- `RigidBodyModel` now optionally built, being deprecated in place of `RigidBodyModel2` as it's more extensible.
- `PBDModelConfig::m_defaultDt` removed, use `PBDModelConfig::m_dt` instead.
- `PBDModelConfig::m_collisionIterations` removed. Iterations can be set per collision solver, given per interaction.
auto pbdHandler = std::dynamic_pointer_cast<PBDCollisionHandling >(interaction->getHandlerA());
- `PbdModelConfig::enableBendConstraint` should be preferred when using bend constraints with varying strides. If `PbdModelConfig::enableConstraint(PbdConstraint::Type::Bend)` is used, stride will always be 1.
- `PbdModel::initializeConstraints` functions removed. Replaced with extensible `PbdConstraintFunctor`.
- `Texture` may also be constructed with an `ImageData`
std::shared_ptr<ImageData> diffuseImage = MeshIO::read<ImageData>(iMSTK_DATA_ROOT "/textures/fleshDiffuse.jpg");
material->addTexture(std::make_shared<Texture>(diffuseImage, Texture::Type::Diffuse));
- Enums removed in places were extensibility desired.
- `Geometry::Type` removed. Use `Geometry::getTypeName()` instead.
- `CollisionDetection::Type` removed. Use `CollisionDetectionAlgorithm::getTypeName()` instead.
- `CollisionHandling::Type` removed. Use `CollisionHandling::getTypeName()` instead.
Andrew Wilson
Harald Scheirich
Sreekanth Arikatla
Jianfeng Yen
Ye Han
Khalil Oumimoun
Aron Bray
Hong Li
Furkan Dinc
Ben Boeckel
Andinet Enquobahrie
Release 4.0.0
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment