レイがオブジェクトに「十分に近づく」場合、基本的に私に通知する関数を実装するのに苦労しています
基本的に、レイを作成するためにレイピッキング @nornagonsolutionの実装を実装しました。画面上のオブジェクトはポイントを中心にしています。光線がこの点から一定の距離内にある場合、オブジェクトが選択されていると思います。
私はそれらの3つのポイント(X、Y、Z)を呼び出します:_pickFrom、_pickToおよびpO
まず、これは画面上のマウスの位置に応じてレイを計算する私の方法です。
public static void Pick(int x, int y)
{
float nx = 2.0f * ((float)x) / ((float)_width) - 1.0f;
float ny = 1.0f - 2.0f * ((float)y) / ((float)_height);
Matrix4 unview = Matrix4.Invert(Matrix4.Mult(_projectionMatrix, _modelviewMatrix));
Vector4 nearPoint = Vector4.Transform(new Vector4(nx, ny, 0, 1), unview);
_pickTo = nearPoint - _pickFrom;
}
_pickFromは、シーン内のカメラの位置です。_pickToは、ピックレイの方向です。_widthと_heightはrendercontextのサイズです。
ピックレイまでのポイントの距離を与える関数をどのように実装しますか?