Идентификаторы SCNSceneSource с файлом usdz пусты

Мы работаем над проектом с ARKit 2 + SceneKit, iOS 12. Нам удалось получить CAAnimation экземпляров с .dae файлами и управлять ими во время выполнения. Теперь мы пробуем .usdz, но ни один из классов не может быть извлечен из SCNSceneSource с помощью usdz:

let source = SCNSceneSource(url: url, options: options)
let animationIdentifiers = source?.identifiersOfEntries(withClass: CAAnimation.self)

animationIdentifiers всегда пусто. То же самое касается всех классов, перечисленных в документации для этой функции .apple.com/documentation/scenekit/scnscenesource/1523656-identifiersofentries

Мы протестировали собственные разработки usdz, а также некоторые usdz из https://fusionar.app.

К сожалению, анимация прекрасно воспроизводится при просмотре файла как на iOS, так и в Xcode, где у нас есть доступ к настройкам анимации и графа сцены:

Анимация Xcode

Но определенно не из кода во время выполнения, поэтому мы не можем управлять анимацией.

У вас когда-нибудь была эта проблема?

Любое понимание этого?


person ryancrunchi    schedule 20.11.2018    source источник


Ответы (1)


Извлечение записей из SCNSceneSource работает только для файлов Collada. При работе с файлом USDZ вам придется пройти по иерархии узлов и извлечь анимацию из узла, который ее содержит, с помощью -animationPlayerForKey:.

person mnuages    schedule 21.11.2018
comment
прикольно, не могли бы вы объяснить почему? - person ryancrunchi; 21.11.2018