SceneKit - 使用DAE文件格式进行动画制作

4

我正在尝试在SceneKit场景中动画化我的模型:

  1. 创建一个简单的立方体模型并将其导出为cube.dae
  2. 为立方体创建一个简单的骨骼,并使用骨骼进行简单的旋转动画,然后将其导出到animation.dae
  3. 使用苹果样本Fox demo (WWDC 2015),我尝试将模型放在场景中,它可以工作。
  4. 旋转框-它可以工作,但应用动画后,立方体的位置会更改为(0,0,0)

也许有人已经成功地使用其他3D工具(Maya,Blender,3D Max)完成了骨骼动画和SceneKit?

要将.dae转换为.scn,选择DAE文件,然后在Xcode中选择"editor"-->"convert to scenekit scene format"。

链接到带有模型和动画的归档

代码: init model node

let characterScene = SCNScene(named: "game.scnassets/cube.scn")!
let characterTopLevelNode = characterScene.rootNode.childNodes[0]
characterNode.addChildNode(characterTopLevelNode)
let idleAnimation = CAAnimation.animationWithSceneNamed("game.scnassets/cubeWithMeshSkeletonAnimation.scn")!
idleAnimation.usesSceneTimeBase = false
idleAnimation.repeatCount = Float.infinity
characterNode.addAnimation(idleAnimation, forKey: "idle")

在场景中添加模型。
let scene = SCNScene(named: "game.scnassets/Level1.scn")!
gameView.scene = scene
gameView.playing = true
gameView.loops = true
scene.rootNode.addChildNode(unrealCharacter.characterNode)
let startPosition = scene.rootNode.childNodeWithName("startingPoint", recursively: true)!
unrealCharacter.characterNode.transform = startPosition.transform

你能把Cheetah3D文件和导出的结果放在我们可以看到的地方,并发布你正在使用的加载/播放代码吗? - Hal Mueller
当然,我会编辑我的帖子并添加包含模型和动画的存档链接,并放置一些代码。 - Manifestor
我不确定我理解你的问题。你能详细说明一下你想做什么(期望的行为)以及出了什么问题吗?另外,unrealCharacter是什么,它与立方体有什么关系? - mnuages
1
好的,我来尝试解释一下。我的期望是从 .dae 文件中得到预期的动画效果。我想要的很简单 - 使用 .dae 文件对模型进行动画处理,就像在苹果示例代码中一样。unrealCharacter.characterNode 是一个 SCNNode。存档包含了模型(立方体和人体模型)以及它们的动画测试。唯一意外的是,在将动画应用于 SCNNode 后,它的位置发生了改变。 - Manifestor
能否请您看一下我的问题,我正在尝试模仿您在这里的做法 https://dev59.com/PKXja4cB1Zd3GeqPMydr - blue
为2023年... https://dev59.com/78Xsa4cB1Zd3GeqPsbUh#75093081 - Fattie
1个回答

2

我的错误在于,我只保存了动画的骨架,而没有在初始模型中保存骨架。现在,动画可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接