Hi guys

I thought I'd post some more code.

There is what I'm doing.

Firstly I render the world after setting the camera to the position of the object and using the values from the ShipRot matrix to set the view and up vectors

Then I render the actual object from behind.
[pascal]
glPushMatrix;
ShipPos := dBodyGetPosition(Ship.Body); // get position of ODE body
ShipRot := dBodyGetRotation(Ship.Body); // get rotation of ODE body
// set the camera
UserCam.PositionCamera(ShipPos[0], ShipPos[1], ShipPos[2],
ShipRot[8],ShipRot[9],ShipRot[10],
ShipRot[4],ShipRot[5],ShipRot[6]);
// call gluLookAt
UserCam.Look;
// render world
glPopMatrix;
glPushMatrix;
// set teh camerato be behind the object
UserCam.PositionCamera(0,10,-100,0,0,0,0,1,0);
// call gluLookAt
UserCam.Look;
// render player object
glPopMatrix;
[/pascal]

This works for rolling left and right, but not for pitching up or down.