【问题标题】:iOS ARKit - move objects along pathiOS ARKit - 沿路径移动对象
【发布时间】:2018-02-06 23:18:20
【问题描述】:

我正在尝试使用 ARKit 移动实现弹跳球。我希望来自屏幕一端的球弹跳并移出屏幕。

任何人都可以推荐最佳方法或指向示例代码来实现这一点吗?

我可以使用 UIBezierPath 创建路径并沿路径移动 SCNNode。如果是,我该如何沿着路径移动节点。

【问题讨论】:

    标签: ios swift augmented-reality arkit


    【解决方案1】:

    创建一个场景和一个球节点。使用球节点的力方向并使用物理为球节点设置动画。这只是一个例子。

        // Create a new scene
        guard let scene = SCNScene(named: "BouncingBalls.scn", inDirectory: "art.scnassets") else { return }
        sceneView.scene = scene
    
        // Add physics bodies
        guard let ballsNode = scene.rootNode.childNode(withName: "balls", recursively: true) else { return }
        let forceDirection = SCNVector3Make(0, 3, 0)
        for ballNode in ballsNode.childNodes {
            let physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
            physicsBody.applyForce(forceDirection, asImpulse: true)
            ballNode.physicsBody = physicsBody
        }
    

    在 View didLoad 中试试这个。希望这有效。

    【讨论】:

    • 感谢 Ashman 的回复。我试过这个,但是这个球会在同一个位置反弹一次。他们不会在他们的轴上或沿路径移动
    • 你需要通过ballsNode.position.x获取ballsNode的当前轴并移动球。
    【解决方案2】:

    获得所需内容的最佳方式是使用在 Autodesk Maya、Autodesk 3dsMax 或 Maxon Cinema4D 等 3D 应用程序中制作的 predefined animation or dynamics

    制作球动画(或动态,由您决定)后,您需要烘焙此动画(烘焙是为每一帧生成关键帧的过程,而不是使用插值曲线)并将此场景导出为.dae 文件格式。 ARKit/SceneKit不仅支持.dae动画,还支持全新格式.usdz

    SceneKit API(以及其他 Apple 框架的 API)不是为 3D 动画设计的

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多