繁体   English   中英

OpenGL ES平铺对象(多维数据集?),带有可单击的平铺

[英]OpenGL ES tiled object (cube?), with clickable tiles

我开始学习opengl,并试图制作3D象棋,但我无法弄清楚,我如何知道我在“表格”中单击的位置以制作适当的动画,有什么建议吗?

这称为“ 3D拾取”。 您必须将屏幕坐标转换为世界坐标。 从那里开始进行光线/碰撞对象(边界框?)的相交测试。 如果它们相交,那就是用户单击的地方。

要解决深度顺序问题,您需要做更多的事情,例如找到第一次与每个对象相交的时间,然后选择时间最短(正)的对象。

如果您用Google搜索“ 3D Picking”,则可能会找到所需的内容。

这是一个教程: http : //nehe.gamedev.net/data/lessons/lesson.asp?lesson=32

请注意,这并非特定于任何形状的边界对象,例如边界框,多边形,曲线等。您只需要弄清楚每种类型的对象要支持的相交测试的数学即可。

编辑:

在链接之前,我没有读过该教程,我只是觉得NEHE是所有很酷的孩子学习OpenGL的地方(十年前……)。

以下是OpenGL常见问题中有关选择的内容:

http://www.opengl.org/resources/faq/technical/selection.htm

waldecir,寻找射线拾取功能。 它是通过单击的像素从场景的相机中心发送光线的名称(实际上是通过该像素在代表3D世界中“屏幕玻璃表面”的相机平面上的平移位置)并返回最前面的多边形射线击中一些信息。 通常在多边形的表面轴内坐标,例如UV或纹理坐标。 通过检查坐标,可以确定用户单击的正方形。

可以从任何位置和任何方向发送光线,因此很可能您必须获取相机的位置及其平面中心,但是文档应该可以在此为您提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM