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

问题描述 投票:5回答:1

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

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

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

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

ios swift arkit scnnode arscnview
1个回答
2
投票

你可以使用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(分别为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
© www.soinside.com 2019 - 2024. All rights reserved.