通过射线求交实现物体的拾取

通过射线求交实现物体的拾取_第1张图片

如上图, 先利用gluUnProject函数将屏幕上的鼠标的二维坐标转化为照相机视域中近平面上的点B1(X1, Y1, Znear),或者远平面上对应的点B2(X2, Y2, Zfar); 一般使用近平面上的B1点。

视点的为A(X0, Y0, Z0)。

A和B1确定一个以A为起点的射线(更准确叫视线)L, 用L去和场景中的物体求交。有交点的物体被选中,保存到到拾取数组中。

顺便说一句:场景中物体一般都是以场景树的形式存在,这样将会大大提高和视线求交的效率。

你可能感兴趣的:(通过射线求交实现物体的拾取)