0

こんにちは、私は近くの計画と遠くの計画を見つけました..次に、これを使用して識別する方法は、オブジェクトに触れました..誰か助けてください..これが私のコードです..

-(Boolean) checkCollission:(CGPoint)winPos
{   
    winPos.y = (float)__viewport[3] - winPos.y;

    Point3D nearPoint;
    Point3D farPoint;
    Point3D rayVector;

    //Retreiving position projected on near plan
    gluUnProject( winPos.x, winPos.y , 0, __modelview, __projection, __viewport, &nearPoint.x, &nearPoint.y, &nearPoint.z);

    //Retreiving position projected on far plan
    gluUnProject( winPos.x, winPos.y,  1, __modelview, __projection, __viewport, &farPoint.x, &farPoint.y, &farPoint.z);
}
4

1 に答える 1

2

そして…</p>

rayVector.x = farPoint.x - nearPoint.x
rayVector.y = farPoint.y - nearPoint.y
rayVector.z = farPoint.z - nearPoint.z

マウスの位置によってシーンにキャストされるレイを決定したので、レイがいずれかのオブジェクトと交差するかどうかをテストする必要があります。OpenGL は画面上に描画するだけなので、OpenGL は役に立ちません。

Picking、それはあなたが求めている問題であり、OpenGL 以外の問題です。「ピッキング レイ交差テスト」という用語をインターネットで検索すると、多くの結果が得られるはずです。

于 2011-06-24T06:55:05.053 に答える