3Dのシューティングゲームを制作しているのですが
Quaternionを使った機体の回転がうまくいきません

Matrix PitchRot = Matrix::CreateFromQuaternion(S_SceneData->S_PitchUpDown_Q);
Matrix YawRot = Matrix::CreateFromQuaternion(S_SceneData->S_Yaw_Q);
Matrix RollRot = Matrix::CreateFromQuaternion(S_SceneData->S_Roll_Q);

Matrix Roll = PitchRot * YawRot * RollRot;

S_SceneData->S_PlaneFrontVec = Vector3::Transform(S_SceneData->S_PlaneFrontVecTmp, Roll);

S_SceneData->S_PlaneUPVec = Vector3::Transform(S_SceneData->S_PlaneUPVecTmp, Roll);

S_SceneData->S_PlaneSideVec = Vector3::Transform(S_SceneData->S_PlaneSideVecTmp, Roll);

S_SceneData->S_PitchUpDown_Q = Quaternion::CreateFromAxisAngle(S_SceneData->S_PlaneSideVec, XMConvertToRadians(-S_SceneData->S_PitchUpDownNum));

S_SceneData->S_Roll_Q = Quaternion::CreateFromAxisAngle(S_SceneData->S_PlaneFrontVec, XMConvertToRadians(S_SceneData->S_RollNum));

plane = Matrix::CreateFromQuaternion(S_SceneData->S_PitchUpDown_Q) * Matrix::CreateFromQuaternion(S_SceneData->S_Roll_Q);
Matrix PlaneMat = plane * PlaneTrans;

ヨーの回転はまだ実装していないのですが
ピッチアップ/ダウンとロールはどちらかだけならしっかりと回転してくれる状況です

どなたかうまくいくやり方が分かる方教えてください