【问题标题】:Adding animation to 3D models in ARKit在 ARKit 中为 3D 模型添加动画
【发布时间】:2018-07-13 19:22:51
【问题描述】:

在这个视频中,一个对象被赋予了一个动画,当被放置时它会在房间周围盘旋,然后当被点击时,它会随着另一个动画而下降。 如何在我的项目中添加这种动画? 添加一个已经动画的对象是唯一的方法吗?

谢谢

https://youtu.be/OS_kScr0XkQ

【问题讨论】:

  • 就我自己而言,我不愿意关注任何random YouTube video,因为它可能是任何东西。描述您想要什么 - 留下链接以供参考,但不要强迫我们观看视频。帮助我们为您提供帮助。
  • 问题标题是指我想要做什么。视频只是我想做的一个示例。
  • 该视频中没有物体“在房间内盘旋”的动画。它上下盘旋,横向移动没有动画。 SceneKit 对象的许多属性可以按照文档中的说明进行动画处理:developer.apple.com/documentation/scenekit/animation/… 在您的情况下,您也可以使用 SCNAction,类似于 Xcode 中默认的 SceneKit 游戏模板中的那个。

标签: ios swift scenekit augmented-reality arkit


【解决方案1】:

我认为上下盘旋很可能是一个动画序列。以下悬停效果的动画序列将在第一个下拉选择函数中起作用。

        let moveDown = SCNAction.move(by: SCNVector3(0, -0.1, 0), duration: 1)
        let moveUp = SCNAction.move(by: SCNVector3(0,0.1,0), duration: 1)
        let waitAction = SCNAction.wait(duration: 0.25)
        let hoverSequence = SCNAction.sequence([moveUp,waitAction,moveDown])
        let loopSequence = SCNAction.repeatForever(hoverSequence)
        node2Animate.runAction(loopSequence)

        self.sceneView.scene.rootNode.addChildNode(node2Animate)

点击节点时停止动画的第二部分将其放在点击手势函数中。

node2animate.removeAllActions()

最后掉到地上的部分,node2animate 可能是一个physicsBody,在点击之前是重力属性

node2animate.physicsBody?.isAffectedByGravity = false

点击后将其设置为 true

node2animate.physicsBody?.isAffectedByGravity = true

还有其他事情正在发生,还设置了与地板的碰撞等。

【讨论】:

  • 完美!正是我需要的。
  • 嘿@Clay 知道动画停止后如何添加重力/碰撞吗?我的意思是将对象的位置重置为 flor
  • 最近,我使用 Reality Composer 构建交互式 AR 场景,无需代码即可通过 AR Quick Look 或 RealityKit 应用在浏览器中查看。最好构建独立于代码的 AR 场景。通过浏览器查看 usdzshare.com 以了解 AR。
猜你喜欢
  • 2018-10-22
  • 2017-11-24
  • 1970-01-01
  • 2018-04-16
  • 2018-01-31
  • 2018-05-30
  • 2017-12-01
  • 1970-01-01
  • 2019-08-24
相关资源
最近更新 更多