gpt4 book ai didi

ios - 从触摸位置快速获取 SCNNode 环境中的矢量

转载 作者:行者123 更新时间:2023-11-28 10:53:28 24 4
gpt4 key购买 nike

我有我的相机的位置和方向,屏幕上的 CGPoint 触摸位置,我需要在我的 3d SCNNode 环境中我在屏幕上触摸的方向的线(最好是矢量),我怎样才能得到这个?
代码片段会很有帮助。

最佳答案

您可以使用 SCNSceneRenderer.unprojectPoint(_:)方法。

此方法由 SCNView 实现,将您的点坐标作为 SCNVector3。在 View 的坐标空间中设置前两个元素。 Apple 描述了第三个元素的使用:

The z-coordinate of the point parameter describes the depth at which to unproject the point relative to the near and far clipping planes of the renderer’s viewing frustum (defined by its pointOfView node). Unprojecting a point whose z-coordinate is 0.0 returns a point on the near clipping plane; unprojecting a point whose z-coordinate is 1.0 returns a point on the far clipping plane.

您不是在寻找这些点的位置,而是在寻找连接它们的线。只需减去两者即可得到该行。

func getDirection(for point: CGPoint, in view: SCNView) -> SCNVector3 {
let farPoint = view.unprojectPoint(SCNVector3Make(point.x, point.y, 1))
let nearPoint = view.unprojectPoint(SCNVector3Make(point.x, point.y, 0))

return SCNVector3Make(farPoint.x - nearPoint.x, farPoint.y - nearPoint.y, farPoint.z - nearPoint.z)
}

关于ios - 从触摸位置快速获取 SCNNode 环境中的矢量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44991038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com