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
Другие вопросы по тегам