【问题标题】:Swift/IOS: SCNNode appeared to return to its original position after SCNAction is finished, but its actual position was changed by SCNActionSwift/IOS:SCNNode 在 SCNAction 完成后似乎回到了原来的位置,但它的实际位置被 SCNAction 改变了
【发布时间】:2019-07-25 16:57:17
【问题描述】:

我对 Swift 和 IOS 开发非常陌生,所以这可能是一个简单的问题,但我很难在互联网上找到答案。

我试图通过在其中一个节点上运行 SCNAction 来为静态 DAE 模型设置动画。但是,在 SCNAction 完成后(并且节点被移动),节点位置将立即回到其原始位置(加载静态 DAE 模型时的相同位置)。但是当我打印节点的位置时,我注意到节点的位置实际上是因为 SCNAction 而改变的。当我在同一个节点上再次运行 SCNAction 时,该节点将返回到最后一个 SCNAction 产生的结束位置并从那里启动 SCNAction。我想知道为什么节点的实际位置与场景中出现的位置如此不匹配。

另外一个有趣的事情是当我把 SCNActions 按顺序排列时([action1, action2]),节点不会在动作之间回到原来的位置。但是如果在([action1, SCNAction.wait, action2])之间添加了SCNAction.wait,则在等待期间节点会回到原来的位置,从action1的结束位置重新开始action2。

我试图在 SCNActions 结束时保持所有节点的位置。有什么办法可以防止它回到原来的位置?

不确定问题是否足够清楚。任何想法和想法都会受到赞赏。

【问题讨论】:

  • 似乎有一个简单的解决方案:虽然 dae 模型看起来是静态的,但当我从 Mixamo 获得它时,它附加了一个动画......在我删除了dae 文件,一切都开始按我预期的方式工作......猜猜原始动画和我添加的 scnaction 之间存在一些冲突。

标签: ios swift scenekit scnaction


【解决方案1】:

您是否验证过该节点不附带 Collada 文件中的动画?动画和动作一个接一个地被评估。这些动作可能会覆盖动画的效果,直到它们完成(或暂停)。

与动作不同,动画不会写入模型树 (node.position),而只会写入表示树 (node.presentationNode.position)。

【讨论】:

    猜你喜欢
    • 2015-07-14
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多