Physics Constraints (bge.constraints)¶
Bullet Physics provides collision detection and rigid body dynamics for the Blender Game Engine.
Features:
Vehicle simulation.
Rigid body constraints: hinge and point to point (ball socket).
Access to internal physics settings, like deactivation time, and debugging features
Note
Note about parameter settings
Since this API is not well documented, it can be unclear what kind of values to use for setting parameters. In general, damping settings should be in the range of 0 to 1 and stiffness settings should not be much higher than about 10.
Examples¶
See also
For more examples of Bullet physics and how to use them see the pybullet forum.
Example of how to create a hinge Physics Constraint between two objects.
"""
Basic Physics Constraint
++++++++++++++++++++++++
Example of how to create a hinge Physics Constraint between two objects.
"""
from bge import logic
from bge import constraints
# get object list
objects = logic.getCurrentScene().objects
# get object named Object1 and Object 2
object_1 = objects["Object1"]
object_2 = objects["Object2"]
# want to use Edge constraint type
constraint_type = 2
# get Object1 and Object2 physics IDs
physics_id_1 = object_1.getPhysicsId()
physics_id_2 = object_2.getPhysicsId()
# use bottom right edge of Object1 for hinge position
edge_position_x = 1.0
edge_position_y = 0.0
edge_position_z = -1.0
# rotate the pivot z axis about 90 degrees
edge_angle_x = 0.0
edge_angle_y = 0.0
edge_angle_z = 90.0
# create an edge constraint
constraints.createConstraint(physics_id_1, physics_id_2,
constraint_type,
edge_position_x, edge_position_y, edge_position_z,
edge_angle_x, edge_angle_y, edge_angle_z)
Functions¶
- bge.constraints.createConstraint(physicsid_1, physicsid_2, constraint_type, pivot_x=0.0, pivot_y=0.0, pivot_z=0.0, axis_x=0.0, axis_y=0.0, axis_z=0.0, flag=0)¶
Creates a constraint.
- Parameters
physicsid_1 (int) – The physics id of the first object in constraint.
physicsid_2 (int) – The physics id of the second object in constraint.
constraint_type (int) – The type of the constraint, see Create Constraint Constants.
pivot_x (float) – Pivot X position. (optional)
pivot_y (float) – Pivot Y position. (optional)
pivot_z (float) – Pivot Z position. (optional)
axis_x (float) – X axis angle in degrees. (optional)
axis_y (float) – Y axis angle in degrees. (optional)
axis_z (float) – Z axis angle in degrees. (optional)
flag (int) – 128 to disable collision between linked bodies. (optional)
- Returns
A constraint wrapper.
- Return type
KX_ConstraintWrapper
- bge.constraints.createVehicle(physicsid)¶
Creates a vehicle constraint.
- Parameters
physicsid (int) – The physics id of the chassis object in constraint.
- Returns
A vehicle constraint wrapper.
- Return type
KX_VehicleWrapper
- bge.constraints.exportBulletFile(filename)¶
Exports a file representing the dynamics world (usually using
.bullet
extension).See Bullet binary serialization.
- Parameters
filename (str) – File path.
- bge.constraints.getAppliedImpulse(constraintId)¶
- Parameters
constraintId (int) – The id of the constraint.
- Returns
The most recent applied impulse.
- Return type
float
- bge.constraints.getVehicleConstraint(constraintId)¶
- Parameters
constraintId (int) – The id of the vehicle constraint.
- Returns
A vehicle constraint object.
- Return type
KX_VehicleWrapper
- bge.constraints.getCharacter(gameobj)¶
- Parameters
gameobj (
KX_GameObject
) – The game object with the character physics.- Returns
Character wrapper.
- Return type
KX_CharacterWrapper
- bge.constraints.removeConstraint(constraintId)¶
Removes a constraint.
- Parameters
constraintId (int) – The id of the constraint to be removed.
- bge.constraints.setCcdMode(ccdMode)¶
Note
Very experimental, not recommended
Sets the CCD (Continous Colision Detection) mode in the Physics Environment.
- Parameters
ccdMode (int) – The new CCD mode.
- bge.constraints.setContactBreakingTreshold(breakingTreshold)¶
Note
Reasonable default is 0.02 (if units are meters)
Sets tresholds to do with contact point management.
- Parameters
breakingTreshold (float) – The new contact breaking treshold.
- bge.constraints.setDeactivationAngularTreshold(angularTreshold)¶
Sets the angular velocity treshold.
- Parameters
angularTreshold (float) – New deactivation angular treshold.
- bge.constraints.setDeactivationLinearTreshold(linearTreshold)¶
Sets the linear velocity treshold.
- Parameters
linearTreshold (float) – New deactivation linear treshold.
- bge.constraints.setDeactivationTime(time)¶
Sets the time after which a resting rigidbody gets deactived.
- Parameters
time (float) – The deactivation time.
- bge.constraints.setDebugMode(mode)¶
Sets the debug mode.
- Parameters
mode (int) – The new debug mode, see Debug Mode Constants.
- bge.constraints.setGravity(x, y, z)¶
Sets the gravity force.
- Parameters
x (float) – Gravity X force.
y (float) – Gravity Y force.
z (float) – Gravity Z force.
- bge.constraints.setLinearAirDamping(damping)¶
Note
Not implemented
Sets the linear air damping for rigidbodies.
- bge.constraints.setNumIterations(numiter)¶
Sets the number of iterations for an iterative constraint solver.
- Parameters
numiter (int) – New number of iterations.
- bge.constraints.setNumTimeSubSteps(numsubstep)¶
Sets the number of substeps for each physics proceed. Tradeoff quality for performance.
- Parameters
numsubstep (int) – New number of substeps.
- bge.constraints.setSolverDamping(damping)¶
Note
Very experimental, not recommended
Sets the damper constant of a penalty based solver.
- Parameters
damping (float) – New damping for the solver.
- bge.constraints.setSolverTau(tau)¶
Note
Very experimental, not recommended
Sets the spring constant of a penalty based solver.
- Parameters
tau (float) – New tau for the solver.
- bge.constraints.setSolverType(solverType)¶
Note
Very experimental, not recommended
Sets the solver type.
- Parameters
solverType (int) – The new type of the solver.
- bge.constraints.setSorConstant(sor)¶
Note
Very experimental, not recommended
Sets the successive overrelaxation constant.
- Parameters
sor (float) – New sor value.
- bge.constraints.setUseEpa(epa)¶
Note
Not implemented
Constants¶
- bge.constraints.error¶
Symbolic constant string that indicates error.
- Type
str
Debug Mode Constants¶
Debug mode to be used with setDebugMode()
.
- bge.constraints.DBG_NODEBUG¶
No debug.
- Value
0
- bge.constraints.DBG_DRAWWIREFRAME¶
Draw wireframe in debug.
- Value
1
- bge.constraints.DBG_DRAWAABB¶
Draw Axis Aligned Bounding Box in debug.
- Value
2
- bge.constraints.DBG_DRAWFREATURESTEXT¶
Draw features text in debug.
- Value
4
- bge.constraints.DBG_DRAWCONTACTPOINTS¶
Draw contact points in debug.
- Value
8
- bge.constraints.DBG_NOHELPTEXT¶
Debug without help text.
- Value
32
- bge.constraints.DBG_DRAWTEXT¶
Draw text in debug.
- Value
64
- bge.constraints.DBG_PROFILETIMINGS¶
Draw profile timings in debug.
- Value
128
- bge.constraints.DBG_ENABLESATCOMPARISION¶
Enable sat comparision in debug.
- Value
256
- bge.constraints.DBG_DISABLEBULLETLCP¶
Disable Bullet LCP.
- Value
512
- bge.constraints.DBG_ENABLECCD¶
Enable Continous Collision Detection in debug.
- Value
1024
- bge.constraints.DBG_DRAWCONSTRAINTS¶
Draw constraints in debug.
- Value
2048
- bge.constraints.DBG_DRAWCONSTRAINTLIMITS¶
Draw constraint limits in debug.
- Value
4096
- bge.constraints.DBG_FASTWIREFRAME¶
Draw a fast wireframe in debug.
- Value
8192
Create Constraint Constants¶
Constraint type to be used with createConstraint()
.
- bge.constraints.POINTTOPOINT_CONSTRAINT¶
- Value
1
- bge.constraints.LINEHINGE_CONSTRAINT¶
- Value
2
- bge.constraints.ANGULAR_CONSTRAINT¶
- Value
3
- bge.constraints.CONETWIST_CONSTRAINT¶
- Value
4
- bge.constraints.VEHICLE_CONSTRAINT¶
- Value
11
- bge.constraints.GENERIC_6DOF_CONSTRAINT¶
- Value
12