Uhm I thought I made a reply but evidently I didn't.
Basically, you're asking how I actually built the transformation matrix for centering around the cockpit, well, I just did what I could to build the inverse matrix for the hovertank's perspective. I'll just post the code that does the work
Code:
Matrix4x4 rot,trans;
Matrix3x3 invert = pTest_Hovertank->CurrentState.mMat_Orientation;
invert.Invert();
rot = invert;
trans.SetTranslation(&((pTest_Hovertank->CurrentState.mPosition+Vector3(0,10,0))*-1));
Matrix4x4 final = rot*trans;
R_Replace4x4GLMatrix(final,GL_MODELVIEW);
As per rendering the cockpit, well, my models are low poly enough that I just render the whole thing and let GL take care of it (manually clipping away, as you said). However, if I was being real strict, I would render the cockpit (in object coordinates) from every possibible perspective and list the faces that get rendered. But, like I said, I don't do much with fancy graphics/shaders etc so rendering speed has never been an issue (the code runs at 100.0f FPS constantly, which is the target for the physics).
Yeah.