У меня есть ARSceneView, и я использую DetectionImages, чтобы найти плоскость, чтобы я мог добавить узлы на основе изображения, которое я обнаружил.
Моя проблема заключается в том, что все время, когда представление добавляет невидимый плоский узел над узлами, которые я добавил в качестве подузлов в "узле моего изображения", и когда я добавляю TapGestureRecognizer в sceneView, я не могу обнаружить узел, потому что он обнаруживает самолет. Иногда это работает, но когда он добавляет самолет, он не работает.
Когда самолет находится на сцене, мои узлы это
Я хочу, чтобы мои узлы были такими ...
elements 3 элемента
- 0: | нет ребенка>
- 1: SCNNode: 0x1c41f4100 | свет =
- 2: SCNNode: 0x1c43e1000 'DetectableChildrenParent' pos (-0.009494 -0.081575 -0.360098) rot (0.997592 -0.060896 0.033189 1.335512) | 2 детей>
и мои двое детей будут только обнаруживаемыми узлами ..
но это всегда так
elements 4 элемента
- 0: SCNNode: 0x1c01fcc00 pos (-0.093724 0.119850 -0.060124) rot (-0.981372 0.172364 -0.084866 0.457864) масштаб (1.000000 1.000000 1.000000) | камера = | нет ребенка>
- 1: SCNNode: 0x1c01fc200 | свет = | нет ребенка>
- 2: SCNNode: 0x1c01fd100 'DetectableChildrenParent' pos (-0,149971 0,050361 -0,365586) rot (0,996908 0,061535 -0,048872 1,379775) масштаб (1,000000 1,000000 1,000000) | 2 детей>
- 3: SCNNode: 0x1c01f9f00 | геометрия = | нет ребенка>
и всегда обнаруживает последний узел.
Мой код для обнаружения это
@objc func addNodeToScene(withGestureRecognizer recognizer: UIGestureRecognizer) {
let tapLocation = recognizer.location(in: self.sceneView)
let hitTestResults = sceneView.hitTest(tapLocation)
if let node = hitTestResults.first?.node {
print(node.name ?? "")
}
}
Как запустить тест на попадание, чтобы проверить только дочерние элементы DetectableChildrenParent?