Scenekit:动画时模型改变大小

Posted

技术标签:

【中文标题】Scenekit:动画时模型改变大小【英文标题】:Scenekit: Model change size when animation 【发布时间】:2019-07-16 18:31:00 【问题描述】:

我使用 Scenekit 为模型(由 Blender 创建)设置动画,但是模型在动画时会改变大小(在 Blender 中,它可以正常工作)。 https://youtu.be/WCE_sXEyfXU

    let sceneView = SCNView(frame: self.view.frame)
    sceneView.allowsCameraControl = true
    self.view.addSubview(sceneView)

    let manScene = SCNScene(named: "art.scnassets/man.dae", inDirectory: nil, options: nil)
    sceneView.scene = manScene

    let camera = SCNCamera()
    let cameraNode = SCNNode()
    cameraNode.camera = camera
    cameraNode.position = SCNVector3(-3.0, 3.0, 3.0)

    let light = SCNLight()
    light.type = SCNLight.LightType.ambient
    let lightNode = SCNNode()
    lightNode.light = light
    lightNode.position = SCNVector3(10, 10, 10)

    manScene!.rootNode.addChildNode(cameraNode)

    let oneLegAnimation = SCNAnimationPlayer.loadAnimation(fromSceneNamed: "art.scnassets/oneLeg.dae")
    oneLegAnimation.animation.isCumulative = false
    oneLegAnimation.stop()
    manScene!.rootNode.addAnimationPlayer(oneLegAnimation, forKey: "man")
    manScene!.rootNode.animationPlayer(forKey: "man")?.play()

谢谢!

【问题讨论】:

【参考方案1】:

我认为 Blender 和 Xcode 之间是有区别的。最后,我通过添加 IK 骨骼和大量关键帧(每 0.5 秒)来修复它。

【讨论】:

当您在 Xcode 的场景图上单击播放按钮时,您的动画播放正常吗?

以上是关于Scenekit:动画时模型改变大小的主要内容,如果未能解决你的问题,请参考以下文章

SceneKit - 如何获取 .dae 模型的动画?

如何防止 SceneKit 动画在加载时立即播放?

SceneKit + Collada + 动画

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

SceneKit:缩放 SCNNode 不会按预期量改变大小

如何将复杂的 .dae 模型导入到 SceneKit?