【发布时间】:2015-04-03 14:33:16
【问题描述】:
我查看了来自 WWDC 的 Banana 游戏,它是用 Objective-C 编写的,它试图将代码转换为 Swift 以导入动画并在它们之间转换,但我在从 DAE 文件中快速运行动画时遇到问题。
我有来自 3dsMax 的 AutoDesk 格式和 openCollada 格式的导出器 DAE 文件。动画的 Autodesk 格式适用于每个骨骼,因此我无法按名称调用动画,因此我只需导入场景并执行以下操作以使动画在文件加载后立即开始。
scene = SCNScene(named: "monster.scnassets/monsterScene.DAE")
scene2 = SCNScene(named:"monster.scnassets/monster.DAE")
var heroNode = SCNNode()
heroNode = scene.rootNode.childNodeWithName("heroNode", recursively: false)!
var nodeArray = scene2.rootNode.childNodes
for childNode in nodeArray {
heroNode.addChildNode(childNode as SCNNode)
}
虽然动画会在场景开始后立即播放,但我知道如何存储动画。
如果我使用 openCollada 导出 collada 文件。我可以使用以下命令运行获取并运行动画,因为在 AutoDesk collada 格式的情况下,整个对象而不是每个骨骼只有一个动画。通过这种方式,我也可以使用CAAnimation 来存储动画。
var anim = scene2.rootNode.animationForKey("monster-1")
childNode.addAnimation(anim, forKey: "monster-1")
但随后角色以一个角度跑,并且来回跑,而不是在同一个地方跑。
此外,使用 openCollada 照明效果更好。我只想使用 openCollada 而不是 Autodesk collada 导出。现在我使用 openCollada 格式导出场景,使用 Autodesk 导出角色。
如何在SceneKit/Swift中存储动画并在它们之间进行过渡?谢谢。
【问题讨论】: