Поскольку вам нужны узлы ARnchor (чтобы отметить, где был сделан снимок), использование информации с камеры в режиме реального времени вместо снимка будет, вероятно, проще.В частности, из-за того, что пиксели в 2D-изображении имеют ссылки слева направо и сверху вниз (с координатами «0,0», расположенными в верхнем левом углу) ... и мы знаем, что на узлы AR ссылаются в 3D-координатах с помощьюцентр локального узла в виде 0,0,0 координат.
У меня еще нет кода для тестирования, но я думаю, что следующие свойства должны помочь:
let pPoint = sceneView.projectPoint(self.centerBall.position)
let fieldW = sceneView.session.currentFrame?.camera.imageResolution.width
let fieldH = sceneView.session.currentFrame?.camera.imageResolution.height
"pPoint""должен вернуть 2D-координаты, соответствующие (0,0,0) 3D-координатам" centerBall ", оттуда нужно просто сложить или вычесть вычисления, чтобы получить все 4 угла в 2D
Наконец, передав 2D-координатыкаждого угла метода "unprojectPoint ( :)" должен предоставлять трехмерные "мировые" координаты, которые можно преобразовать в координаты "centerBall" с помощью "convertPosition ( position: SCNVector3, from node: SCNNode?") "method
Кажется интересным, поэтому попробую закодировать это до выходных
В конце я подозреваю, что узлы ARanchor могут быть не на 100% стабильными