ARKit: поиск координат SCNNode на экране
У меня есть простая установка Swift ARKit, где у меня есть SCNNode с 3D-объектом, который виден в ARSCNView.
Я хочу определить двухмерные координаты этого объекта в ARSCNView. Под этим я подразумеваю x- и y-координаты, которые имеет объект, когда он рисуется на экране.
Я представил эскиз, чтобы проиллюстрировать, что я имею в виду:
Есть ли способ получить эти координаты или хотя бы приближение? Мне это нужно для дальнейшей обработки с помощью рамки камеры. В основном меня интересует область, которую объект занимает на экране.
0 ответов
Ты можешь использовать SCNSceneRenderer projectPoint:point
:
Проецирует точку из трехмерной мировой системы координат сцены в двухмерную пиксельную систему координат средства визуализации.
let node:SCNNode = // Your node
let nodeWorldPosition = node.position
let nodePositionOnScreen = renderer.projectPoint(nodeWorldPosition)
let x = nodePositionOnScreen.x
let y = nodePositionOnScreen.y
Примечание. Точка, проецируемая из ближней (соответственно удаленной) плоскости отсечения, будет иметь компоненту z, равную 0 (соответственно 1).
Тот же метод может быть использован с ARAnchor
:
let anchor:ARAnchor = // ...
let anchorWorldPosition = SCNVector3(anchor.transform.columns.3)
let anchorPositionOnScreen = renderer.projectPoint(anchorWorldPosition)
let x = anchorPositionOnScreen.x
let y = anchorPositionOnScreen.y