Улучшение обнаружения самолетов в ARKit iOS Swift - PullRequest
2 голосов
/ 11 мая 2019

Есть ли способ улучшить обнаружение ARKit Plane и сократить время, затрачиваемое на его обнаружение?Здесь мы обнаруживаем горизонтальную плоскость: если мы держим камеру в устойчивом положении, требуется время для ее обнаружения, и она не работает на полу.

Для стола и других подобных поверхностей это занимает около 5–6 секунд.но для пола это больше чем 20 или полминуты, и если мы не перемещаем камеру, это не работает вообще.

Вот мой код: -

   override func viewDidLoad() {
    super.viewDidLoad()
    SVProgressHUD.show(withStatus: "Detecting Plane and Getting ready")
    sceneView.delegate = self
    sceneView.session.delegate = self
    sceneView.showsStatistics = false
    let configuration = ARWorldTrackingConfiguration()
    configuration.planeDetection = .horizontal
    configuration.isLightEstimationEnabled = true

    sceneView.session.run(configuration)
    sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints]
}
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {

    if currentAnchor == nil {
        currentAnchor = anchor

        let light = SCNLight()
        light.type = .directional
        light.color = UIColor(white: 1.0, alpha: 1.0)
        light.shadowColor = UIColor(white: 0.0, alpha: 0.8).cgColor
        let lightNode = SCNNode()
        lightNode.eulerAngles = SCNVector3Make(-.pi / 3, .pi / 4, 0)
        lightNode.light = light
        sceneView.scene.rootNode.addChildNode(lightNode)

        let ambientLight = SCNLight()
        ambientLight.type = .ambient
        ambientLight.color = UIColor(white: 0.8, alpha: 1.0)
        let ambientNode = SCNNode()
        ambientNode.light = ambientLight
        sceneView.scene.rootNode.addChildNode(ambientNode)
    }
    }
}

1 Ответ

0 голосов
/ 18 мая 2019

Я полагаю, пол гладкий и недостаточно текстурированный.Обнаружение поверхности может быть неудачным или может занять слишком много времени по разным причинам - недостаточное освещение, чрезмерно отражающая поверхность, поверхность без достаточного количества деталей или слишком много движения камеры.

Попробуйте переместиться, включить больше света иубедившись, что поверхность достаточно текстурирована.

Гладкие поверхности затрудняют их обнаружение ARKit.Чем более текстурированная поверхность, тем быстрее ARKit обнаружит ее.

...