Swift 动画角色命中测试–;获取正确的世界坐标
在我的ARKit应用程序中,我有一个动画角色(作为T骨模型存储在SCN文件中)。动画取自多个DAE文件,并使用Swift 动画角色命中测试–;获取正确的世界坐标,swift,scenekit,augmented-reality,arkit,hittest,Swift,Scenekit,Augmented Reality,Arkit,Hittest,在我的ARKit应用程序中,我有一个动画角色(作为T骨模型存储在SCN文件中)。动画取自多个DAE文件,并使用SCNAnimationPlayer应用于模型,如下所示: let myAnimation = Animations.configMyAnimationFunction() myAnimation.stop() enemyNode.childNodes[2].addAnimationPlayer(myAnimation, forKey: "myKey") enemyNode.childN
SCNAnimationPlayer
应用于模型,如下所示:
let myAnimation = Animations.configMyAnimationFunction()
myAnimation.stop()
enemyNode.childNodes[2].addAnimationPlayer(myAnimation, forKey: "myKey")
enemyNode.childNodes[2].animationPlayer(forKey: "myKey")?.play()
动画播放得非常完美
现在我对动画几何体进行“命中测试”,如下所示:
let currentTouchPoint = touches.first?.location(in: self.sceneView)
let hitTest = sceneView.hitTest(currentTouchPoint!, options: [SCNHitTestOption.categoryBitMask: NodeCategory.catEnemy.rawValue, SCNHitTestOption.searchMode: SCNHitTestSearchMode.any.rawValue as NSNumber])
let hitObject = hitTest.first?.node // let that stores the hitTest
if hitObject != nil {
// code...
let hitLocation = hitTest.first?.worldCoordinates
// code...
}
我想使用“世界坐标”的结果。但是,结果似乎总是包含来自静态T形骨骼模型的坐标,而不是动画运行时它所在的位置
假设动画模型正在拍手(作为人形角色)或触摸地面。当我触摸模型手时,hittest会工作并返回结果,但最终在错误的坐标处
苹果在世界坐标
上的文档是这样的:“几何体和搜索光线之间的交点,在场景的世界坐标系中。”我也尝试了局部坐标
,但成功率更低
在模型设置动画期间,如何确定几何体上当前触摸位置的真实坐标?可能的重复坐标不相同。我不是通过节点的表示来寻找节点的位置-我是在通过hittest找到的动画几何体的ISO曲面上寻找精确的交点。几何图形是一种类似人类的角色。