Image of the file hierarchy in xcode of my animation file
问题:
xcode正在识别单个Collada(.dae)文件的多个动画。但是我找不到任何有关如何直接访问这些动画的文档。我尝试使用狐狸游戏示例,但它仅加载其中一个动画。
这是我的代码:
let modelNode = self.addModel_DAE_return(x: 0, y: 0, z: 0, scaleFactor: 0.0005, fileName: "models.scnassets/export_014/export_014_model.dae")
// add the animation to the model
let modelAnim = self.loadAnim_DAE(fileName: "models.scnassets/export_014/export_014_anim.dae")
modelNode.addAnimationPlayer(modelAnim, forKey: "headMove")
modelAnim.play()
// add the model to the scene
node.addChildNode(modelNode)
如何访问和加载其他动画?
上下文:
我正在制作一个AR应用程序。我以Apple Image Recognition示例为基础。
这是它的链接: https://developer.apple.com/documentation/arkit/recognizing_images_in_an_ar_experience
我在Maya中对骨骼进行了动画处理,并使用Maya的OpenCollada扩展名将动画导出到COLLADA(.DAE)文件中。
我为模型和动画导出了单独的文件,因为如果将它们导出为单个文件,则每次尝试访问文件以检查是否注册了任何动画时,我的动画都不会导出并且xcode崩溃。
我想访问动画文件的“实体”,以便我可以循环播放,加载和附加动画,但是我不能
我也已经研究过GameKit,但是,没有办法用SceneKit做到这一点吗?
答案 0 :(得分:0)
装备中的每个关节都有动画信息 最初,我只是在第一个具有动画的关节上获得信息,而不是在其子节点上也附加动画的信息
即假设您的钻机等级为 臀部>右肩>手臂>肘>手腕
您的动画在肩膀,手臂,肘部和腕关节上
您没有在髋关节上有任何动画
使用enumerateChildNodes
只会从肩关节获取信息
使用enumerateHierarchy
将捕获来自肩膀,肘部和腕关节的所有动画信息
有关我使用的功能,请参见下文: 请注意,我已经将3D模型分别加载并保存到SCNNode上,并且已将其传递给我,以便可以将动画附加到其上
func loadAttachAnim_DAE(fileName: String, modelNode: SCNNode){
let scene = SCNScene(named: fileName)!
//find top level animation
var animationPlayer: SCNAnimationPlayer! = nil
scene.rootNode.enumerateHierarchy{ (child, stop) in
if !child.animationKeys.isEmpty {
print ("child = \(child) -----------------")
animationPlayer = child.animationPlayer(forKey: child.animationKeys[0])
modelNode.addAnimationPlayer(animationPlayer, forKey: "\(child)")
animationPlayer.play()
}
}
}