如何在ARKit中使用垂直检测?

时间:2018-11-28 17:16:08

标签: swift augmented-reality arkit

如何在ARKit上垂直插入SCNScene?我无法扣留并将物体垂直放置。

override func viewDidLoad() {
    super.viewDidLoad()

    // Set the view's delegate
    sceneView?.delegate = self

    // Show statistics such as fps and timing information
    sceneView?.showsStatistics = true

    // Create a new scene
    let scene = SCNScene(named: "art.scnassets/tabellone.scn")

    sceneView?.debugOptions = [SCNDebugOptions.showFeaturePoints]

    // Set the scene to the view
    sceneView?.scene = scene!
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    // Create a session configuration
    let configuration = ARWorldTrackingConfiguration()

    configuration.planeDetection = .vertical
    configuration.isLightEstimationEnabled = true

    // Run the view's session
    sceneView?.session.run(configuration)
}

1 个答案:

答案 0 :(得分:0)

您需要合适的垂直表面进行跟踪。具有纯色(没有可区别特征)的墙是非常不好的情况(您可以在左侧图像中看到这样的垂直表面)。跟踪垂直表面的最可靠方法是照明良好的砖墙,上面有图片的墙壁或图案可区分的墙壁等。

enter image description here

所以正确的图像是跟踪和垂直平面检测的很好的例子。

如果要探索如何将3D对象放置到检测到的平面上,请查看Apple的Handling 3D Interaction and UI Controls in AR项目。

希望这会有所帮助。