If you are using a cockpit view then really all you do is stick the camera in the cockpit of the 3D model. Now you will have to have a more detailed cockpit model surrounding the player because you won't be able to get good results by just using a low res poly model. So you have 2 models. One for the ship and one for the cockpit of the ship. The ship model would show the cockpit supports, and the flat surfaces where the more detailed models will be. The detailed model would then overlay on top of the ship model to create your final cockpit.
The camera needs to be translated to the cockpit area and then everything needs to be drawn relative to the camera. Note that in an actual plane, car, etc, the center of rotation for the object is NOT in the cockpit and NOT in the driver's seat. So this works out just like it does in real life.
In Direct3D this will translate your camera, if you have a camera class already setup. I'm assuming your 3 vectors are correct and orthogonal. I normally use Look, Right, and Up for all objects including cameras.
Code:
//Place camera in cockpit
//Camera translation matrix
D3DXMATRIX CameraTrans;
//Camera view matrix
D3DXMATRIX CameraView;
//CameraWorldView -> with translation
D3DXMATRIX CameraWorldView;
//Build matrix to ranslate camera to cockpit position in model space
D3DXMatrixTranslation(CameraTrans,Cockpit.Pos.x,Cockpit.Pos.y,Cockpit.Pos.z);
//Get current view matrix
Camera.GetViewMatrix(&CameraView);
//Translate camera
CameraWorldView=CameraView*CameraTrans;
//Set camera view matrix
Camera.SetViewMatrix(&CameraWorldView);
//Set view transform
Device->SetTransform(D3DTS_VIEW,&CameraWorldView);
I may have missed a step. You might have to compute the inverse of the camera view matrix and then multiply the translation by that - then set the transform to this matrix.
To place the camera behind the ship translate the camera by the negative ship look vector.