8 つの頂点を持つ立方体をレンダリングしています。立方体を回転させたり近づけたりすると、一部の頂点がニア クリッピング プレーンによってクリッピングされる場合があります。ただし、私の問題では何らかの理由で、立方体の端にある交点をニア クリッピング プレーンと見つける必要があります。ポイント数が変動することは承知しております。だから私が考えたのは、ニアクリッピングプレーン(おそらく目の空間で-しかしどうやって?)を取得し、マトリックスの逆計算を行ってキューブのオブジェクト空間で座標を取得することでした。その後、交差点を見つけて問題を解決できます。しかし、ここでの問題は次のとおりです。
- ニア クリッピング プレーンの各コーナーの座標を取得するにはどうすればよいですか? (または平面方程式の係数)
- オブジェクト空間に戻るにはどうすればよいですか?
テスト:
座標を正しく取得できるかどうかを確認するためのテストとして、これを試しました。MVM (ModelView Matrix) と PM (Projection Matrix) の逆を取得することを試みました。そして、V1 = (-1,-1,-1,1)、V2 = (1, -1, -1, 1)、V3 = (1, 1, -1, 1) を持つニア クリッピング プレーンを想像してみました。 、および V4 = (-1, 1, -1, 1) 座標。だから私は4つの頂点のそれぞれに対してこれを行うかどうか考えていました:
V1 = IMVM * (IPM * V1);
V2 = IMVM * (IPM * V2);
V3 = IMVM * (IPM * V3);
V4 = IMVM * (IPM * V4);
ここで、IMVM はモデル ビュー マトリックスの逆数であり、IPM は射影マトリックスの逆数です。次に、これらの 4 つのポイントを現在ロードされている行列 (の逆数を使用したもの) でレンダリングすると、逆乗算が openGL の現在ロードされている行列との乗算によってキャンセルされているはずなので、画面の前に立っている敷居の正方形が表示されます。 . でもなぜかうまくいかず、転置してノーマルにしてみました。コラムメジャーなどに気をつけていたのですが、うまくいかないようで、スチル(ニアクリッピングプレーン)ではなく、常に動いたり飛び跳ねたりするプレーンになってしまいます!!