Я создаю самолеты, используя ARKit, и если я вручную удаляю самолет, я не могу обнаружить самолеты в том же положении.
Для обнаружения самолетов я установил конфигурацию сцены
let config = ARWorldTrackingConfiguration()
config.worldAlignment = .gravity
config.providesAudioData = false
config.isLightEstimationEnabled = true
...
else if ARMode == .floor {
self.ARMode = .floor
scannerBox.isHidden=true
focusNode?.isHidden=false
plusButton.isHidden=true
config.planeDetection = .horizontal self.planeTexture="test.scnassets/Textures/Surface_Texture.png"
}
...
sceneView.session.run(config)
Добавить плоскость к сцене в функции рендерера
let planeNode = self.createARPlaneNode(planeAnchor: planeAnchor,
color: UIColor.yellow.withAlphaComponent(0.5))
node.addChildNode(planeNode)
Если на плоскости нажать определенную кнопку и удалить другие объекты
scene.rootNode.enumerateChildNodes { (node, _) in
print(node.name)
if (node.name == "sphere" ) {
node.removeFromParentNode()
}
if ( node.name == "surfacePlane") {
node.removeFromParentNode()
}
if(node.name != nil){
if (node.name?.contains("ProductModel_"))! {
node.removeFromParentNode()
}
}
}
Когда приведенный выше код запускает самолеты, сферы и продукты исчезают, как и ожидалось.
Если я попытаюсь отсканировать поверхность в другом месте комнаты, она будет работать как положено, но если я попытаюсь отсканировать, где была плоскость, и сгенерировать новую, она не будет работать. Он не будет генерировать новый самолет, и если соседние самолеты расширяются, чтобы покрыть ту же область, они исчезают.
Я полагаю, что проблема, вероятно, в том, что геометрия сцены удаленных плоскостей все еще присутствует и препятствует появлению новых плоскостей в том же пространстве.
Как временная работа вокруг меня и остановки и запуска сеансов AR, и это удаляет самолеты.
let config = sceneView.session.configuration as!
ARWorldTrackingConfiguration
config.planeDetection = .horizontal
sceneView.session.run(config,
options: [.resetTracking, .removeExistingAnchors])
Я пытаюсь определить, почему это так, и плоскости не обрабатываются так же, как объекты, которые я явно поместил в сцену.