SceneKit - 具有 DAE 文件格式的动画

Posted

技术标签:

【中文标题】SceneKit - 具有 DAE 文件格式的动画【英文标题】:SceneKit – Animation with DAE file format 【发布时间】:2016-03-27 03:16:08 【问题描述】:

我正在尝试在 SceneKit 场景中为我的模型设置动画:

    创建一个简单的立方体模型并将其导出到cube.dae 为立方体创建一个简单的骨架并使用骨骼制作一个简单的旋转动画并将其导出到animation.dae 使用 Apple 示例 Fox 演示(WWDC 2015),我尝试将模型放在场景中,它可以工作 动画框旋转 - 它正在工作,但在应用动画后,立方体将其位置更改为 (0,0,0)

也许有人使用其他 3d 工具(Maya、Blender、3D Max)成功地实现了骨骼动画和 SceneKit?

要将 .dae 转换为 .scn,我选择 DAE 文件,然后在 Xcode 中的“编辑器”-->“转换为 scenekit 场景格式”

link to archive with models and animations.

代码: 初始化模型节点

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 文件和导出的结果放在我们可以看到的地方,然后发布你用来加载/播放的代码吗? 当然,我编辑了我的帖子并添加了包含模型和动画的存档链接并添加了一些代码 我不确定你的问题。您能否详细说明您想要做什么(预期的行为)以及出了什么问题?还有什么是unrealCharacter,它与立方体有什么关系? 好的,我来解释一下。我想要和期待的是来自 .dae 的动画按预期工作。我想要一个简单的东西——使用 .dae 文件为模型制作动画,就像在苹果示例代码中一样。 unrealCharacter.characterNode 是一个 SCNNode。存档包含模型(立方体和人体模型)以及要测试的动画。唯一出乎意料的是,在将动画应用到 SCNNode 之后,它改变了它的位置。 你能看看我的问题吗,我想模仿你在这里所做的***.com/questions/46209555/… 【参考方案1】:

这是我的错误,我需要在初始模型中保存装备。以前我只为动画保存装备。现在动画效果很好。

【讨论】:

以上是关于SceneKit - 具有 DAE 文件格式的动画的主要内容,如果未能解决你的问题,请参考以下文章

从 Collada (.dae) 文件(在 Maya 中创建)导入的 SceneKit 键控混合形状动画未播放

使用 SceneKit 从 DAE/COLLADA 中提取动画顶点

SceneKit + Collada + 动画

SceneKit:使用 dae 动画更新 SCNGeometry

如何在 iOS SceneKit 中使用具有不同场景图形的 DAE 文件

SceneKit:使用dae动画更新SCNGeometry