一部の人にとっては非常に明白な質問になると思うので、誰かがすぐにそれを片付けてくれることを願っています. 頂点のグリッドを描画する XNA アプリがあり、カメラはその上に 20.0f 配置されています。カメラを 0、-20、0 に、ターゲットを 0、0、0 に配置すると、頂点が表示されません。X 軸または Z 軸を 0.1 に少し調整すると、頂点が表示されます。どうしてこれなの?
ありがとう
コードが表示されない場合、最も可能性の高い理由は、ビュー マトリックスのアップ ベクトルがカメラが見ている方向と平行であるためです。カメラが 0,-20,0 にあり、ターゲットが 0,0,0 で、アップ ベクトルが 0,1,0 の場合、その平行な状況が発生します。位置またはターゲットをわずかにオフセットすると、この平行な状況が解消されます。
CreateLookAt() を実行すると、フレームワーク コードの背後で、カメラが見ている方向 (ターゲット - 位置) とアップ ベクトルが交差します。交差している 2 つのベクトルが平行である場合、長さゼロのベクトル結果が返され、ビュー マトリックスが壊れます。
教訓: アップ ベクトルをカメラが見ている方向と平行にしないでください。