[Opensim-dev] BulletSim upgrade and fixes

Mister Blue misterblue at misterblue.com
Tue Aug 15 17:37:18 UTC 2017


An update to BulletSim has been checked into the OpenSimulator that
upgrades BulletSim with version 2.86 of the Bullet physics engine
<http://bulletphysics.org/> as well as fixing some known problems.

Mantis 8010 <http://opensimulator.org/mantis/view.php?id=8010> (“BulletSim
does not always call collision events on collisions”) was caused by
BulletSim not doing collision detection on all of the physics engine
sub-steps. This meant that fast moving objects (like bullets) could bounce
off of a target without reporting any collisions. For those into details,
any OpenSimulator <http://opensimulator.org/> physics engine is called
every tenth of a second to simulate the next tenth of a second of time.
BulletSim internally steps 10 times within that tenth of a second to do a
higher resolution physics simulation – a tenth of a second is a long
simulation step but that’s the way OpenSimulator
<http://opensimulator.org/> does
it.

Mantis 8011 <http://opensimulator.org/mantis/view.php?id=8011> (“BulletSim
fails to send land_collision messages on some terrain”) was caused by
BulletSim computing terrain height differently than the mesh in the physics
engine. So, an object on steep terrain could compute as underground to some
code while appearing above ground in other code. BulletSim prevents
physical objects from going underground by pushing them up when the do.
This check would sometimes cause a falling object to float over terrain
rather than colliding with the terrain.

The problem in Mantis 7132
<http://opensimulator.org/mantis/view.php?id=7132> (“Collisions stop for no
apparent reason on BulletSim”) hasn’t been explicitly fixed. Still looking
for that problem.

I found an additional problem that collision_end events don’t happen if the
colliding object does an llDie() on its collision. For instance, a target
object wouldn’t get a collision_end event for a bullet object that hits the
target and does an llDie() on its collision. It looks like the ODE and
ubODE physics engines don’t exhibit this problem because of the order that
collisions are reported to the simulator. The fix is some code
re-organization in SceneObjectPart.cs.

Still in the pipeline is the proper implementation of PhysicsShapeType and
then physics engine implementation of raycast.


More information about the Opensim-dev mailing list