我一直在使用lwjgl和j3d来处理几何部分。我还在努力解决这个问题。到目前为止我所遇到的碰撞工作得体,但有2个问题。总结我当前的碰撞方式,它测试先前的坐标和当前坐标是否通过一个三角形(什么东西被渲染为),然后它找到它刚刚相交的三角形上最接近当前坐标的点和让你去那里。它也使你的y坐标上升.001。 这个工作下降,但上升.001是不好的,因为如果你去一个90 *角度的三角形,你可以离开去更新,但你不能退出它,几乎就像你被困在里面一样。 这是一个如何在imgur上工作的图纸
http://i.imgur.com/1gMhRut.png
从这里我想把.001添加到当前坐标和最近点之间的长度(我已经知道这些点)并得到新的当前点。
btw prev是这个人在他们移动到cur点之前所处的位置,然后它测试看这两个点是否与三角形相交,然后我得到最接近于prev的点,如果它确定为最接近于图片。我已经可以计算所有这些点
答案 0 :(得分:0)
如果我理解正确你想要添加.001来远离三角形。如果是这种情况,则需要一个垂直于三角形的长度为0.001的向量。在三角形的情况下,这通常被称为" normal"。如果你已经有三角形的法线,那么乘以.001并加上它。如果你没有正常但你可以使用交叉产品计算它(你可以谷歌交叉产品的详细信息),如下所示,从三角形的顶点开始:
Vector3 perpendicular = crossProduct(vertex3.pos - vertex1.pos, vertex2.pos - vertex1.pos);
Vector3 normal = perpendicular / length(normal);
Vector3 offset = normal * 0.001f;