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