如何从scenekit中的2D点准确获取3D点?

时间:2017-05-10 13:58:41

标签: ios swift graphics scenekit

我需要能够点击视图,获取X,Y点击位置,然后使场景包节点出现在该位置,包括深度。因此,如果我点击屏幕顶部,它会显得很远,如果更低,则更接近。它需要考虑相机视图的旋转,横向位置,并且应该出现在屏幕上的确切位置。 Snapchat可以很好地利用他们最新的增强现实对象,如图所示。

https://cnet3.cbsistatic.com/img/zjwcEw0O0BQ7smi3X1KrksTliu4=/fit-in/270x0/2017/04/17/0fae55ef-4d61-4b0f-80ec-de943ae1dc7b/snapchat-world-lenses.gif

我听说过scenekits投射/未投影点,并尝试了答案 How to use iOS (Swift) SceneKit SCNSceneRenderer unprojectPoint properly

let projectedOrigin = scnView.projectPoint(SCNVector3Zero)  

let vpWithZ = SCNVector3(x: tapX, y: tapY, z: projectedOrigin.z)
let worldPoint = scnView.unprojectPoint(vpWithZ)

然而,移动到worldPoint节目的节点在我点击的任何地方看起来都很近(我如何缩放它?),即使它显示出横向工作的迹象,也是非常不准确的。我希望它像在Snapchat中一样沿着xz平面移动。投影系统如何实现它(在其他地方没有很好地解释),还有更好的选择吗?

谢谢。

0 个答案:

没有答案