2Dポイント(x、y)があり、それをベクターに投影したいので、レイトレーシングを実行して、ユーザーが3Dオブジェクトをクリックしたかどうかを確認できます。他のすべてのコードは、次の場合を除いて記述しています。私は自分の関数に戻って、マウスのxyコードからベクトルを取得しました。視野を考慮していませんでした。「ブードゥー」の修正はそうではないため、要因が何であるかを推測したくありません。ライブラリの良いアイデア。数学の魔術師は助けたいですか?:-)。
これが私の現在のコードで、カメラのFOVを適用する必要があります。
sf::Vector3<float> Camera::Get3DVector(int Posx, int Posy, sf::Vector2<int> ScreenSize){
//not using a "wide lens", and will maintain the aspect ratio of the viewport
int window_x = Posx - ScreenSize.x/2;
int window_y = (ScreenSize.y - Posy) - ScreenSize.y/2;
float Ray_x = float(window_x)/float(ScreenSize.x/2);
float Ray_y = float(window_y)/float(ScreenSize.y/2);
sf::Vector3<float> Vector(Ray_x,Ray_y, -_zNear);
// to global cords
return MultiplyByMatrix((Vector/LengthOfVector(Vector)), _XMatrix, _YMatrix, _ZMatrix);
}