【问题标题】:Move virtual object with x meters on axis. ARKIT Swift在轴上移动 x 米的虚拟对象。阿基特斯威夫特
【发布时间】:2018-03-21 19:04:54
【问题描述】:

我想在场景中设置一个参考点,并将对象放置在距离示例中 X 轴上的参考点 5​​ 米处。基本上,我想在没有点击手势的情况下移动一个对象,并且只使用前面多少米,对,我的对象应该被放置。你能帮帮我吗?

【问题讨论】:

    标签: arkit


    【解决方案1】:

    当您第一次运行 ARSession 时,worldOrigin 设置为 SCNVector3(0,0,0)

    因此,您可以根据此确定初始参考点。

    例如,将对象放置在 XAxis 右侧 1m、YAxis 上 0m 和距离相机 -1.5 的位置,如下所示:

     let nodeToAdd = SCNNode()
     let nodeGeometry = SCNBox(width: 0.2, height: 0.2, length: 0.2, chamferRadius: 0)
     nodeGeometry.firstMaterial?.diffuse.contents = UIColor.cyan
     nodeToAdd.geometry = nodeGeometry
     nodeToAdd.position = SCNVector3(1, 0, -1.5)
     augmentedRealityView.scene.rootNode.addChildNode(nodeToAdd)
    

    然后您可以通过多种方式移动 SCNNode;一个非常简单的方法是使用SCNAction,即:

    一个简单的、可重复使用的动画,它可以更改您附加到的任何节点的属性。

    移动 SCNNode 的动作如下:

    因此,在我们的例子中,让我们使用 func 类:

     move(to: SCNVector3, duration: TimeInterval)
    

    这只是将我们的节点移动到一个新位置:

    let moveAction = SCNAction.move(to: SCNVector3(1.5, 0, -1.5), duration: 5)
    nodeToAdd.runAction(moveAction)
    

    希望这会为您指明正确的方向。

    【讨论】:

    • 很好的答案!非常感谢!
    • 很高兴为您提供帮助:)
    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2017-11-13
    相关资源
    最近更新 更多