D3D11 を試していますが、モデルを正しくレンダリングするのに苦労しています。
これが私の問題です。私の世界とビューの変換は正しいように見えますが
、視点の変換は間違っているようです。
最初にモデルをレンダリングしたとき、何か違和感を感じたので、モデルを回転させてみました。
すると、モデルのカメラに近い部分が小さく見え、遠くの部分が大きく見えることに気付きました。
関連する場合は、 assimp を使用してモデルをロードしています。その方法は次のとおりです。
mScene = aiImportFile(filename.c_str(), aiProcessPreset_TargetRealtime_MaxQuality | aiProcess_GenSmoothNormals | aiProcess_ConvertToLeftHanded | aiProcess_TransformUVCoords);
そして、これが私の射影行列を構築する方法です。
mProjection = XMMatrixPerspectiveFovLH(XMConvertToRadians(45.0f), 800.0f / 600.0f, -1.0f, 1.0f);
XMMatrixPerspectiveFovLH の nearZ および farZ 引数をいじりました。
フレームごとに farZ を徐々に増やしてみたところ、値が大きくなるにつれてファー クリッピング プレーンがカメラにどんどん近づいていくことがわかりました。
頂点シェーダーでは、頂点位置を使って次のことを行っています。それはかなり基本的です。
Out.Position = mul(mul(mul(position, World), CameraView), CameraProjection);
モデルは、位置、スケーリング、回転、およびビュー位置に関して正しくレンダリングされます。
したがって、ワールドとビューの変換は問題なく、問題は射影行列に関するものであると想定しています。
要約すると、投影された頂点の Z 値は、どういうわけか「反転」していると考えています。
グーグルで何度も検索しましたが、役に立ちませんでした。
誰かが私が間違っている可能性があることを指摘できれば、それは非常にありがたいです.
私のコードの一部を参照する必要がある場合は、教えてください。