BEPUphysics

Pure C# 3D real time physics simulation library, now with a higher version number. (by bepu)

BEPUphysics Alternatives

Similar projects and alternatives to BEPUphysics

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better BEPUphysics alternative or higher similarity.

BEPUphysics reviews and mentions

Posts with mentions or reviews of BEPUphysics. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-17.
  • Physics Engine
    2 projects | reddit.com/r/csharp | 17 Nov 2022
  • Open Source C++ Physics Libraries for Dedicated FPS Server?
    3 projects | reddit.com/r/gamedev | 22 Sep 2022
    Bepu Physics is pretty good and is written in really optimized C#, the author's blog post are really interesting to read.
  • GJK: Collision detection algorithm in 2D/3D
    5 projects | news.ycombinator.com | 9 Mar 2022
    The usual approach is some form of sweep to get a time of impact. Once you've got a time of impact, you can either generate contacts, or avoid integrating the involved bodies beyond the time of impact, or do something fancier like adaptively stepping the simulation to ensure no lost time.

    If the details don't matter much, it's common to use a simple ray cast from the center at t0 to the center at t1. Works reasonably well for fast moving objects that are at least kinda-sorta rotationally invariant. For two dynamic bodies flying at each other, you can test this "movement ray" of body A against the geometry of body B, and the movement ray of body B against the geometry of body A.

    One step up would be to use sphere sweeps. Sphere sweeps tend to be pretty fast; they're often only slightly more complicated than a ray test. Pick a sphere radius such that it mostly fills up the shape and then do the same thing as in the previous ray case.

    If you need more detail, you can use a linear sweep. A linear sweep ignores angular velocity but uses the full shape for testing. Notably, you can use a variant of GJK (or MPR, for that matter) for this: http://dtecta.com/papers/jgt04raycast.pdf

    If you want to include angular motion, things get trickier. One pretty brute forceish approach is to use conservative advancement based on distance queries. Based on the velocity and shape properties, you can estimate the maximum approaching velocity between two bodies, query the distance between the bodies (using algorithms like GJK or whatever else), and then step forward in time by distance / maximumApproachingVelocity. With appropriately conservative velocity estimates, this guarantees the body will never miss a collision, but it can also cause very high iteration counts in corner cases.

    You can move a lot faster if you allow the search to look forward a bit beyond potential impact times, turning it into more of a root finding operation. Something like this: https://box2d.org/files/ErinCatto_ContinuousCollision_GDC201...

    I use a combination of speculative contacts and then linear+angular sweeps where needed to avoid ghost collisions. Speculative contacts can handle many forms of high velocity use cases without sweeps- contact generation just has to be able to output reasonable negative depth (separated) contacts. The solver handles the rest. The sweeps use a sorta-kinda rootfinder like the Erin Catto presentation above, backed up by vectorized sampling of distance. A bit more here, though it's mainly written for users of the library: https://github.com/bepu/bepuphysics2/blob/master/Documentati...

  • A note from our sponsor - #<SponsorshipServiceOld:0x00007fea60233eb0>
    www.saashub.com | 4 Feb 2023
    SaaSHub helps you find the best software and product alternatives Learn more →

Stats

Basic BEPUphysics repo stats
4
1,492
8.4
6 days ago
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com