我正在开发一个增强现实应用程序,它使用物理网格和遮挡。网格是一种形状不规则的几何体,由摄像机周围的许多顶点组成。
要使网格具有正确的物理形状,我必须在创建SCNPhysicsShape.ShapeType.concavePolyhedron
时添加SCNPhysicsShape
选项,其他选项是围绕形状绘制边界框,这使得物理无法实现,因为相机位于网格内。
这很好,但表演很糟糕。有什么办法可以提高这个过程的效率吗?
最佳答案
对于物理引擎来说,测试多个简单(凸)几何体的碰撞比测试单个、大型、复杂的凹几何体要容易得多。
看一个更简单的问题形式:如果你想为一个典型的碰撞检测房间建模,你不需要创建一个中间有凹长方体形状的几何体,你可以创建四个墙,一个地板和一个天花板,分别使用SCNPlane
或SCNBox
。
对于相机周围更复杂的物理交互曲面集,只需放大这个概念。建立一个冒名顶替者形状的排列,这些形状一起大致匹配您的视觉几何-理想情况下使用SCNBox
、SCNSphere
或其他原始几何-然后使用init(node:options:)
将其变成物理形状。