【问题标题】:ARKit - Object stuck to camera after tap on screenARKit - 点击屏幕后物体卡在相机上
【发布时间】:2018-08-01 19:41:39
【问题描述】:

我从您选择 ARKit 项目时获得的模板项目开始。当您运行该应用程序时,您可以看到这艘船并从任何角度查看它。

但是,一旦我允许相机控制并点击屏幕或通过平移放大船,船就会卡在相机上。现在无论我带着相机走到哪里,船都卡在屏幕上。

我浏览了Apple Guide,似乎并没有真正认为这是意外行为,因为这种行为没有任何意义。

缩放或触摸屏幕后如何保持船位固定?

【问题讨论】:

  • 据我所知,allowcameracontrols 不应该与 ARKit 一起使用,但 SceneKit :)
  • 嗯.. 很有趣。也许这就是为什么我正在阅读的这么多文章都在谈论命中测试的原因。让我们看看我能不能解决这个问题。
  • 如果你想操纵你的对象,例如旋转和缩放发布另一个问题,我很乐意回答:)
  • 非常感谢您的帮助。但我想多费点脑筋:)如果我不能,我肯定会很快问一个问题:D
  • 好哲学 :) 先试试再问 :)

标签: ios swift cocoa-touch scenekit arkit


【解决方案1】:

好吧,看起来allowsCameraControl 根本不是答案。这对SceneKit 有好处,但对ARKit 没有好处(也许它对 AR 中的某些东西有好处,但我还不知道)。

为了放大视图,需要 UIPinchGestureRecognizer。

    // 1. Find the touch location
    // 2. Perform a hit test
    // 3. From the results take the first result
    // 4. Take the node from that first result and change the scale
    @objc private func handlePan(recognizer: UIPinchGestureRecognizer) {
        if recognizer.state == .changed {
            // 1.
            let location = recognizer.location(in: sceneView)

            // 2.
            let hitTestResults = sceneView.hitTest(location, options: nil)

            // 3.
            if let hitTest = hitTestResults.first {
                let shipNode = hitTest.node

                let newScaleX = Float(recognizer.scale) * shipNode.scale.x
                let newScaleY = Float(recognizer.scale) * shipNode.scale.y
                let newScaleZ = Float(recognizer.scale) * shipNode.scale.z

               // 4.
                shipNode.scale = SCNVector3(newScaleX, newScaleY, newScaleZ)

                recognizer.scale = 1
            }
        }

关于 #2. 我对另一个名为 hitTest(_:types:)hitTest 方法有点困惑

文档注释

此方法搜索 AR 锚点和检测到的真实世界对象 AR 会话,而不是视图中显示的 SceneKit 内容。寻找 对于 SceneKit 对象,使用视图的 hitTest(_:options:) 方法 而是。

因此,如果您想缩放 node(这是 SceneKit 内容),则无法使用该方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2017-11-20
    • 2021-07-22
    • 2017-02-23
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多