Class VehicleWheel

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

public class VehicleWheel extends Object implements Savable
Stores info about one wheel of a PhysicsVehicle
  • Field Details

    • wheelInfo

      protected com.bulletphysics.dynamics.vehicle.WheelInfo wheelInfo
    • 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 Details

    • VehicleWheel

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

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

      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)
      Parameters:
      vec - storage for the result (not null, modified)
      Returns:
      a location vector (in physics-space coordinates)
    • getCollisionLocation

      public Vector3f getCollisionLocation()
      returns the location where the wheel collides with the ground (world space)
      Returns:
      a new location vector (in physics-space coordinates)
    • getCollisionNormal

      public Vector3f getCollisionNormal(Vector3f vec)
      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

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

      public void read(JmeImporter im) throws IOException
      Specified by:
      read in interface Savable
      Throws:
      IOException
    • write

      public void write(JmeExporter ex) throws IOException
      Specified by:
      write in interface Savable
      Throws:
      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)
    • getWheelWorldRotation

      public void getWheelWorldRotation(Quaternion store)
      write the content of the wheelWorldRotation into the store
      Parameters:
      store - storage for the result (not null, modified)
    • getWheelWorldLocation

      public void getWheelWorldLocation(Vector3f store)
      write the content of the wheelWorldLocation into the store
      Parameters:
      store - storage for the result (not null, modified)