From 1885ce847e10498d239fbaed341526e62c4366c1 Mon Sep 17 00:00:00 2001 From: Zachary Ferguson Date: Sat, 3 Aug 2024 00:59:27 -0400 Subject: [PATCH] Update to v1.3.0 --- docs/source/_static/versions.json | 13 ++-- docs/source/changelog.rst | 98 ++++++++++++++++++++++++++++++- docs/source/cpp.rst | 2 +- 3 files changed, 105 insertions(+), 8 deletions(-) diff --git a/docs/source/_static/versions.json b/docs/source/_static/versions.json index 9cc88dd00..8cf687c47 100644 --- a/docs/source/_static/versions.json +++ b/docs/source/_static/versions.json @@ -3,17 +3,18 @@ "title": "main", "aliases": ["latest", "head"] }, { - "version": "https://ipctk.xyz/v1.2.1", - "title": "v1.2.1", + "version": "https://ipctk.xyz/v1.3.0", + "title": "v1.3.0", "aliases": ["stable"] +}, { + "version": "https://ipctk.xyz/v1.2.1", + "title": "v1.2.1" }, { "version": "https://ipctk.xyz/v1.2.0", - "title": "v1.2.0", - "aliases": ["stable"] + "title": "v1.2.0" }, { "version": "https://ipctk.xyz/v1.1.1", - "title": "v1.1.1", - "aliases": ["stable"] + "title": "v1.1.1" }, { "version": "https://ipctk.xyz/v1.1.0", "title": "v1.1.0" diff --git a/docs/source/changelog.rst b/docs/source/changelog.rst index d1767de60..ab96ee962 100644 --- a/docs/source/changelog.rst +++ b/docs/source/changelog.rst @@ -6,6 +6,102 @@ Changelog .. role:: cmake(code) :language: cmake +v1.3.0 (Aug 03, 2024) +--------------------- + +- Separated the collision set and potential computations. This allows us to more easily add new potentials in the future. This will require updating calls to ``compute_potential_*``. See the `tutorial `__ for details. +- Add a ``Barrier`` class to enable dynamic selection of barrier function. +- Add a ``NarrowPhaseCCD`` class to enable dynamic selection of narrow-phase CCD method. + +.. _details-4: + +Details +~~~~~~~ + +- Refactor potentials in `#83 `__ + + - Replace "constraint" and "contact" names with "collision" + - Removed ``compute_potential_*`` from ``Collision`` and ``Collisions`` + - Add a new class hierarchy ``Potential`` which represents computing the sum of individual potentials per collision + + - Implement the barrier potential and friction dissipative potential as Potentials: ``BarrierPotential`` and ``FrictionPotential`` + + - Now, ``Collisions`` serve solely as the set of active collisions + - Add the distance mollifier to all collisions with a ``is_mollified()`` function + + - The default mollifier is $m(x) = 1$, and only ``EdgeEdgeCollision`` overrides this + + - Remove versions of ``compute_distance`` and ``ccd`` from ``CollisionStencil`` which take the full mesh as input + + - Instead, expose the versions that take the collision stencil's vertex positions directly + +- Polymorphic barrier in `#84 `__ + + - Make the barrier function an object so it can be changed at runtime + - Add a virtual class ``Barrier`` as an interface for generic barriers + - Add ``ClampedLogBarrier`` class which implements the smoothly clamped log barrier functions from [Li et al. 2020] + - ``barrier_gradient`` and ``barrier_hessian`` renamed to ``barrier_first_derivative`` and ``barrier_second_derivative`` respectively + - Co-authored by `@arvigj `__ + +- Update compiler warnings in `#88 `__ + + - Add ``-Werror=enum-conversion`` and ``-Wfloat-conversion`` + +- Fix 🐛 hash when not using Abseil in `#90 `__ +- Clean-up SpatialHash Broad Phase in `#91 `__ + + - Replace ``IPC_TOOLKIT_WITH_CORRECT_CCD`` with ``IPC_TOOLKIT_WITH_INEXACT_CCD`` + + - Always include Tight Inclusion CCD because it is used by Nonlinear CCD + + - Add support for face-face collision (not used anywhere but for completeness and future-proof nonlinear face-face) + - Add and use generic functions to ``SpatialHash`` + - Replace ``camelCase`` with ``snake_case`` in ``SpatialHash`` and ``HashGrid`` + +- Update Scalable CCD in `#92 `__ + + - Updated Scalable CCD (i.e., Sweep and Tiniest Queue and CUDA Tight Inclusion CCD) to the `unified repository `__ with support for generic collision pairs. + - Renamed ``SWEEP_AND_TINIEST_QUEUE`` to ``SWEEP_AND_PRUNE`` to reflect that it is a standard implementation of the sweep and prune algorithm (see, e.g., "Real-Time Collision Detection" [Ericson 2004]) + - Renamed ``SWEEP_AND_TINIEST_QUEUE_GPU`` to ``SWEEP_AND_TINIEST_QUEUE`` to reflect that it is the only existing implementation of the sweep and tiniest queue algorithm + +- Mark single argument constructors explicit in `#93 `__ + + - Mark ``BarrierPotential(double)`` and ``FrictionPotential(double)`` as explicit constructors to avoid implicit conversions from double + +- Fix compatibility with the latest Eigen by `@teseoch `__ in `#94 `__ +- Add clang-format check action in `#96 `__ +- Add new project PSD option by `@Huangzizhou `__ in `#95 `__ + + - Instead of clamping the negative eigenvalues to zero, add the option to flips the sign of negative eigenvalues according to `[Chen et al. 2024] `__ + +- Fix 🐛 Python bindings for Numpy 2 in `#100 `__ +- Make faces an optional parameter to ``CollisionMesh`` in `#105 `__ +- Fix Python documentation by @rc in `#108 `__ +- Polymorphic CCD in `#110 `__ + + - Add narrow phase CCD parent class; pass CCD object to choose method + - Replace ``tolerance`` and ``max_iterations`` parameters with ``const NarrowPhaseCCD& narrow_phase_ccd`` parameter + - ``NarrowPhaseCCD`` is a virtual class containing the CCD methods for point-point, point-edge, edge-edge, and point-triangle CCD + - ``NarrowPhaseCCD`` is implemented by ``InexactCCD``, ``TightInclusionCCD``, and ``AdditiveCCD`` classes + - **[Breaking]** The optional parameter order to ``is_step_collision_free`` and ``compute_collision_free_stepsize`` is changed from + + .. code:: cpp + + const BroadPhaseMethod broad_phase_method = DEFAULT_BROAD_PHASE_METHOD, + const double min_distance = 0.0, + const double tolerance = DEFAULT_CCD_TOLERANCE, + const long max_iterations = DEFAULT_CCD_MAX_ITERATIONS); + + to + + .. code:: cpp + + const double min_distance = 0.0, + const BroadPhaseMethod broad_phase_method = DEFAULT_BROAD_PHASE_METHOD, + const NarrowPhaseCCD& narrow_phase_ccd = DEFAULT_NARROW_PHASE_CCD); + + - The inexact floating-point CCD can be enabled beside the Tight Inclusion CCD rather than replacing it + v1.2.1 (Jul 12, 2024) --------------------- @@ -94,7 +190,7 @@ Details v1.1.1 (Aug 18, 2023) --------------------- -* Logo by @zfergus in `#52 `__ +* Logo by `@zfergus `__ in `#52 `__ * Fix vertex-vertex :cpp:`==` and :cpp:`<` functions to be order independent * This allows vertex-vertex constraints merge correctly diff --git a/docs/source/cpp.rst b/docs/source/cpp.rst index c86b9d69e..434e24749 100644 --- a/docs/source/cpp.rst +++ b/docs/source/cpp.rst @@ -24,7 +24,7 @@ C++ :end-before: .. tip:: - If your :cmake:`IPC_TOOLKIT_GIT_TAG` is a tag (e.g. ``v1.2.1``), then you can use the :cmake:`FetchContent_Declare` argument :cmake:`GIT_SHALLOW TRUE` to download only a single commit. Otherwise, you should use the default :cmake:`GIT_SHALLOW FALSE`. + If your :cmake:`IPC_TOOLKIT_GIT_TAG` is a tag (e.g. ``v1.3.0``), then you can use the :cmake:`FetchContent_Declare` argument :cmake:`GIT_SHALLOW TRUE` to download only a single commit. Otherwise, you should use the default :cmake:`GIT_SHALLOW FALSE`. .. include:: ../../README.md :parser: myst_parser.sphinx_