BulletSim

= BulletSim =

BulletSim is the module for OpenSimulator that creates virtual world physics using the Bullet Physics Engine. This module provides high performance physics as well as physical vehicle performance compatible with Second Life.

Project Information
BulletSim/Functionality lists the possible physical operations, their implementation state and any notes on their use. This is particularly useful for vehicle operations.

BSScene
Stuff on simulation stepper. Step events (pre-step event, post-step event).

Requirement for controlling physics engine modifications with taint system (regular taints, post-taint taints).

Detail logging system.

Parameter system.

BSPhysObject
Children classes of BSPrim and BSCharacter.

Bullet Implementations
BulletSim is a wrapper for the Bullet physics engine. The interface from the virtual world adapting BulletSim to the physics engine is described by the abstract class. There are two instances of this class,  and.

contains the connection to the unmanaged DLL/SO that is the C++ version of the Bullet physics engine. The sources and build instructions are available at.

is the connection to a C# version of Bullet the sources of which are hosted at.

The selection of physics engine happens at region start time. It is specified per simulator with the following INI settings: [Startup] physics = BulletSim [BulletSim] BulletEngine = BulletUnmanaged ; The default ; BulletEngine = BulletXNA     ; uncomment this line for C# version of Bullet

"Actor" Architecture and the Actors
Each BulletSim physical object can have any number of "actors" attached to it. The actors register for simulation events (usually to be called before each simulation step) and change the physical parameters of the object. The currently implemented actors are:
 * BSActorAvatarMove: controls movement and stairs walking of avatars;
 * BSActorHover: implements vertical hovering for objects and avatars;
 * BSActorLockAxis: applies a constraint to physical objects to lock one or more angular axis movement;
 * BSActorMoveToTarget: moves a physical object to a location;
 * BSActorSetForce: applies a continuous force to a physical object;
 * BSActorSetTorque: applies a continuous torque to a physical object;
 * BSDynamic (name will change): implements SecondLife(r) vehicle model.

Vehicles
BulletSim/Vehicles

BulletSim/VehicleTuning

See also the archived page: Vehicles

BulletSim Script Extension Functions
The physics extension interface is used by BulletSim to implement many new physics functions. The mod_invoke interface must be enabled for these functions to work.

BulletSim/ScriptFunctions

Avatar Walking Up Stairs
The avatar movement actor include special checks to allow avatars to move up stepped objects (think stairs). The code works by checking for collisions close to the avatar's feet and, if trying to walk forward and not flying, pushing the avatar up to get over the object. This is a different algorithm than ODE which relies on the curvature of the avatar's capsule to move up and over low obstacles.

There are five INI parameters that control stairs:

The default values are:

Adjusting Avatar Height
As of May 13, 2013, BulletSim uses the Bullet capsule shape to approximate a standing avatar. One oddity of the capsule is its height which doesn't scale nicely in the way OpenSimulator would like. To fix this, several adjustment parameters are available to correct the avatar capsule height so that an avatar properly appears to be standing on the ground rather than floating over or sunk into the ground.

These parameters are: