我正在开始学习opengl,并且想要制作一个像国际象棋一样的棋,但是我不知道如何,我怎么知道我在“桌子”中点击了哪里来制作正确的动画,任何建议?
答案 0 :(得分:0)
这称为“3D拾取”。您必须将屏幕坐标转换为世界坐标。从那里,做一个射线/碰撞对象(边界框?)交叉测试。如果它们相交,那就是用户点击的位置。
你必须做更多的事情来解决深度顺序问题,比如找到第一次交叉每个对象,然后选择具有最低(正)时间的那个。
如果你谷歌搜索“3D选择”,你可能会找到你想要的东西。
这是一个教程: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=32
请注意,这不是特定于任何形状的边界对象,无论是边界框,多边形,曲线等。您只需要计算出想要的每种类型对象的交叉测试的数学运算。支持。
修改强>
在我链接它之前,我没有读过那个教程,我只是觉得NEHE是所有很酷的孩子学习OpenGL的地方(不可否认的是十年前......)。
以下是关于选择的OpenGL FAQ:
答案 1 :(得分:0)
waldecir,寻找raypick功能。它是从场景的摄像机中心通过您单击的像素发送光线的名称(实际上,通过该像素在摄像机平面上的平移位置代表3D世界中的“屏幕玻璃表面”)并返回最前面的多边形射线与一些信息一起命中。通常在多边形表面轴内的坐标,例如, UV或纹理坐标。通过检查坐标,您可以确定用户点击的方格。
光线可以从任何位置和任何方向发送,因此您可能需要获取相机位置及其平面中心,但文档应该能够帮助您。