Skip to content

Releases: Q-Minh/PhysicsBasedAnimationToolkit

v0.0.11

05 Oct 14:51

Choose a tag to compare

What's Changed

  • Many breaking changes to FEM API which removes the use of references, so that we use plain arrays as much as possible. This enables much flexibility, especially when it comes to serialization/deserialization
  • We now link to HDF5 and have an API to do serialization/deserialization!
  • New SDF module that enables building and querying (composite) SDFs. This comes with a super cool SDF editor which allows users to leverage polyscope's new volume grids to build/modify/visualize SDFs and save/load them.
  • Bunch of other stuff that I won't list!

Full Changelog: v0.0.10...v0.0.11

v0.0.10

09 Nov 05:13

Choose a tag to compare

Full Changelog: v0.0.9...v0.0.10

Changes:

  • Upgrade Eigen version to 3.4.9
  • Implement moment fitting to enable dynamic quadrature rule creation
  • Update some FEM operators (HyperElasticPotential, LaplacianMatrix, Gradient) to support dynamic quadrature
  • Fix stupid double quote bug in fem.py

v0.0.9

05 Nov 03:43

Choose a tag to compare

Full Changelog: v0.0.8...v0.0.9

Changes:

  • Simplify pbat.fem interface by exposing one-liner function call to construct your classical FEM matrices
  • Support higher-order parameter fields like mass density, loading, material parameters, by defining them at quadrature points
  • Enhance and improve our mini library for compile-time matrix computations, now usable from both CPU and GPU code
  • Use mini library throughout the code base to make fem, geometry and physics code device-agnostic.
  • We also expose helper functions to get/set mini matrices from/to memory buffers. This allows us to easily implement algorithms on both CPU and GPU with minimal coding.
  • We implement a VBD integrator on the CPU, and make the GPU VBD integrator follow the same construction interface via vbd::Data, a builder type.
  • The vbd.py example can now run on both CPU and GPU!

Bug fixes:

  • Our type-erased HyperElasticPotential interface was double allocating/deleting underlying concrete potential types. We make sure that only the actually correct underlying potential is chosen.

v0.0.8

21 Oct 17:04
eee0844

Choose a tag to compare

Changes

  • New VBD implementation on the GPU. Does not support contacts yet. Supports alternative adaptive initialization strategy to VBD paper's proposed strategy.
  • Added nested cage generation tool.
  • Upgraded the repository's README significantly for better aesthetics and documentation on using our GPU features.
  • Included compilation of GPU code on the CI servers in pyinstall.yml
  • Split up PyPI package into pbatoolkit and pbatoolkit-gpu to allow users to use our GPU features more easily.

Full Changelog: v0.0.7...v0.0.8

v0.0.7

18 Sep 20:49

Choose a tag to compare

What's Changed

  • Add Incremental Potential Contact (IPC) Python example using pbatoolkit as the elastodynamics engine
  • Support optional elastic element hessian SPD projections
  • Add a parallelized Sweep and Prune GPU implementation for broad phase collision detection
  • Implemented various C++ goodies for simpler GPU programming (i.e. device buffers, queues, stacks, lists, etc.)
  • Allow Windows system search paths to be examined for DLL resolution when importing pbatoolkit
  • Implement XPBD on the GPU using stable neo-Hookean constraints and vertex-triangle contact constraints
  • Implement a parallelized linear BVH data structure on the GPU for broad phase overlap and nearest neighbour queries.

New Contributors

Full Changelog: v0.0.6...v0.0.7

v0.0.6

18 Jul 19:22

Choose a tag to compare

Full Changelog: v0.0.5...v0.0.6

Changes:

  • Implement and test optional integration to fast linear solvers (SuiteSparse's Cholmod and Intel MKL's Pardiso). MKL Pardiso is untested and has errors.
  • Specify versioned numpy and scipy python dependencies in pyproject.toml
  • Refactor CMake sources (facilitate shared builds, bundle transitive dependencies in Python bindings installation, expose better CMake configure presets)
  • Enable on demand profiling for pbatoolkit
  • Simplify the Python FEM bindings using type erasure to minimize binary size

v0.0.5

12 Jul 21:45

Choose a tag to compare

Changes:

  • Make sure dependencies have version requirements (numpy 2 broke the Python bindings)
  • Eliminate newlines in Python's f-strings since there are parsing problems in older Python versions
  • Create cross-platform local pip installation github workflow
  • Include macos images in wheels workflow (PyPI package release)
  • Fix compiler errors on macos images' targeting AppleClang
  • Publish package with on-demand profiling (as opposed to automatic)

v0.0.4

10 Jul 01:16

Choose a tag to compare

Changes:

  • Write tutorials on FEM using pbatoolkit
  • Add/modify FEM operators to facilitate use in matrix operations (shape function matrix, quadrature matrix, gradient, etc.)
  • Expose more library internals to make Python scripting more flexible (quadrature points and weights on mesh, shape function gradients, etc.)

v0.0.3

26 Jun 19:22

Choose a tag to compare

Full Changelog: https://github.com/Q-Minh/PhysicsBasedAnimationToolkit/commits/v0.0.3

This is pbatoolkit's first release! It mostly includes the following features:

  • FEM goodies (mass, laplacian, gradient, hyper elastic potential, load) for meshes in dimensions 1, 2 and 3. We currently support Lagrange shape functions up to order 3 for line, triangle, quadrilateral, tetrahedral and hexahedral elements. For non-linear elements such as quads and hexes, shape function gradients and jacobian are potentially inaccurate (haven't tested).
  • Efficient sparse matrix construction.
  • Saint-Venant Kirchhoff and Stable NeoHookean material models.
  • Axis-aligned bounding volume hierarchies for triangles and tetrahedra.
  • Automatic profiling data generation to Tracy.

Our code is mostly tested on tetrahedral element meshes, although it is written to be element-agnostic and dimension-agnostic. Sample code demonstration the use of pbatoolkit is found in the examples folder.