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 回答