1

我已经加载了这个 3D 模型。然后在同一个屏幕上,我在上面绘制了很多点。如何确定这些点是否在模型上。只考虑 XY 平面。

任何人都可以教我如何只在 XY 平面上进行 3D 相交测试,因为我真的一无所知。

4

1 回答 1

2

有几种方法可以做到这一点。最实用的选择可能是:

a) 使用渲染模型时写入的模板缓冲区和 glReadPixels(...) 来查看是否为屏幕上的特定 (x,y) 点设置了模板缓冲区。

b) 将 (x,y) 点从相机位置转换为 3D 空间中的一条线。然后对您的模型进行线交叉测试(简单但缓慢的方法是针对每个多边形进行测试,您可以通过使用包围体等清楚地获得更快的结果)

c) 使用 glReadPixels(...) 读取屏幕上 (x,y) 点的颜色。显然,只有当您能够准确区分哪些颜色是模型的一部分时,这才会起作用。

如果您能够为此目的设置和使用模板缓冲区,那么 a) 可能是最容易实现的。否则 b) 可能是最有用的通用解决方案。

于 2010-02-10T18:54:34.397 回答