我开始研究opengl,并且正在做一个3d象棋,但我无法想象,我怎么知道我在哪里点击了“表格”做出适当的动画,有什么建议?OpenGL ES平铺对象(立方体?),用可点击的图块
1
A
回答
0
这被称为“3D拾取”。您必须将屏幕坐标转换为世界坐标。从那里,做一个射线/碰撞物体(包围盒?)相交测试。如果它们相交,那就是用户点击的地方。
为了解决深度排序问题,您必须做更多的工作,比如找到每个对象的第一次交叉点,然后选择具有最低(正)时间的交点。
如果你谷歌的“3D采摘”,你可能会发现你在找什么。
这里是一个教程: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=32
注意,这不是针对边界对象的任何形状,无论是边框,多边形,曲线等,你一定要弄清楚数学用于您想要支持的每种类型对象的相交测试。
编辑:
之前,我挂它,我没看过该教程,我只是想出讷河是所有时尚的年轻人(当然十年前......)学习的OpenGL。
下面是OpenGL的常见问题解答一些关于采摘:
0
waldecir,寻找一个raypick功能。它是通过点击的像素(实际上,通过相机平面上代表3D世界中“屏幕的玻璃表面”的像素的平移位置)从场景的相机中心发送光线的名称,并返回最前面的多边形ray与一些信息一起点击。通常在多边形的表面轴线内的坐标,例如, UV或纹理坐标。通过检查坐标,您可以确定用户点击了哪个平方。
光线可以从任何位置和任何方向发送,因此您可能需要获取相机位置和其平面中心,但文档应该能够帮助您。
相关问题
- 1. OpenGL ES可点击对象
- 2. 的OpenGL ES:在立方体上
- 3. 立方在OpenGL ES
- 4. Android OpenGL ES在x,y,z点和立方体的中心旋转立方体
- 5. OPENGL ES 2立方体纹理
- 6. OpenGL ES - 纹理映射8顶点立方体的所有面?
- 7. Java - 平铺地图对象
- 8. 的Android OpenGL ES的平铺发动机,平滑滚动
- 9. 平铺贴图OpenGL C++
- 10. 的Android的OpenGL ES 2,绘图方块
- 11. 在OpenGL ES中绘制立方体需要多少顶点?
- 12. Opengl-es 2.0与立方体贴图的阴影映射
- 13. 平铺一百个1px方块VS平铺四个25px方块
- 14. 平铺地图上的多平铺对象
- 15. OpenGL ES 2.0立方体贴图不显示纹理
- 16. 平铺JAXB对象
- 17. 使用glDrawArrays绘制OpenGL ES的立方体
- 18. 使用Android OpenGL ES 2.0创建3D立方体
- 19. 在OpenGL ES 1.1和ES 2.0中使用顶点缓冲区对象绘图
- 20. 渲染10×10立方的OpenGL 1.0 ES
- 21. 旋转OpenGL-ES对象
- 22. 移动对象Opengl Es 2.0
- 23. OpenGL ES 1剪裁对象
- 24. 旋转对象OpenGL ES 2.0
- 25. 如何检测Android应用程序中的OpenGL ES中的对象的点击?
- 26. OpenGL ES平铺纹理Mipmap问题 - iPad/iPhone
- 27. 在opengl es 2.0中着色的立方体
- 28. 如何在OpenGL ES中更改3D立方体的视角?
- 29. iPhone OpenGL-ES:将纹理添加到立方体的一个面
- 30. 如何识别OpenGL ES立方体的哪个面被触摸?
NeHe教程是一个不好的例子,它不能在OpenGL ES中远程工作。 – 2010-08-09 14:39:42
@Matias Valdenegro:最终,3D拾取算法本身就是3D API不可知论者。我同意我链接的教程太多了,并且我没有仔细阅读它,看看他是否使用API来执行某些拾取计算。提供链接的目的是表明至少有一个3D拾取教程。 NEHE经常为新的OpenGL程序员提供简单的教程,无论它们在所有方面是否正确。如果你有更好的,请提供一个链接。 – 2010-08-09 18:55:20