Package com.jme3.bullet.objects
Class VehicleWheel
java.lang.Object
com.jme3.bullet.objects.VehicleWheel
- All Implemented Interfaces:
Savable
Stores info about one wheel of a PhysicsVehicle
-
Field Summary
Modifier and TypeFieldDescriptionprotected Vector3f
protected Vector3f
protected float
protected boolean
protected Vector3f
protected float
protected float
protected float
protected float
protected float
protected float
protected final Quaternion
protected Matrix3f
protected com.bulletphysics.dynamics.vehicle.WheelInfo
protected float
protected float
protected Spatial
protected Vector3f
protected Quaternion
-
Constructor Summary
ModifierConstructorDescriptionprotected
VehicleWheel
(Vector3f location, Vector3f direction, Vector3f axle, float restLength, float radius, boolean frontWheel) VehicleWheel
(Spatial spat, Vector3f location, Vector3f direction, Vector3f axle, float restLength, float radius, boolean frontWheel) -
Method Summary
Modifier and TypeMethodDescriptionvoid
getAxle()
returns the location where the wheel collides with the ground (world space)returns the location where the wheel collides with the ground (world space)returns the normal where the wheel collides with the ground (world space)returns the normal where the wheel collides with the ground (world space)float
returns how many degrees the wheel has turned since the last physics step.float
returns the object this wheel is in contact with or null if no contactfloat
float
float
float
float
float
returns how much the wheel skids on the ground (for skid sounds/smoke etc.)
0.0 = wheels are sliding, 1.0 = wheels have traction.float
com.bulletphysics.dynamics.vehicle.WheelInfo
float
float
void
getWheelWorldLocation
(Vector3f store) write the content of the wheelWorldLocation into the storevoid
getWheelWorldRotation
(Quaternion store) write the content of the wheelWorldRotation into the storeboolean
boolean
void
read
(JmeImporter im) void
setApplyLocal
(boolean applyLocal) void
setFrictionSlip
(float frictionSlip) the coefficient of friction between the tyre and the ground.void
setFrontWheel
(boolean frontWheel) void
setMaxSuspensionForce
(float maxSuspensionForce) The maximum suspension force, raise this above the default 6000 if your suspension cannot handle the weight of your vehicle.void
setMaxSuspensionTravelCm
(float maxSuspensionTravelCm) the maximum distance the suspension can be compressed (centimetres)void
setRadius
(float radius) void
setRestLength
(float restLength) void
setRollInfluence
(float rollInfluence) reduces the rolling torque applied from the wheels that cause the vehicle to roll over.void
setSuspensionStiffness
(float suspensionStiffness) the stiffness constant for the suspension.void
setWheelInfo
(com.bulletphysics.dynamics.vehicle.WheelInfo wheelInfo) void
setWheelsDampingCompression
(float wheelsDampingCompression) the damping coefficient for when the suspension is compressed.void
setWheelsDampingRelaxation
(float wheelsDampingRelaxation) the damping coefficient for when the suspension is expanding.void
setWheelSpatial
(Spatial wheelSpatial) void
void
write
(JmeExporter ex)
-
Field Details
-
wheelInfo
protected com.bulletphysics.dynamics.vehicle.WheelInfo wheelInfo -
frontWheel
protected boolean frontWheel -
location
-
direction
-
axle
-
suspensionStiffness
protected float suspensionStiffness -
wheelsDampingRelaxation
protected float wheelsDampingRelaxation -
wheelsDampingCompression
protected float wheelsDampingCompression -
frictionSlip
protected float frictionSlip -
rollInfluence
protected float rollInfluence -
maxSuspensionTravelCm
protected float maxSuspensionTravelCm -
maxSuspensionForce
protected float maxSuspensionForce -
radius
protected float radius -
restLength
protected float restLength -
wheelWorldLocation
-
wheelWorldRotation
-
wheelSpatial
-
tmp_Matrix
-
tmp_inverseWorldRotation
-
-
Constructor Details
-
VehicleWheel
protected VehicleWheel() -
VehicleWheel
-
VehicleWheel
-
-
Method Details
-
updatePhysicsState
public void updatePhysicsState() -
applyWheelTransform
public void applyWheelTransform() -
getWheelInfo
public com.bulletphysics.dynamics.vehicle.WheelInfo getWheelInfo() -
setWheelInfo
public void setWheelInfo(com.bulletphysics.dynamics.vehicle.WheelInfo wheelInfo) -
isFrontWheel
public boolean isFrontWheel() -
setFrontWheel
public void setFrontWheel(boolean frontWheel) -
getLocation
-
getDirection
-
getAxle
-
getSuspensionStiffness
public float getSuspensionStiffness() -
setSuspensionStiffness
public void setSuspensionStiffness(float suspensionStiffness) the stiffness constant for the suspension. 10.0 - Offroad buggy, 50.0 - Sports car, 200.0 - F1 Car- Parameters:
suspensionStiffness
- the desired stiffness coefficient (10→off-road buggy, 50→sports car, 200→Formula-1 race car, default=20)
-
getWheelsDampingRelaxation
public float getWheelsDampingRelaxation() -
setWheelsDampingRelaxation
public void setWheelsDampingRelaxation(float wheelsDampingRelaxation) the damping coefficient for when the suspension is expanding. See the comments for setWheelsDampingCompression for how to set k.- Parameters:
wheelsDampingRelaxation
- the desired damping coefficient (default=2.3)
-
getWheelsDampingCompression
public float getWheelsDampingCompression() -
setWheelsDampingCompression
public void setWheelsDampingCompression(float wheelsDampingCompression) the damping coefficient for when the suspension is compressed. Set to k * 2.0 * FastMath.sqrt(m_suspensionStiffness) so k is proportional to critical damping.
k = 0.0 undamped/bouncy, k = 1.0 critical damping
0.1 to 0.3 are good values- Parameters:
wheelsDampingCompression
- the desired damping coefficient (default=4.4)
-
getFrictionSlip
public float getFrictionSlip() -
setFrictionSlip
public void setFrictionSlip(float frictionSlip) the coefficient of friction between the tyre and the ground. Should be about 0.8 for realistic cars, but can be increased for better handling. Set large (10000.0) for kart racers- Parameters:
frictionSlip
- the desired coefficient of friction between tyre and ground (0.8→realistic car, 10000→kart racer, default=10.5)
-
getRollInfluence
public float getRollInfluence() -
setRollInfluence
public void setRollInfluence(float rollInfluence) reduces the rolling torque applied from the wheels that cause the vehicle to roll over. This is a bit of a hack, but it's quite effective. 0.0 = no roll, 1.0 = physical behaviour. If m_frictionSlip is too high, you'll need to reduce this to stop the vehicle rolling over. You should also try lowering the vehicle's centre of mass- Parameters:
rollInfluence
- the rollInfluence to set
-
getMaxSuspensionTravelCm
public float getMaxSuspensionTravelCm() -
setMaxSuspensionTravelCm
public void setMaxSuspensionTravelCm(float maxSuspensionTravelCm) the maximum distance the suspension can be compressed (centimetres)- Parameters:
maxSuspensionTravelCm
- the desired maximum amount the suspension can be compressed or expanded, relative to its rest length (in hundredths of a physics-space unit, default=500)
-
getMaxSuspensionForce
public float getMaxSuspensionForce() -
setMaxSuspensionForce
public void setMaxSuspensionForce(float maxSuspensionForce) The maximum suspension force, raise this above the default 6000 if your suspension cannot handle the weight of your vehicle.- Parameters:
maxSuspensionForce
- the desired maximum force per wheel (default=6000)
-
getRadius
public float getRadius() -
setRadius
public void setRadius(float radius) -
getRestLength
public float getRestLength() -
setRestLength
public void setRestLength(float restLength) -
getGroundObject
returns the object this wheel is in contact with or null if no contact- Returns:
- the PhysicsCollisionObject (PhysicsRigidBody, PhysicsGhostObject)
-
getCollisionLocation
returns the location where the wheel collides with the ground (world space)- Parameters:
vec
- storage for the result (not null, modified)- Returns:
- a location vector (in physics-space coordinates)
-
getCollisionLocation
returns the location where the wheel collides with the ground (world space)- Returns:
- a new location vector (in physics-space coordinates)
-
getCollisionNormal
returns the normal where the wheel collides with the ground (world space)- Parameters:
vec
- storage for the result (not null, modified)- Returns:
- a unit vector (in physics-space coordinates)
-
getCollisionNormal
returns the normal where the wheel collides with the ground (world space)- Returns:
- a new unit vector (in physics-space coordinates)
-
getSkidInfo
public float getSkidInfo()returns how much the wheel skids on the ground (for skid sounds/smoke etc.)
0.0 = wheels are sliding, 1.0 = wheels have traction.- Returns:
- the relative amount of traction (0→wheel is sliding, 1→wheel has full traction)
-
getDeltaRotation
public float getDeltaRotation()returns how many degrees the wheel has turned since the last physics step.- Returns:
- the rotation angle (in radians)
-
read
- Specified by:
read
in interfaceSavable
- Throws:
IOException
-
write
- Specified by:
write
in interfaceSavable
- Throws:
IOException
-
getWheelSpatial
- Returns:
- the wheelSpatial
-
setWheelSpatial
- Parameters:
wheelSpatial
- the wheelSpatial to set
-
isApplyLocal
public boolean isApplyLocal() -
setApplyLocal
public void setApplyLocal(boolean applyLocal) -
getWheelWorldRotation
write the content of the wheelWorldRotation into the store- Parameters:
store
- storage for the result (not null, modified)
-
getWheelWorldLocation
write the content of the wheelWorldLocation into the store- Parameters:
store
- storage for the result (not null, modified)
-