Releases: Q-Minh/PhysicsBasedAnimationToolkit
Releases · Q-Minh/PhysicsBasedAnimationToolkit
v0.0.11
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
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
Full Changelog: v0.0.8...v0.0.9
Changes:
- Simplify
pbat.feminterface 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
minilibrary for compile-time matrix computations, now usable from both CPU and GPU code - Use
minilibrary 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.pyexample can now run on both CPU and GPU!
Bug fixes:
- Our type-erased
HyperElasticPotentialinterface was double allocating/deleting underlying concrete potential types. We make sure that only the actually correct underlying potential is chosen.
v0.0.8
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
pbatoolkitandpbatoolkit-gputo allow users to use our GPU features more easily.
Full Changelog: v0.0.7...v0.0.8
v0.0.7
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
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
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
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
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.