Хит-тест анимационного персонажа - Получение правильных координат мира - PullRequest
0 голосов
/ 24 февраля 2019

В моем приложении ARKit у меня есть анимированный персонаж (хранится в виде модели T-Bone в файле SCN).Анимации взяты из нескольких файлов DAE и применены к модели с использованием 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...
}

Я хочу использовать результат из "worldCoordinates".Но, похоже, что результат всегда содержит координаты статической модели T-Bone, а не место, в котором он находится во время анимации.

Представьте, что анимированная модель хлопает в ладоши (как гуманоид)характер) или касаясь земли.Когда я касаюсь рук Модели, тестирование срабатывает и возвращает результат, но, в конечном итоге, с неправильными координатами.

Apple Docs на worldCoordinates выглядит так: "Точка пересечения геометрии илуч поиска, в мировой системе координат сцены. " Я также пытался localCoordinates, но с еще меньшим успехом.

Как определить реальные координаты в текущем месте касания нагеометрия во время модели анимирована?

...