ARKit:在屏幕上查找SCNNode的坐标

时间:2017-12-27 12:32:20

标签: ios swift arkit scnnode arscnview

我有一个简单的Swift ARKit设置,其中我有一个SCNNode,其中有一个在ARSCNView中可见的3D对象。

我想在ARSCNView上确定该对象的2D坐标。这是指对象在绘制到屏幕上时的x坐标和y坐标。

我提供了一个草图来说明我的意思: Sketch

有没有办法获得这些坐标,或者至少是近似值?我需要这个,以便使用相机框架进行进一步处理。基本上我对对象在屏幕上占据的区域感兴趣。

1 个答案:

答案 0 :(得分:1)

您可以使用SCNSceneRenderer projectPoint:point

  

将一个点从场景的3D世界坐标系投影到渲染器的2D像素坐标系。

let node:SCNNode = // Your node
let nodeWorldPosition = node.position
let nodePositionOnScreen = renderer.projectPoint(nodeWorldPosition)
let x = nodePositionOnScreen.x
let y = nodePositionOnScreen.y

注意:从近(resp。far)裁剪平面投影的点的z分量将为0(resp。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