btRaycastVehicle - 运动方向和车轮旋转

btRaycastVehicle - movement direction and wheels rotation

I'm trying to use btRaycastVehicle in my opengl engine. Bullet world space coordinate system is the same as opengl world space coordinate system, i.e. -z axis goes forward (right handed). btTransform places rigid bodies as I expect.

When I add the engine force:

physicsEngine.getVehicle()->applyEngineForce(500, 2);
physicsEngine.getVehicle()->applyEngineForce(500, 3);

the vehicle moves in +z direction but wheels don't rotate.

A third parameter of addWheel function(wheelAxleCS) is defined as [-1, 0, 0]. I have noticed that by default a vehicle forward vector (vehicle->getForwardVector()) is defined as [0, 1, 0], so how it is possible that the car moves in +z direction at all?

How to achieve a movement in -z direction and wheels rotation ?

I get transformations this way:

//vehicle body
vehicle->getRigidBody()->getMotionState()->getWorldTransform(transform);
transform.getOpenGLMatrix(mat);
//for each wheel
vehicle->updateWheelTransform(index, true);
transform = vehicle->getWheelInfo(index).m_worldTransform;
transform.getOpenGLMatrix(mat);

Edit 1

When I set the vehicle coordinate system this way:

int rightIndex = 0;
int upIndex = 1;
int forwardIndex = 2;
physicsEngine.getVehicle()->setCoordinateSystem(rightIndex,upIndex,forwardIndex);

then the forward vector is [0,0,1] and the car moves in +z direction with correct wheels rotation but I have still following questions:

  • Why the car move in +z direction without wheels rotation when forward vector is [0,1,0] ?
  • How to achieve movement in -z direction ?