2011-06-24 4 views
0

こんにちは私は計画と遠くの計画に近いところまで見つけました..次にこれを使って私はオブジェクトに触れました..誰にも助けてください..どのように私はOpenGLの上でタッチを計算するのですか?

-(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); 
} 

答えて

2

と...

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

今、あなたは、マウスの位置によってシーンにキャストだ線を決定しましたことを、あなたは光線がオブジェクトのいずれかと交差するかどうかをテストする必要があります。 OpenGLはそこにお手伝いできません。なぜなら、OpenGLはスクリーン上に物を描いているからです。

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

関連する問題