我有一个简单的Swift ARKit设置,其中我有一个SCNNode,其中有一个在ARSCNView中可见的3D对象。
我想在ARSCNView上确定该对象的2D坐标。这是指对象在绘制到屏幕上时的x坐标和y坐标。
我提供了一个草图来说明我的意思:
有没有办法获得这些坐标,或者至少是近似值?我需要这个,以便使用相机框架进行进一步处理。基本上我对对象在屏幕上占据的区域感兴趣。
答案 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