|
|
在我的游戏中,需要对点与三角面的单个或多个选取。选取点,用鼠标拉一个框,进行框选。选取三角面,则用鼠标直接点击三角面。
我的方法是:
点选取:鼠标拉框时,鼠标按下时的窗口客户区的点为p1,放开时点为p2.p1,p2就是一个长方形的左上角与右下角,由p1,p2可计算出p3,p4,即左下角与右上角。把p1,p2,p3,p4变换为世界坐标系的坐标。设pos为摄相机所在位置,由pos与p1,p2,p3,p4可构成四个平面,这四个平面都由向内的法向量与pos点表示。最后,遍历模型中所有的点,判断一个点是否在这四个平面内就OK了。
三角面选取:设鼠标在窗口客户区点击的点为p0,而三角面的三个点为p1,p2,p3,摄相机所在位置在pos。先把p0换算为世界坐标系坐标(这个点在近平面上),再由pos与p1,p2,p3组成了三个平面(一个三棱锥体)。最后,只须判断p0点是否在这个三棱锥体中就行了。
我已经在程序里实现了上述的算法,只是一个较大的模型处理的时间有些长,我的方法是否正确?或还有没有其它更快的方法?请指教。。。。。。。。。 |
|