|
| 1 | +\page gallery Gallery |
| 2 | + |
| 3 | +Below, we show a few examples of what can be done in just a few lines of code using [`pbatoolkit`](https://pypi.org/project/pbatoolkit/) and Python. Code can be found [here](https://github.com/Q-Minh/PhysicsBasedAnimationToolkit/tree/master/python/examples). |
| 4 | + |
| 5 | +## Real-time hyper elasticity dynamics |
| 6 | + |
| 7 | +Our GPU implementation of the eXtended Position Based Dynamics (XPBD) algorithm simulates a ~324k element FEM elastic mesh interactively with contact. |
| 8 | + |
| 9 | +<p float="left"> |
| 10 | + <img src="gpu.xpbd.bvh.gif" width="250" alt="A 162k element armadillo mesh is dropped on top of another duplicate, but fixed, armadillo mesh on the bottom." /> |
| 11 | +</p> |
| 12 | + |
| 13 | +## Inter-penetration free elastodynamic contact |
| 14 | + |
| 15 | +Combining [`pbatoolkit`](https://pypi.org/project/pbatoolkit/)'s FEM+elasticity features and the [`IPC Toolkit`](https://ipctk.xyz/) results in guaranteed inter-penetration free contact dynamics between deformable bodies. |
| 16 | + |
| 17 | +<p float="left"> |
| 18 | + <img src="ipc.bar.stacks.gif" width="250" alt="A stack of bending beams fall on top of each other, simulated via Incremental Potential Contact (IPC)." /> |
| 19 | +</p> |
| 20 | + |
| 21 | +## Modal analysis |
| 22 | + |
| 23 | +The hyper elastic beam's representative deformation modes, i.e. its low frequency eigen vectors, |
| 24 | +are animated as time continuous signals. |
| 25 | + |
| 26 | +<p float="left"> |
| 27 | + <img src="beam.modes.gif" width="250" alt="Unconstrained hyper elastic beam's eigen frequencies" /> |
| 28 | +</p> |
| 29 | + |
| 30 | +## GPU broad phase collision detection |
| 31 | + |
| 32 | +Real-time collision detection between 2 large scale meshes (~324k tetrahedra) is accelerated by highly parallel implementations of the [sweep and prune](https://en.wikipedia.org/wiki/Sweep_and_prune) algorithm, or [linear bounding volume hierarchies](https://research.nvidia.com/sites/default/files/pubs/2012-06_Maximizing-Parallelism-in/karras2012hpg_paper.pdf). |
| 33 | + |
| 34 | +<p float="left"> |
| 35 | + <img src="gpu.broadphase.gif" width="250" alt="Broad phase collision detection on the GPU between 2 moving tetrahedral meshes" /> |
| 36 | +</p> |
| 37 | + |
| 38 | +## Harmonic interpolation |
| 39 | + |
| 40 | +A smooth (harmonic) function is constructed on [Entei](<https://bulbapedia.bulbagarden.net/wiki/Entei_(Pok%C3%A9mon)>), required to evaluate to `1` on its paws, and `0` at the top of its tail, using piece-wise linear (left) and quadratic (right) shape functions. Its isolines are displayed as black curves. |
| 41 | + |
| 42 | +<p float="left"> |
| 43 | + <img src="entei.harmonic.interpolation.order.1.png" width="250" alt="Harmonic interpolation on Entei model using linear shape functions" /> |
| 44 | + <img src="entei.harmonic.interpolation.order.2.png" width="250" alt="Harmonic interpolation on Entei model using quadratic shape functions" /> |
| 45 | +</p> |
| 46 | + |
| 47 | +## Heat method for geodesic distance computation |
| 48 | + |
| 49 | +Approximate geodesic distances are computed from the top center vertex of [Metagross](<https://bulbapedia.bulbagarden.net/wiki/Metagross_(Pok%C3%A9mon)>) by diffusing heat from it (left), and recovering a function whose gradient matches the normalized heat's negative gradient. Its isolines are displayed as black curves. |
| 50 | + |
| 51 | +<p float="left"> |
| 52 | + <img src="metagross.heat.source.png" width="250" alt="Heat source on top center of metagross model" /> |
| 53 | + <img src="metagross.heat.geodesics.png" width="250" alt="Reconstructed single source geodesic distance" /> |
| 54 | +</p> |
| 55 | + |
| 56 | +## Mesh smoothing via diffusion |
| 57 | + |
| 58 | +Fine details of Godzilla's skin are smoothed out by diffusing `x,y,z` coordinates in time. |
| 59 | + |
| 60 | +<p float="left"> |
| 61 | + <img src="godzilla.diffusion.smoothing.gif" width="250" alt="Godzilla model with fine details being smoothed out via diffusion" /> |
| 62 | +</p> |
| 63 | + |
| 64 | +<div class="section_buttons"> |
| 65 | + |
| 66 | +| Previous | Next | |
| 67 | +|:----------------|-----------:| |
| 68 | +| \ref quickstart | \ref build | |
| 69 | + |
| 70 | +</div> |
0 commit comments