3D-объект зависает при перемещении камеры - PullRequest
1 голос
/ 18 июня 2020

3D-объект идеально размещается в ARSCNView, но проблема в том, что, когда объект помещается в AR и перемещает камеру вправо, влево, вверх и вниз слишком быстро, 3D-объект начинает зависать и танцевать где угодно с помощью planeNode исправьте эту проблему, пытаясь найти решение разными способами, но результата не было

func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
    // Cast ARAnchor as ARPlaneAnchor
    guard let planeAnchor = anchor as? ARPlaneAnchor else { return }

    let planeGeometry = ARSCNPlaneGeometry(device: MTLCreateSystemDefaultDevice()!)!
    planeGeometry.update(from: planeAnchor.geometry)

    // Add material to geometry
    let material = SCNMaterial()
    material.diffuse.contents = UIColor.blue.withAlphaComponent(0.8)
    planeGeometry.materials = [material]

    // Create a SCNNode from geometry
    let planeNode = SCNNode(geometry: planeGeometry)
    self.privateNode = planeNode
    self.anchors.append(planeNode)
    DispatchQueue.main.async {
        self.lbl_middle_heading.text = Constants.kSharedAppDelegate?.languageBundle.localizedString(forKey: "Please tap anywhere on screen.", value: "", table: nil)
        self.showFeaturePoints(isShowDeugOptions: false)
    }
    // Add the newly created plane node as a child of the node created for the ARAnchor
    node.addChildNode(planeNode)
}

func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
    // Cast ARAnchor as ARPlaneAnchor, get the child node of the anchor, and cast that node's geometry as an ARSCNPlaneGeometry
    guard
        let planeAnchor = anchor as? ARPlaneAnchor,
        let planeNode = node.childNodes.first,
        let planeGeometry = planeNode.geometry as? ARSCNPlaneGeometry
        else { return }

    planeGeometry.update(from: planeAnchor.geometry)
}

1 Ответ

0 голосов
/ 18 июня 2020

Модель «танцует» или уносится по какой-либо оси в приложении AR по трем основным причинам:

  • если вы импортировали анимированную модель
  • если модель не привязан ARAnchor
  • , если отслеживание вашей сцены плохое

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

...