Ios SceneKit–;几何穿透

Ios SceneKit–;几何穿透,ios,unity3d,scenekit,scene,3d-model,Ios,Unity3d,Scenekit,Scene,3d Model,我将一个3D模型导入ScenekKit,然后更改肢体的Euler角度,让肢体执行动作。然而,此时,衣服和四肢将穿透。我如何处理这种情况 我认为您必须使用continuousCollisionDetectionThreshold实例属性。此值为SceneKit提供身体必须移动的最小距离,以便应用更精确(但CPU/GPU成本更高)的算法来检测与其他身体的接触 var continuousCollisionDetectionThreshold: CGFloat { get set } SceneKi

我将一个3D模型导入ScenekKit,然后更改肢体的Euler角度,让肢体执行动作。然而,此时,衣服和四肢将穿透。我如何处理这种情况


我认为您必须使用
continuousCollisionDetectionThreshold
实例属性。此值为SceneKit提供身体必须移动的最小距离,以便应用更精确(但CPU/GPU成本更高)的算法来检测与其他身体的接触

var continuousCollisionDetectionThreshold: CGFloat { get set }
SceneKit的物理引擎可以使用两种碰撞检测

  • 使用
    离散碰撞
    检测,当SceneKit在渲染每个帧之前模拟物理时(请参见时间步SCNSCEnerEnderDelegate),它会根据该时间间隔内物体的速度更新每个物理物体的位置,然后检查新位置的实体是否与其他实体相交

  • var continuousCollisionDetectionThreshold: CGFloat { get set }
    
  • 通过
    连续碰撞检测
    ,SceneKit计算每个帧期间实体将穿过的体积,然后检查该体积是否与其他实体相交。此属性的值
    默认为0.0
    ,从而始终进行离散碰撞检测。当该值非零时,只要身体在一个时间步内移动超过指定距离,SceneKit就会应用连续碰撞


离散碰撞检测提供了高性能,但对于小型、快速移动的物体,可能会导致不准确的结果。连续碰撞检测具有性能成本,并且仅适用于球形物理形状,但可提供更精确的结果。

我认为您必须使用
连续碰撞检测阈值
实例属性。此值为SceneKit提供身体必须移动的最小距离,以便应用更精确(但CPU/GPU成本更高)的算法来检测与其他身体的接触

var continuousCollisionDetectionThreshold: CGFloat { get set }
SceneKit的物理引擎可以使用两种碰撞检测

  • 使用
    离散碰撞
    检测,当SceneKit在渲染每个帧之前模拟物理时(请参见时间步SCNSCEnerEnderDelegate),它会根据该时间间隔内物体的速度更新每个物理物体的位置,然后检查新位置的实体是否与其他实体相交

  • var continuousCollisionDetectionThreshold: CGFloat { get set }
    
  • 通过
    连续碰撞检测
    ,SceneKit计算每个帧期间实体将穿过的体积,然后检查该体积是否与其他实体相交。此属性的值
    默认为0.0
    ,从而始终进行离散碰撞检测。当该值非零时,只要身体在一个时间步内移动超过指定距离,SceneKit就会应用连续碰撞

离散碰撞检测提供了高性能,但对于小型、快速移动的物体,可能会导致不准确的结果。连续碰撞检测具有性能成本,并且仅适用于球形物理形状,但可提供更精确的结果