Skip to main content

PBD Project Python Bindings

Project description

PositionBasedDynamics

  

This library supports the physically-based simulation of mechanical effects. In the last years position-based simulation methods have become popular in the graphics community. In contrast to classical simulation approaches these methods compute the position changes in each simulation step directly, based on the solution of a quasi-static problem. Therefore, position-based approaches are fast, stable and controllable which make them well-suited for use in interactive environments. However, these methods are generally not as accurate as force-based methods but still provide visual plausibility. Hence, the main application areas of position-based simulation are virtual reality, computer games and special effects in movies and commercials.

The PositionBasedDynamics library allows the position-based handling of many types of constraints in a physically-based simulation. The library uses CMake, Eigen, json and AntTweakBar (only for the demos). All external dependencies are included.

Furthermore we use our own library:

  • Discregrid to generate cubic signed distance fields for the collision detection

Author: Jan Bender, License: MIT

News

  • Our new paper about a Direct Position-Based Solver for Stiff Rods uses the PositionBasedDynamics library. You can watch the video here.
  • PBD now has a collision detection based on cubic signed distance fields
  • SPlisHSPlasH is our new open-source fluid simulator which uses the PositionBasedDynamics library to handle rigid-fluid coupling. It can be downloaded here: https://github.com/InteractiveComputerGraphics/SPlisHSPlasH
  • Our new paper about adaptive signed distance fields uses the PositionBasedDynamics library. You can watch the video here.

Build Instructions

This project is based on CMake. Simply generate project, Makefiles, etc. using CMake and compile the project with the compiler of your choice. The code was tested with the following configurations:

  • Windows 10 64-bit, CMake 3.9.5, Visual Studio 2019
  • Debian 9 64-bit, CMake 3.12.3, GCC 6.3.0.

Note: Please use a 64-bit target on a 64-bit operating system. 32-bit builds on a 64-bit OS are not supported.

Documentation

The API documentation can be found here:

http://www.interactive-graphics.de/PositionBasedDynamics/doc/html

Latest Important Changes

  • added Python binding
  • added some XPBD constraints
  • added OBJ export
  • added substepping
  • added DamperJoint
  • improved implementation of slider and hinge joints/motors
  • Crispin Deul added the implementation of his paper Deul, Kugelstadt, Weiler, Bender, "Direct Position-Based Solver for Stiff Rods", Computer Graphics Forum 2018 and a corresponding demo
  • added collision detection for arbitrary meshes based on cubic signed distance fields
  • added implementation of the paper Kugelstadt, Schoemer, "Position and Orientation Based Cosserat Rods", SCA 2016
  • removed Boost dependency
  • added SceneGenerator.py to generate new scenarios easily by simple Python scripting
  • added scene loader based on json
  • added collision detection based on distance functions
  • added collision handling for rigid and deformable bodies
  • high resolution visualization mesh can be attached to a deformable body
  • added support for Mac OS X
  • added automatic computation of inertia tensor for arbitrary triangle meshes
  • added OBJ file loader
  • parallelized unified solver using graph coloring
  • implemented unified solver for rigid bodies and deformable solids

Features

  • Physically-based simulation with position-based constraint handling.
  • Simple interface
  • Demos
  • Library is free even for commercial applications.
  • Collision detection based on cubic signed distance fields
  • Library supports many constraints:
    • Elastic rods:
      • bend-twist constraint
      • stretch-shear constraint
      • Cosserat constraint
    • Deformable solids:
      • point-point distance constraint (PBD & XPBD)
      • point-edge distance constraint
      • point-triangle distance constraint
      • edge-edge distance constraint
      • dihedral bending constraint
      • isometric bending constraint (PBD & XPBD)
      • volume constraint (PBD & XPBD)
      • shape matching
      • FEM-based PBD (2D & 3D)
      • strain-based dynamics (2D & 3D)
    • Fluids:
      • position-based fluids
    • Rigid bodies:
      • contact constraints
      • ball joint
      • ball-on-line-joint
      • hinge joint
      • target angle motor hinge joint
      • target velocity motor hinge joint
      • universal joint
      • slider joint
      • target position motor slider joint
      • target velocity motor slider joint
      • ball joint between rigid body and particle
      • distance joint
      • damper joint
      • implicit spring
    • Generic constraints

