BulletSim/Functionality
From OpenSimulator
(Difference between revisions)
Misterblue (Talk | contribs) (added 'energy limits' and STATUS_ROTATE_) |
|||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{Quicklinks}} | ||
+ | |||
+ | |||
'''BulletSim Functionality''' | '''BulletSim Functionality''' | ||
Line 98: | Line 101: | ||
|- | |- | ||
|llSetAngularVelocity | |llSetAngularVelocity | ||
− | | | + | |Y |
− | | | + | | |
|- | |- | ||
|llSetBuoyancy | |llSetBuoyancy | ||
Line 119: | Line 122: | ||
|llSetPhysicsMaterial | |llSetPhysicsMaterial | ||
|N | |N | ||
− | |OpenSimulator does not | + | |OpenSimulator added the ability to set these properties from V3 viewer dialogs but does not yet have this function (as of 20130207) |
+ | |- | ||
+ | |: DENSITY | ||
+ | |Y | ||
+ | |Set to material value by PRIM_MATERIAL. | ||
+ | |- | ||
+ | |: FRICTION | ||
+ | |Y | ||
+ | |Set to material value by PRIM_MATERIAL. | ||
+ | |- | ||
+ | |: RESTITUTION | ||
+ | |Y | ||
+ | |Set to material value by PRIM_MATERIAL. | ||
+ | |- | ||
+ | |: GRAVITY_MULTIPLIER | ||
+ | |Y | ||
+ | | | ||
|- | |- | ||
|llSetScale | |llSetScale | ||
Line 126: | Line 145: | ||
|- | |- | ||
|llSetStatus | |llSetStatus | ||
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |STATUS_PHYSICS | + | |: STATUS_PHYSICS |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |STATUS_ROTATE_X | + | |: STATUS_ROTATE_X |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |STATUS_ROTATE_Y | + | |: STATUS_ROTATE_Y |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |STATUS_ROTATE_Z | + | |: STATUS_ROTATE_Z |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |STATUS_PHANTOM | + | |: STATUS_PHANTOM |
|Y | |Y | ||
| | | | ||
Line 154: | Line 173: | ||
|- | |- | ||
|llSetVelocity | |llSetVelocity | ||
− | | | + | |Y |
− | | | + | | |
|- | |- | ||
|llSetVehicleType | |llSetVehicleType | ||
Line 161: | Line 180: | ||
|All vehicle types are supported. | |All vehicle types are supported. | ||
|- | |- | ||
− | |VEHICLE_FLAG_NO_DEFLECTION_UP | + | |: VEHICLE_FLAG_NO_DEFLECTION_UP |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_LIMIT_ROLL_ONLY | + | |: VEHICLE_FLAG_LIMIT_ROLL_ONLY |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_HOVER_WATER_ONLY | + | |: VEHICLE_FLAG_HOVER_WATER_ONLY |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_HOVER_TERRAIN_ONLY | + | |: VEHICLE_FLAG_HOVER_TERRAIN_ONLY |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT | + | |: VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_HOVER_UP_ONLY | + | |: VEHICLE_FLAG_HOVER_UP_ONLY |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_LIMIT_MOTOR_UP | + | |: VEHICLE_FLAG_LIMIT_MOTOR_UP |
|semi | |semi | ||
|if the vehicle is not colliding with anything, any positive Z (up) force is removed from the vehicles velocity. Gravity should then work to let the vehicle fall to the ground. | |if the vehicle is not colliding with anything, any positive Z (up) force is removed from the vehicles velocity. Gravity should then work to let the vehicle fall to the ground. | ||
|- | |- | ||
− | |VEHICLE_FLAG_MOUSELOOK_STEER | + | |: VEHICLE_FLAG_MOUSELOOK_STEER |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_MOUSELOOK_BANK | + | |: VEHICLE_FLAG_MOUSELOOK_BANK |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_FLAG_CAMERA_DECOUPLED | + | |: VEHICLE_FLAG_CAMERA_DECOUPLED |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_LINEAR_MOTOR_DIRECTION | + | |: VEHICLE_LINEAR_MOTOR_DIRECTION |
|Y | |Y | ||
|Direction functions have been scaled to be similar to SL. | |Direction functions have been scaled to be similar to SL. | ||
|- | |- | ||
− | |VEHICLE_LINEAR_MOTOR_TIMESCALE | + | |: VEHICLE_LINEAR_MOTOR_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_LINEAR_FRICTION_TIMESCALE | + | |: VEHICLE_LINEAR_FRICTION_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE | + | |: VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_LINEAR_MOTOR_OFFSET | + | |: VEHICLE_LINEAR_MOTOR_OFFSET |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_REFERENCE_FRAME | + | |: VEHICLE_REFERENCE_FRAME |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_ANGULAR_MOTOR_DIRECTION | + | |: VEHICLE_ANGULAR_MOTOR_DIRECTION |
|Y | |Y | ||
|Angular direction has been scaled to be similar to SL. THIS IS DIFFERENT THAN ODE. ODE motor direction function was off by a factor of about 10 so ODE tuned vehicles will seem to turn very quickly when run on a BulletSim based region. | |Angular direction has been scaled to be similar to SL. THIS IS DIFFERENT THAN ODE. ODE motor direction function was off by a factor of about 10 so ODE tuned vehicles will seem to turn very quickly when run on a BulletSim based region. | ||
|- | |- | ||
− | |VEHICLE_ANGULAR_MOTOR_TIMESCALE | + | |: VEHICLE_ANGULAR_MOTOR_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE | + | |: VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_ANGULAR_FRICTION_TIMESCALE | + | |: VEHICLE_ANGULAR_FRICTION_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_LINEAR_DEFLECTION_TIMESCALE | + | |: VEHICLE_LINEAR_DEFLECTION_TIMESCALE |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |VEHICLE_LINEAR_DEFLECTION_EFFICIENCY | + | |: VEHICLE_LINEAR_DEFLECTION_EFFICIENCY |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |VEHICLE_ANGULAR_DEFLECTION_TIMESCALE | + | |: VEHICLE_ANGULAR_DEFLECTION_TIMESCALE |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY | + | |: VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |VEHICLE_BANKING_TIMESCALE | + | |: VEHICLE_BANKING_TIMESCALE |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_BANKING_EFFICIENCY | + | |: VEHICLE_BANKING_EFFICIENCY |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_BANKING_MIX | + | |: VEHICLE_BANKING_MIX |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_HOVER_HEIGHT | + | |: VEHICLE_HOVER_HEIGHT |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_HOVER_TIMESCALE | + | |: VEHICLE_HOVER_TIMESCALE |
|Y | |Y | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_HOVER_EFFICIENCY | + | |: VEHICLE_HOVER_EFFICIENCY |
|N | |N | ||
| | | | ||
|- | |- | ||
− | |VEHICLE_VERTICAL_ATTRACTION_TIMESCALE | + | |: VEHICLE_VERTICAL_ATTRACTION_TIMESCALE |
− | | | + | |Y |
| | | | ||
|- | |- | ||
− | |VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY | + | |: VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY |
− | | | + | |Y |
| | | | ||
|- | |- |
Latest revision as of 05:43, 28 July 2024
Languages: |
English Deutsch |
BulletSim Functionality
This page lists OpenSimulator physics operations and, in particular, the detailed vehicle parameters. The BulletSim implementation state is listed as well as some comments about the functionality.
Function | Impl | Commentary |
---|---|---|
osGetPhysicsEngineType | Y | Returns "BulletSim". |
linksets | Y | BulletSim has two implementations of linksets: constraints and compound. The default is "compound". The type is selected by an INI file setting. "Constraint" creates the linkset by creating static physical constraints between the objects of the linkset. This is good for small linksets and will be extended in the future to allow other than static constraints (hinges, sliders, ...). "Compound" creates the linkset by combining all the children meshes into one compound physical shape. This creates a very stable physical shape and works well for large linksets. |
llApplyImpulse | Y | Tuned so impulse action is similar to SL's. |
llApplyRotationalImpulse | N | |
llMoveToTarget | semi | BulletSim does implement a move-to-target but it is currently (20130120) by changing
the object's position. |
llCastRay | N | |
llGetAccel | N | |
llGetBoundingBox | semi | Current implementation (20130117) computes the bounding box of the root prim or the avatar. Linksets are not implemented. This computation is done in the LSL implementation code and is not done by the physics engine. |
llGetCenterOfMass | Y | OpenSimulator currently (20130120) implements this by returning the geometric center of the prim or linkset. Not the actual center-of-mass. |
llGetForce | Y | |
llGetGeometricCenter | Y | |
llGetMass | Y | Takes into account shape cutting or hollowing. |
llGetMassMKS | N | This function is not yet implemented in OpenSimulator (20130117). |
PRIM_TYPE_* | Y | The OpenSimulator meshmerizer creates meshes for all types of prim shapes including sculpties. For better storage and performance, BulletSim uses physics engine native shapes for cubes, rectangles and spheres. The mesh shapes are shared once created so having many toruses of the same size creates only one mesh that is shared by all the instances. |
PRIM_SLICE | N | |
PRIM_PHYSICS_SHAPE_CONVEX | semi | OpenSimulator does not set or return this value. BulletSim internally converts all physical shapes to convex hulls for performance. This is done with the | HACD : Hierarchical Approximate Convex Decomposition algorithm. Currently (20130117), the code is in C# and checked into OpenSimulator core but future versions will use the version included in Bullet. Future implementations should us any convex hull shipped with the mesh. |
PRIM_MATERIAL_* | Y | Setting materials modifies the friction and restitution of the physical prim. Density is not changed. |
PRIM_PHANTOM | Y | |
llGetTorque | Y | |
llGetVel | Y | |
llGround | Y | Internally, BulletSim converts the region's heightmap into a mesh thus the terrain is actually a static mesh. |
llPushObject | Y | The main part of this functionality is implemented in LSL_Api. |
llSetAngularVelocity | Y | |
llSetBuoyancy | Y | Buoyancy is implemented by varying the gravity applied to the single prim/linkset. |
llSetForce | Y | The force will be continuously applied until the force is set to zero. |
llSetForceAndTorque | N | |
llSetHoverHeight | semi | Don't use this with vehicles as craziness will happen. |
llSetPhysicsMaterial | N | OpenSimulator added the ability to set these properties from V3 viewer dialogs but does not yet have this function (as of 20130207) |
: DENSITY | Y | Set to material value by PRIM_MATERIAL. |
: FRICTION | Y | Set to material value by PRIM_MATERIAL. |
: RESTITUTION | Y | Set to material value by PRIM_MATERIAL. |
: GRAVITY_MULTIPLIER | Y | |
llSetScale | Y | |
llSetStatus | Y | |
: STATUS_PHYSICS | Y | |
: STATUS_ROTATE_X | Y | |
: STATUS_ROTATE_Y | Y | |
: STATUS_ROTATE_Z | Y | |
: STATUS_PHANTOM | Y | |
llVolumeDetect | Y | Basic volume detect works (static prim/linkset). Phantom and physical volume detect items will fall to altitude zero before stopping. |
llSetVelocity | Y | |
llSetVehicleType | Y | All vehicle types are supported. |
: VEHICLE_FLAG_NO_DEFLECTION_UP | N | |
: VEHICLE_FLAG_LIMIT_ROLL_ONLY | N | |
: VEHICLE_FLAG_HOVER_WATER_ONLY | Y | |
: VEHICLE_FLAG_HOVER_TERRAIN_ONLY | Y | |
: VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT | Y | |
: VEHICLE_FLAG_HOVER_UP_ONLY | Y | |
: VEHICLE_FLAG_LIMIT_MOTOR_UP | semi | if the vehicle is not colliding with anything, any positive Z (up) force is removed from the vehicles velocity. Gravity should then work to let the vehicle fall to the ground. |
: VEHICLE_FLAG_MOUSELOOK_STEER | N | |
: VEHICLE_FLAG_MOUSELOOK_BANK | N | |
: VEHICLE_FLAG_CAMERA_DECOUPLED | N | |
: VEHICLE_LINEAR_MOTOR_DIRECTION | Y | Direction functions have been scaled to be similar to SL. |
: VEHICLE_LINEAR_MOTOR_TIMESCALE | Y | |
: VEHICLE_LINEAR_FRICTION_TIMESCALE | Y | |
: VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE | Y | |
: VEHICLE_LINEAR_MOTOR_OFFSET | N | |
: VEHICLE_REFERENCE_FRAME | N | |
: VEHICLE_ANGULAR_MOTOR_DIRECTION | Y | Angular direction has been scaled to be similar to SL. THIS IS DIFFERENT THAN ODE. ODE motor direction function was off by a factor of about 10 so ODE tuned vehicles will seem to turn very quickly when run on a BulletSim based region. |
: VEHICLE_ANGULAR_MOTOR_TIMESCALE | Y | |
: VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE | Y | |
: VEHICLE_ANGULAR_FRICTION_TIMESCALE | Y | |
: VEHICLE_LINEAR_DEFLECTION_TIMESCALE | Y | |
: VEHICLE_LINEAR_DEFLECTION_EFFICIENCY | Y | |
: VEHICLE_ANGULAR_DEFLECTION_TIMESCALE | Y | |
: VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY | Y | |
: VEHICLE_BANKING_TIMESCALE | N | |
: VEHICLE_BANKING_EFFICIENCY | N | |
: VEHICLE_BANKING_MIX | N | |
: VEHICLE_HOVER_HEIGHT | Y | |
: VEHICLE_HOVER_TIMESCALE | Y | |
: VEHICLE_HOVER_EFFICIENCY | N | |
: VEHICLE_VERTICAL_ATTRACTION_TIMESCALE | Y | |
: VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY | Y | |
object collisions | Y | |
linkset child collisions | N | |
energy limits | N | |
top colliders | Y | Attempts to scale the number of collisions by how long ago they happened so the list should be the most recent colliders also. |