相关疑难解决方法(0)

在SceneKit中添加和转换动画

我查看了WWDC中的Banana游戏,它是用Objective-C编写的,它试图将代码转换为swift以导入动画并在它们之间进行转换,但是我遇到了从DAE文件中快速运行动画的问题.

我有来自3DSMAx和openCollada格式的AutoDesk格式的导出器DAE文件.autodeskformat animtation是针对每个骨骼所以我无法按名称调用动画,因此我只需导入场景并执行以下操作,以便在文件加载后立即启动动画.

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)
}
Run Code Online (Sandbox Code Playgroud)

尽管动画在场景开始时播放,但我知道如何存储动画.

如果我使用openCollada导出collada文件.我可以使用以下命令来运行get并运行动画,因为在AutoDesk collada格式的情况下,整个对象只有一个动画而不是每个骨骼.通过这种方式,我也可以使用CAAnimation存储动画.

var anim = scene2.rootNode.animationForKey("monster-1")
childNode.addAnimation(anim, forKey: "monster-1")  
Run Code Online (Sandbox Code Playgroud)

但是然后角色以某个角度运行并且来回运行而不是在同一个地方跑.

使用openCollada也可以更好地照明.我只想使用openCollada而不是autodesk collada export.现在我使用openCollada格式导出场景,使用autodesk导出字符.

如何在SceneKit中快速存储动画并在它们之间进行过渡?谢谢.:d

animation scenekit swift

8
推荐指数
1
解决办法
3961
查看次数

SceneKit从单独的scn文件加载带有动画的节点

我有一个动态创建SCNView的视图.它的场景是空的,但是当我按下一个按钮时,我想从单独的scn文件中添加一个节点.这个文件包含动画,我想在主场景中设置动画.问题是在将对象添加到场景后,它不是动画.当我将此文件用作SCNView场景时,它可以正常工作.isPlaying和循环已启用.使用动画导入这样的节点还需要做什么?示例代码如下:

override func viewDidLoad() {
    super.viewDidLoad()

    let scene = SCNScene()
    let sceneView = SCNView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
    sceneView.scene = scene
    sceneView.loops = true
    sceneView.isPlaying = true
    sceneView.autoenablesDefaultLighting = true
    view.addSubview(sceneView)


    let subNodeScene = SCNScene(named: "Serah_Animated.scn")!
    let serah = subNodeScene.rootNode.childNode(withName: "main", recursively: false)!

    scene.rootNode.addChildNode(serah)


}
Run Code Online (Sandbox Code Playgroud)

3d animation ios scenekit

6
推荐指数
2
解决办法
5323
查看次数

如何让普通的 Mixamo 角色动画在 SceneKit 中工作?

前往 mixamo.com,选择一个角色,点击动画,选择一个,只需下载为 .dae即可。

在此输入图像描述

将文件放在 Mac 桌面上;点击文件信息)。它将完美地动画角色的动作。

Xcode,拖入文件夹。点击 .dae 文件,点击底部的“播放”图标。它将完美地动画角色的动作。

现在,将角色添加到现有的 SceneKit 场景中。例如:

let p = Bundle.main.url(forResource: "File Name", withExtension: "dae")!
modelSource = SCNSceneSource(url: p, options: nil)!
let geom = modelSource.entryWithIdentifier("geometry316",
                 withClass: SCNGeometry.self)! as SCNGeometry
theModel = SCNNode(geometry: geom)
.. your node .. .addChildNode(theModel)
Run Code Online (Sandbox Code Playgroud)

(要获取几何名称,只需查看 .dae 文本示例

您将完美地看到 T 形的角色

然而,似乎不可能在角色上运行动画。

代码看起来像......

theAnime = amySource.entryWithIdentifier("unnamed_animation__0", withClass: CAAnimation.self)!
theModel.addAnimation(theAnime, forKey:"aKey")
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,它都不会动画。

在添加动画的那一刻,角色会跳转到不同的静态位置,并且不执行任何操作。(如果您安排“结束”动画removeAllAnimations(),它只会返回到 T 姿势。)

显然,dae 文件是完美的,因为它在 Mac Finder 中完美地 …

ios scenekit swift

6
推荐指数
1
解决办法
987
查看次数

标签 统计

scenekit ×3

animation ×2

ios ×2

swift ×2

3d ×1