我有一个简单的 Swift ARKit 设置,其中有一个 SCNNode 和一个在 ARSCNView 中可见的 3D 对象。
我想确定该对象在 ARSCNView 上的 2D 坐标。我的意思是对象被绘制到屏幕上时的 x 和 y 坐标。
I have provided a sketch to illustrate what I mean:
有没有办法获得这些坐标,或者至少是近似值?我需要这个来对相机框架进行一些进一步的处理。基本上我对物体在屏幕上占据的区域感兴趣。
您可以使用SCNSceneRenderer projectPoint:point https://developer.apple.com/documentation/scenekit/scnscenerenderer/1524089-projectpoint :
将点从场景的 3D 世界坐标系投影到渲染器的 2D 像素坐标系。
let node:SCNNode = // Your node
let nodeWorldPosition = node.position
let nodePositionOnScreen = renderer.projectPoint(nodeWorldPosition)
let x = nodePositionOnScreen.x
let y = nodePositionOnScreen.y
Note : 从近(或远)剪裁平面投影的点的 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)