下面是自己对通过鼠标拾取方法的理解,如果有不正确的地方请各位指出,谢谢!
假设鼠标在屏幕上的点击点坐标为p1(x,y),通过下面步骤实现拾取:
1. 由于p1是在屏幕坐标下获得的,需要将其转换为观察坐标系中投影窗口上坐标,假设观察坐标系中对应坐标为p2,此处本人还不知道如何获取视口到窗口坐标系的转换矩阵,也就是无法知道窗口坐标的范围,请知道的高手给予帮忙。
2. 使用观察坐标系的坐标原点p0(0,0,0)为起点,然后以p0p2为方向定义拾取射线
3. 将拾取射线和物体转换为统一坐标系下,此处拾取射线p0p2是在观察坐标系下定义的,需要将其转换为世界坐标系或物体坐标系
4. 使用转换后的拾取射线,逐个判断是否与物体的包围盒相交