Videos

The following videos were generated using the PositionBasedDynamics library:

Hierarchical hp-Adaptive Signed Distance Fields Direct Position-Based Solver for Stiff Rods
Video Video

Screenshots

Cloth demo

References

  • J. Bender, M. Müller and M. Macklin, "Position-Based Simulation Methods in Computer Graphics", In Tutorial Proceedings of Eurographics, 2015
  • J. Bender, D. Koschier, P. Charrier and D. Weber, ""Position-based simulation of continuous materials", Computers & Graphics 44, 2014
  • J. Bender, M. Müller, M. A. Otaduy, M. Teschner and M. Macklin, "A Survey on Position-Based Simulation Methods in Computer Graphics", Computer Graphics Forum 33, 6, 2014
  • C. Deul, T. Kugelstadt, M. Weiler, J. Bender, "Direct Position-Based Solver for Stiff Rods", Computer Graphics Forum, 2018
  • C. Deul, P. Charrier and J. Bender, "Position-Based Rigid Body Dynamics", Computer Animation and Virtual Worlds, 2014
  • D. Koschier, C. Deul, M. Brand and J. Bender, "An hp-Adaptive Discretization Algorithm for Signed Distance Field Generation", IEEE Transactions on Visualization and Computer Graphics 23, 2017
  • M. Macklin, M. Müller, N. Chentanez and T.Y. Kim, "Unified particle physics for real-time applications", ACM Trans. Graph. 33, 4, 2014
  • M. Müller, N. Chentanez, T.Y. Kim, M. Macklin, "Strain based dynamics", In Proceedings of the 2014 ACM SIGGRAPH/Eurographics Symposium on Computer Animation, 2014
  • J. Bender, D. Weber and R. Diziol, "Fast and stable cloth simulation based on multi-resolution shape matching", Computers & Graphics 37, 8, 2013
  • R. Diziol, J. Bender and D. Bayer, "Robust Real-Time Deformation of Incompressible Surface Meshes", In Proceedings of ACM SIGGRAPH / EUROGRAPHICS Symposium on Computer Animation (SCA), 2011
  • M. Müller and N. Chentanez, "Solid simulation with oriented particles", ACM Trans. Graph. 30, 4, 2011
  • M. Müller, "Hierarchical Position Based Dynamics", In VRIPHYS 08: Fifth Workshop in Virtual Reality Interactions and Physical Simulations, 2008
  • M. Müller, B. Heidelberger, M. Hennix and J. Ratcliff, "Position based dynamics", Journal of Visual Communication and Image Representation 18, 2, 2007
  • M. Müller, B. Heidelberger, M. Teschner and M. Gross, "Meshless deformations based on shape matching", ACM Trans. Graph. 24, 3, 2005
  • M. Macklin and M. Müller, "Position based fluids", ACM Trans. Graph. 32, 4, 2013
  • Dan Koschier, Crispin Deul and Jan Bender, "Hierarchical hp-Adaptive Signed Distance Fields", In Proceedings of ACM SIGGRAPH / EUROGRAPHICS Symposium on Computer Animation (SCA), 2016
  • Tassilo Kugelstadt, Elmar Schoemer, "Position and Orientation Based Cosserat Rods", In Proceedings of ACM SIGGRAPH / EUROGRAPHICS Symposium on Computer Animation (SCA), 2016
  • M. Macklin, M. Müller and N. Chentanez, "XPBD: Position-based Simulation of Compliant Constrained Dynamics", Proceedings of the 9th International Conference on Motion in Games (MIG), 2016

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

pyPBD-2.0.0-cp38-cp38-win_amd64.whl (566.8 kB view details)

Uploaded CPython 3.8 Windows x86-64

