Java OpenGL:使用模型矩阵检查2个对象的冲突

时间:2015-12-23 19:10:48

标签: java opengl collision-detection

是否可以使用模型矩阵检查2个物体的碰撞?

我有这两个对象:

Entity player = new Entity();
player.setObjectModel(this.loader.loadEntity("res/game/meshes/cube2.obj"));
Matrix4f mat = new Matrix4f();
mat.translate(-2.0f, -11.0f, 0.1f);
mat.scale(4.0f, 1.0f, 0.1f);
player.setModelMatrix(mat);

Entity ball = new Entity();
ball.setObjectModel(this.loader.loadEntity("res/game/meshes/cube2.obj"));
Matrix4f mat = new Matrix4f();
mat.translate(1.0f, -9.0f, 0.1f);
mat.scale(1.0f, 1.0f, 0.1f);
ball.setModelMatrix(mat);

那么我可以使用他们的模型矩阵来检查碰撞或什么是最好的方法吗?

1 个答案:

答案 0 :(得分:0)

模型矩阵只是描述变换的运算符,因此您无法使用它来测试冲突。模型矩阵可以在y轴上平移网格+10并将其缩放100倍;但是,如果网格本身例如是0卷,它就不会真正地扩展任何东西,并且无论如何都不会发生碰撞。这表明它是重要的网格本身,模型矩阵只是你应用于网格坐标的东西,可以在你的世界空间中正确定位它。

你可以做的是使用模型矩阵为你想要测试的对象变换局部hitboxes / spheres / whatevershape,然后检查这些形状是否发生碰撞。

如何测试两种形状之间的碰撞是你可以在互联网上找到的东西。但是,如果您使用的是非简单的非旋转边界框或球体,我建议您寻找辅助物理库。 Bullet Physics是一个非常强大的,它被移植到java JBullet