BulletSim/Functionality

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Initial version of table. Incomplete but growing.)
 
(Additions of entries for the vehicle parameters)
Line 7: Line 7:
 
! style="align: center" | Impl
 
! style="align: center" | Impl
 
! Commentary
 
! Commentary
 +
|-
 +
|osGetPhysicsEngineType
 +
|Y
 +
|Returns "BulletSim".
 
|-
 
|-
 
|linksets
 
|linksets
Line 14: Line 18:
 
|llApplyImpulse
 
|llApplyImpulse
 
|Y
 
|Y
|
+
|Tuned so impulse action is similar to SL's.
 
|-
 
|-
 
|llApplyRotationalImpulse
 
|llApplyRotationalImpulse
Line 74: Line 78:
 
|PRIM_PHANTOM
 
|PRIM_PHANTOM
 
|Y
 
|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
 +
|N
 +
|Currently (20130117) not implemented in OpenSimulator.
 +
|-
 +
|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 does not implement this function (20130117).
 +
|-
 +
|llSetScale
 +
|Y
 +
|
 +
|-
 +
|llVolumeDetect
 +
|Y
 +
|Basic volume detect works (static prim/linkset). Phantom and physical volume detect items will fall to altitude zero before stopping.
 +
|-
 +
|llSetVelocity
 +
|N
 +
|OpenSimulator does not implement this function (20130117).
 +
|-
 +
|llSetVehicleType
 +
|Y
 +
|All vehicle types are supported.
 +
|-
 +
|VEHICLE_FLAG_NO_DEFLECTION_UP
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_LIMIT_ROLL_ONLY
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_HOVER_WATER_ONLY
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_HOVER_TERRAIN_ONLY
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_HOVER_UP_ONLY
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_LIMIT_MOTOR_UP
 +
|
 +
|
 +
|-
 +
|VEHICLE_FLAG_MOUSELOOK_STEER
 +
|N
 +
|
 +
|-
 +
|VEHICLE_FLAG_MOUSELOOK_BANK
 +
|N
 +
|
 +
|-
 +
|VEHICLE_FLAG_CAMERA_DECOUPLED
 +
|N
 +
|
 +
|-
 +
|VEHICLE_LINEAR_MOTOR_DIRECTION
 +
|Y
 +
|
 +
|-
 +
|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
 +
|
 +
|-
 +
|VEHICLE_ANGULAR_MOTOR_TIMESCALE
 +
|Y
 +
|
 +
|-
 +
|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE
 +
|Y
 +
|
 +
|-
 +
|VEHICLE_ANGULAR_FRICTION_TIMESCALE
 +
|Y
 +
|
 +
|-
 +
|VEHICLE_LINEAR_DEFLECTION_TIMESCALE
 +
|
 +
|
 +
|-
 +
|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY
 +
|
 +
|
 +
|-
 +
|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE
 +
|
 +
|
 +
|-
 +
|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY
 +
|
 +
|
 +
|-
 +
|VEHICLE_BANKING_TIMESCALE
 +
|
 +
|
 +
|-
 +
|VEHICLE_BANKING_EFFICIENCY
 +
|
 +
|
 +
|-
 +
|VEHICLE_BANKING_MIX
 +
|
 +
|
 +
|-
 +
|VEHICLE_HOVER_HEIGHT
 +
|
 +
|
 +
|-
 +
|VEHICLE_HOVER_TIMESCALE
 +
|
 +
|
 +
|-
 +
|VEHICLE_HOVER_EFFICIENCY
 +
|
 +
|
 +
|-
 +
|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE
 +
|
 +
|
 +
|-
 +
|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY
 +
|
 
|
 
|
 
|-
 
|-

Revision as of 11:13, 17 January 2013

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 Y/N what it does
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 As per tradition, this actually returns the geometric center of the prim or linkset. Not the actual center-of-mass.
llGetForce Y
llGetGeometricCenter Y
llGetMass Y
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 N Currently (20130117) not implemented in OpenSimulator.
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 does not implement this function (20130117).
llSetScale Y
llVolumeDetect Y Basic volume detect works (static prim/linkset). Phantom and physical volume detect items will fall to altitude zero before stopping.
llSetVelocity N OpenSimulator does not implement this function (20130117).
llSetVehicleType Y All vehicle types are supported.
VEHICLE_FLAG_NO_DEFLECTION_UP
VEHICLE_FLAG_LIMIT_ROLL_ONLY
VEHICLE_FLAG_HOVER_WATER_ONLY
VEHICLE_FLAG_HOVER_TERRAIN_ONLY
VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT
VEHICLE_FLAG_HOVER_UP_ONLY
VEHICLE_FLAG_LIMIT_MOTOR_UP
VEHICLE_FLAG_MOUSELOOK_STEER N
VEHICLE_FLAG_MOUSELOOK_BANK N
VEHICLE_FLAG_CAMERA_DECOUPLED N
VEHICLE_LINEAR_MOTOR_DIRECTION Y
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
VEHICLE_ANGULAR_MOTOR_TIMESCALE Y
VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE Y
VEHICLE_ANGULAR_FRICTION_TIMESCALE Y
VEHICLE_LINEAR_DEFLECTION_TIMESCALE
VEHICLE_LINEAR_DEFLECTION_EFFICIENCY
VEHICLE_ANGULAR_DEFLECTION_TIMESCALE
VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY
VEHICLE_BANKING_TIMESCALE
VEHICLE_BANKING_EFFICIENCY
VEHICLE_BANKING_MIX
VEHICLE_HOVER_HEIGHT
VEHICLE_HOVER_TIMESCALE
VEHICLE_HOVER_EFFICIENCY
VEHICLE_VERTICAL_ATTRACTION_TIMESCALE
VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY
object collisions Y
linkset child collisions N
Personal tools
General
About This Wiki