pyPBD-2.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (709.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

pyPBD-2.0.0-cp37-cp37m-win_amd64.whl (559.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

pyPBD-2.0.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (708.8 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

pyPBD-2.0.0-cp36-cp36m-win_amd64.whl (559.2 kB view details)

Uploaded CPython 3.6m Windows x86-64

pyPBD-2.0.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (709.8 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

pyPBD-2.0.0-cp35-cp35m-win_amd64.whl (559.2 kB view details)

Uploaded CPython 3.5m Windows x86-64

pyPBD-2.0.0-cp27-cp27m-win_amd64.whl (563.4 kB view details)

Uploaded CPython 2.7m Windows x86-64

File details

Details for the file pyPBD-2.0.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyPBD-2.0.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 566.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.0 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for pyPBD-2.0.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 04f9b11849e572eaf5fabc9f157f92a57e482d703fcba21f566474a8f1885220
MD5 708fda24b285ae5575654b60deba4ed7
BLAKE2b-256 14442143e021d51e746d17765e15b5bb47c97cd9e93fbef96f5aa03314c8e689

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyPBD-2.0.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c4941fa8634169726a117b6f552c20157ed5532f234f900f84f05ff9139a39f1
MD5 79389bcd677c9e0dfe7ec60140bf88e3
BLAKE2b-256 23135e117be74098757ac5d6c1a45aba499047687799fee6fb3610c8da7916d7

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pyPBD-2.0.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 559.4 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.9

File hashes

Hashes for pyPBD-2.0.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 04cf00f91022d8cf555c1aa5d866eb7ce6fbd70aa91cac3101aca307c7c7f2f8
MD5 c99b218105b03a24d7ddb662cb3d649a
BLAKE2b-256 0dc24bdf279eaae13bcdd913794b066e3f5d43367c03c68fee16e5c416ef15db

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyPBD-2.0.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 52711c1663bb60ec2dd9b94fb97234494c2316b69ab93b13c035e4f780716bcb
MD5 892da2413b7e5bc0573c81911a20e025
BLAKE2b-256 97ed4c715b4f2a4de1801f0d519caaf53c136625db306127c41ffb5d9f276ac7

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pyPBD-2.0.0-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 559.2 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.3 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.6.8

File hashes

Hashes for pyPBD-2.0.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 90d497a5aa5500cf5178af5af91e43e12a0754b4ba7a918534220ba3d6abbc29
MD5 9869a409b81dd523c96bb211e51d42e9
BLAKE2b-256 c6ae7b22f0650482904bdbcf255a1325196d784bb7ebd7043ff6cfeb75904f9c

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for pyPBD-2.0.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 4dd8e511577b85de509ca0e2660410e4d3038fc7c0fe1950a99acfa67c30fdb4
MD5 4139d830ebc0baf8405e79a7f6b21f4a
BLAKE2b-256 c3bdffe051f102e99486d93ee47a56adb2cc859ce98c055dccaf41416a55a5ac

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: pyPBD-2.0.0-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 559.2 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.2 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.5.4

File hashes

Hashes for pyPBD-2.0.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 bc0360d935322c7901f7b6c31e5efb524c8cd67c00465cd21e9a4d02b6abdfd7
MD5 beabe85038f3924d01cde8502ffdd5ff
BLAKE2b-256 5869f0a953a0fdb4c1063839daacbbb7c8023e0e31cf75da9a0dec4195d758d9

See more details on using hashes here.

File details

Details for the file pyPBD-2.0.0-cp27-cp27m-win_amd64.whl.

File metadata

  • Download URL: pyPBD-2.0.0-cp27-cp27m-win_amd64.whl
  • Upload date:
  • Size: 563.4 kB
  • Tags: CPython 2.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.2 requests/2.26.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/2.7.18

File hashes

Hashes for pyPBD-2.0.0-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 cb35ad32e71af54fcf4f3f7a33948f878703ae3e536551a0cd17a9f4e3f8a6ce
MD5 347a3b87ffceb44f8d69c503e374d569
BLAKE2b-256 757c2ef251656487e6c0bf98e54eca2af69fccc0809f67d1e92d988e29805f21

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page