Предлагаемый вами вызов gluLookAt установит камеру на (30,30,30)
и укажет ее на начало координат.
gluLookAt(Ship_Position_X,Ship_Position_Y,Ship_Position_Z,
Ship_Forward_X,Ship_Forward_Y,Ship_Forward_Z,
0,1,0);
Это больше похоже на то, что вам нужно. Вам придется называть его каждый кадр, чтобы камера следила за движением корабля. Если вы хотите, чтобы корабль выполнял бочку, вам понадобятся дополнительные переменные для отслеживания вектора подъема.
Мне нравится иметь какую-то структуру для хранения координат, чтобы я мог перегружать функции gl, чтобы принимать их и записывать более короткие вызовы функций, например
// roll your own glVec, or use a co-ordinate class provided by a library you happen to be using.
inline void gluLookAt(glVec position, glVec forward, glVec up)
{
gluLookAt(position.x,position.y,position.z,forward.x,forward.y,forward.z,up.x,up.y,up.z);
}