1

我一直在研究 XNA 中的(有点)更高级的碰撞检测(和滑动响应),它读取任何加载模型的 VertexBuffer 并从其顶点(和索引)生成平面实例......更客观地说是定制的 Face 结构一个代表实际面的主平面,以及另外三个代表其边界的主平面。

这样,当一个 BoundingSphere 与为每 3 个顶点生成的 BoundingBox 相交时,会检查另一个与面的 main Plane 的交点,然后,确定碰撞发生在三角形内部,其他三个平面,它们是要与三角形的边缘对齐,请检查 BoundingSphere 是否不在外部。

到目前为止,我在复杂的网格中得到了有趣的好结果,能够实时缩放、旋转和移动它们,而不会在转换过程中破坏碰撞网格……但我相信我的问题在于生成面的部分,因为我只能用构成网格的一半三角形得到正确的 - 实际上接近完美的结果,这也取决于它是哪个网格。使用一些随机的几何形状,我没有这个问题。

就像 Face 结构内的一个或多个平面的一些法线被翻转,导致 BoundingSphere 报告绝对没有与某些三角形发生碰撞......

某处一定有一些小东西......否则我不会让球体与确实有效的三角形发生如此精确的碰撞......

现在我只想让这个小东西发挥作用,然后我会考虑优化它......

源文件

4

0 回答 0