SCNPhysicsBody 表现不佳

SCNPhysicsBody poor performance

我正在开发一个增强现实应用程序,它使用网格进行物理和遮挡。网格是一种不规则形状的几何体,由相机周围的许多顶点组成。

为了让网格具有正确的物理形状,我必须在创建 SCNPhysicsShape 时添加 SCNPhysicsShape.ShapeType.concavePolyhedron 选项,其他选项是在形状周围绘制边界框,这使得物理不可能,因为相机是位于网格内。

这工作正常,但性能很糟糕。有什么办法可以提高这个过程的效率吗?

对于物理引擎来说,测试多个简单(凸)几何体的碰撞要比测试单个、大型、复杂、凹面几何体的碰撞容易得多。

看看你的问题的一个更简单的形式:如果你想为一个典型的房间建模以进行碰撞检测,你不会创建一个中间有凹形长方体的几何体,你会创建四堵墙,一个地板和上限,每个使用 SCNPlaneSCNBox

对于相机周围一组更复杂的物理交互表面,只需按比例放大该想法即可。建立一个大致匹配您的视觉几何形状的冒名顶替者形状的排列 - 理想情况下使用 SCNBoxSCNSphere 或其他原始几何形状 - 然后使用 init(node:options:) 将其变成物理形状。