0
我有我的相机的位置和方向,CGPoint触摸位置在屏幕上,我需要在我的3d屏幕上触摸屏幕方向的线条(最好是矢量) SCNNode环境,我怎么能得到这个?
代码片段会非常有帮助。从触摸位置获取SCNNode环境中的矢量swift
我有我的相机的位置和方向,CGPoint触摸位置在屏幕上,我需要在我的3d屏幕上触摸屏幕方向的线条(最好是矢量) SCNNode环境,我怎么能得到这个?
代码片段会非常有帮助。从触摸位置获取SCNNode环境中的矢量swift
对此可以使用SCNSceneRenderer.unprojectPoint(_:)
方法。
该方法由SCNView
执行,将您的坐标作为SCNVector3
。在视图的坐标空间中设置前两个元素。苹果描述了使用所述第三元件的:
点参数的z坐标描述了在其中相对于所述渲染器的观看平截头体的近端和远端剪切平面中的点到unproject深度(通过其 定义pointOfView node)。取消投影z坐标为0.0的点将返回近剪裁平面上的点;取消投影z坐标为1.0的点将返回远剪裁平面上的点。
您不是在寻找这些点的位置,而是寻找连接它们的线。只需减去两者即可获得该线。
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)
}
非常感谢,谢谢 – brw59