com.jme3.bullet.objects
Class VehicleWheel

java.lang.Object
  extended by com.jme3.bullet.objects.VehicleWheel
All Implemented Interfaces:
Savable

public class VehicleWheel
extends java.lang.Object
implements Savable

Stores info about one wheel of a PhysicsVehicle


Field Summary
protected  Vector3f axle
           
protected  Vector3f direction
           
protected  float frictionSlip
           
protected  boolean frontWheel
           
protected  Vector3f location
           
protected  float maxSuspensionForce
           
protected  float maxSuspensionTravelCm
           
protected  float radius
           
protected  float restLength
           
protected  float rollInfluence
           
protected  float suspensionStiffness
           
protected  Quaternion tmp_inverseWorldRotation
           
protected  Matrix3f tmp_Matrix
           
protected  long wheelId
           
protected  int wheelIndex
           
protected  float wheelsDampingCompression
           
protected  float wheelsDampingRelaxation
           
protected  Spatial wheelSpatial
           
protected  Vector3f wheelWorldLocation
           
protected  Quaternion wheelWorldRotation
           
 
Constructor Summary
VehicleWheel()
           
VehicleWheel(Spatial spat, Vector3f location, Vector3f direction, Vector3f axle, float restLength, float radius, boolean frontWheel)
           
VehicleWheel(Vector3f location, Vector3f direction, Vector3f axle, float restLength, float radius, boolean frontWheel)
           
 
Method Summary
 void applyWheelTransform()
           
 Vector3f getAxle()
           
 Vector3f getCollisionLocation()
          returns the location where the wheel collides with the ground (world space)
 Vector3f getCollisionLocation(Vector3f vec)
          returns the location where the wheel collides with the ground (world space)
 Vector3f getCollisionNormal()
          returns the normal where the wheel collides with the ground (world space)
 Vector3f getCollisionNormal(Vector3f vec)
          returns the normal where the wheel collides with the ground (world space)
 float getDeltaRotation()
          returns how many degrees the wheel has turned since the last physics step.
 float getDeltaRotation(long wheelId, int wheelIndex)
           
 Vector3f getDirection()
           
 float getFrictionSlip()
           
 PhysicsCollisionObject getGroundObject()
          returns the object this wheel is in contact with or null if no contact
 Vector3f getLocation()
           
 float getMaxSuspensionForce()
           
 float getMaxSuspensionTravelCm()
           
 float getRadius()
           
 float getRestLength()
           
 float getRollInfluence()
           
 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.
 float getSkidInfo(long wheelId, int wheelIndex)
           
 float getSuspensionStiffness()
           
 long getWheelId()
           
 float getWheelsDampingCompression()
           
 float getWheelsDampingRelaxation()
           
 Spatial getWheelSpatial()
           
 boolean isApplyLocal()
           
 boolean isFrontWheel()
           
 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 vehcile.
 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 setVehicleId(long vehicleId, int wheelIndex)
           
 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 updatePhysicsState()
           
 void write(JmeExporter ex)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

wheelId

protected long wheelId

wheelIndex

protected int wheelIndex

frontWheel

protected boolean frontWheel

location

protected Vector3f location

direction

protected Vector3f direction

axle

protected Vector3f 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

protected Vector3f wheelWorldLocation

wheelWorldRotation

protected Quaternion wheelWorldRotation

wheelSpatial

protected Spatial wheelSpatial

tmp_Matrix

protected Matrix3f tmp_Matrix

tmp_inverseWorldRotation

protected final Quaternion tmp_inverseWorldRotation
Constructor Detail

VehicleWheel

public VehicleWheel()

VehicleWheel

public VehicleWheel(Spatial spat,
                    Vector3f location,
                    Vector3f direction,
                    Vector3f axle,
                    float restLength,
                    float radius,
                    boolean frontWheel)

VehicleWheel

public VehicleWheel(Vector3f location,
                    Vector3f direction,
                    Vector3f axle,
                    float restLength,
                    float radius,
                    boolean frontWheel)
Method Detail

updatePhysicsState

public void updatePhysicsState()

applyWheelTransform

public void applyWheelTransform()

getWheelId

public long getWheelId()

setVehicleId

public void setVehicleId(long vehicleId,
                         int wheelIndex)

isFrontWheel

public boolean isFrontWheel()

setFrontWheel

public void setFrontWheel(boolean frontWheel)

getLocation

public Vector3f getLocation()

getDirection

public Vector3f getDirection()

getAxle

public Vector3f 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 -

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 -

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 -

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 increased for better handling. Set large (10000.0) for kart racers

Parameters:
frictionSlip -

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 -

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 vehcile.

Parameters:
maxSuspensionTravelCm -

getRadius

public float getRadius()

setRadius

public void setRadius(float radius)

getRestLength

public float getRestLength()

setRestLength

public void setRestLength(float restLength)

getGroundObject

public PhysicsCollisionObject getGroundObject()
returns the object this wheel is in contact with or null if no contact

Returns:
the PhysicsCollisionObject (PhysicsRigidBody, PhysicsGhostObject)

getCollisionLocation

public Vector3f getCollisionLocation(Vector3f vec)
returns the location where the wheel collides with the ground (world space)


getCollisionLocation

public Vector3f getCollisionLocation()
returns the location where the wheel collides with the ground (world space)


getCollisionNormal

public Vector3f getCollisionNormal(Vector3f vec)
returns the normal where the wheel collides with the ground (world space)


getCollisionNormal

public Vector3f getCollisionNormal()
returns the normal where the wheel collides with the ground (world space)


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.


getSkidInfo

public float getSkidInfo(long wheelId,
                         int wheelIndex)

getDeltaRotation

public float getDeltaRotation()
returns how many degrees the wheel has turned since the last physics step.


getDeltaRotation

public float getDeltaRotation(long wheelId,
                              int wheelIndex)

read

public void read(JmeImporter im)
          throws java.io.IOException
Specified by:
read in interface Savable
Throws:
java.io.IOException

write

public void write(JmeExporter ex)
           throws java.io.IOException
Specified by:
write in interface Savable
Throws:
java.io.IOException

getWheelSpatial

public Spatial getWheelSpatial()
Returns:
the wheelSpatial

setWheelSpatial

public void setWheelSpatial(Spatial wheelSpatial)
Parameters:
wheelSpatial - the wheelSpatial to set

isApplyLocal

public boolean isApplyLocal()

setApplyLocal

public void setApplyLocal(boolean applyLocal)