我已经加载了这个3D模型。然后在同一个屏幕上,我有很多点绘制它。如何确定点是否在模型上。只需要考虑XY平面。
任何人都可以教我如何只在XY平面上进行3D交叉测试,因为我真的很无能为力。
答案 0 :(得分:2)
有几种方法可以做到这一点。最实用的选择可能是:
a)使用在渲染模型时写入的模板缓冲区和glReadPixels(...),以查看是否为屏幕上的特定(x,y)点设置了模板缓冲区。
b)将(x,y)点从摄像机位置转换为3D空间中的一条线。然后对你的模型做一个线交叉测试(简单但很慢的方法是测试每个多边形,你可以通过使用边界体积等明显获得更快的结果。)
c)使用glReadPixels(...)读取屏幕上(x,y)点的颜色。显然,只有当您能够准确区分哪些颜色是模型的一部分时,这才会起作用。
如果您能够为此目的设置和使用模板缓冲区,那么a)可能是最简单的实现。否则b)可能是最有用的通用解决方案。