我有一个载体对象和一个可通过键盘输入控制的平面,我希望能够检测2个之间的碰撞,以便我可以降落在载体上。 这是我的代码:

//Camera
        gluLookAt(45,30,-50,eyeX,eyeY-5,eyeZ,0,1,0);

        //Skybox
        glPushMatrix(); 
            glEnable(GL_TEXTURE_2D);
                drawSea();
            glDisable(GL_TEXTURE_2D);
            drawCube();
            //Carrier
            glPushMatrix(); 
                //glTranslatef(-22,12,0);
                glTranslatef(-carrierX,12,-carrierZ-190);
                glEnable(GL_TEXTURE_2D);
                    model2.speedDisplayFaceNormals();
                glDisable(GL_TEXTURE_2D);
            glPopMatrix();
        glPopMatrix();

        //Aircraft
        glPushMatrix(); 
            glTranslatef(eyeX,eyeY-5,eyeZ);
            glRotatef(-heading, 0,1,0);
            glRotatef(-elevation, 1,0,0);
            glEnable(GL_TEXTURE_2D);
                model.speedDisplayFaceNormals();
            glDisable(GL_TEXTURE_2D);
            //Bounding box
            glBegin(GL_QUADS);
                glVertex3f(-6, -2, -6);
                glVertex3f(6, -2, -6);
                glVertex3f(6, -2, 6);
                glVertex3f(-6, -2, 6);
            glEnd();
        glPopMatrix();

我最初的想法是在飞机底部放一架飞机,在运输机顶部放一架飞机,然后很容易地发现它们何时碰撞。 您可以看到我在飞机底部添加了一个飞机,但是,随着飞机位置的移动,飞机也会随之移动,我如何获得飞机正在移动时的当前坐标? 还是我应该采用其他方法? 我对物体移动后获得坐标后如何执行检测有了很好的了解

===============>>#1 票数:4

OpenGl和冲突检测是两个完全独立的东西。 OpenGl会为您完成工程图部分,但是要由您来跟踪对象的位置,以便进行碰撞检测。

通常情况是,您有一个对象类,其中包含一个平移向量,一个比例向量和一个旋转向量(指定围绕所有三个轴的旋转)。 您可以自行更新它们,然后将结果传递给opengl绘图代码。

似乎您已经使用(eyeX,eyeY-5,eyeZ)因为该平面似乎是在眼睛位置绘制的。 所以我看不出实际的问题是什么...

编辑:如果要变换平面的顶点,则需要从平移和旋转中创建一个变换矩阵,并将顶点乘以该矩阵。 在线上有很多有关如何执行此操作的资源。

  ask by user195257 translate from so

未解决问题?本站智能推荐:

1回复

基本的3D OpenGL碰撞检测C ++

作为一个小型大学项目的一部分,我目前正在用C ++开发非常基本的3D OpenGL游戏。 但是,我们并没有从老师那里得到很多见识,只有非常有限的文档以及很短的时间框架,因此目前我有点迷失了。 我的游戏是在正交平面上进行的坦克大战,看上去与我在下面绘制的图像完全一样。 每个战车(A和B)
3回复

OpenGL 3D碰撞检测

我对OpenGl的冲突检测进行了快速搜索,但是大多数情况都是使用CGRectIntersectsRect的2D示例返回的。 我是否使用CGRectIntersectsRect进行3D检测? 我正在制作一个基本的3D迷宫游戏,我只是想阻止人们走过墙,墙只是正方形(由三角形制成),而不是导入的对
2回复

何时在OpenGL中执行3D碰撞检测?

我正在制作一个使用各种高级图形方法的程序。 目前,已导入两个Wavefront obj模型并在屏幕上呈现。 我正在尝试在这两个对象之间实施强力三角碰撞检测,但是我担心的是何时执行这些操作。 我在此程序中没有动画和运动,我要做的就是当我平移(glTranslate)一个对象使其与另一个对象碰
1回复

创建和使用AABB进行碰撞检测3d(OpenGL)

假设我有一个我用以下方式创建的正方形: 现在假设我想使用AABB结构来检测球体何时与此立方体的侧面碰撞(不是立方体的顶部或底部),从而阻止它穿过立方体? 关于如何做到这一点的任何想法? 如果我使用glutSolidCube实现了多维数据集,我还可以使用AABB结构吗? 还有
1回复

基本的3D碰撞检测问题

我正在尝试为我正在研究的基于体素的3D Java游戏实现基本的碰撞检测。 我正在尝试从以下站点实施该算法: https : //sites.google.com/site/letsmakeavoxelengine/home/collision-detection ,但我似乎无法正确实现。 我
1回复

如何在Polycode 3D中进行碰撞检测

有人可以给我一些示例或有关如何在Polycode中进行冲突检测的指南(我在Linux中使用它)吗? 我想检查与“ ScenePrimitive”和我加载到游戏中的某些网格的碰撞。
1回复

css3 3d翻译:碰撞检测

我看过一些很酷的3D内容,用css3 3d翻译完成,例如: http : //www.webkit.org/blog-files/3d-transforms/morphing-cubes.html 9requires webkit) 任何人都知道一种做碰撞检测的方法吗? 我可以看到如何在
4回复

XNA 3D地形碰撞检测

我一直在研究基本的3D XNA游戏。 到目前为止,我已经设法将各种角色模型加载到更大的级别/世界模型上。 我放置了一些基本控件,这些控件使用户/玩家可以在世界各地移动角色之一,甚至还可以使用BoundingSphere / BoundingBox和其他角色模型来实现一些碰撞检测。 但是
1回复

3d比赛碰撞检测

有人可以解释碰撞检测如何适用于速度或消失等游戏中的赛道吗?
1回复

C#简单3D碰撞检测

我正在尝试开发一个简单的3d环境(在openTK中,所以基本上是openGL)并实现简单的碰撞检测。 我将拥有相机对象,该对象将具有一个边界立方体和一个充满三角形和四边形的世界。 如果为我提供了一个边界立方体(或者边界球形,如果更简单的话)和一个多边形列表,那么有没有一种快速而肮脏的方法