Ios 从触摸位置获取SCNNode环境中的矢量
我有我的相机的位置和方向,屏幕上的CGPoint触摸位置,我需要在我的3d SCNNode环境中我在屏幕上触摸的方向上的线(最好是矢量),我如何才能得到它?Ios 从触摸位置获取SCNNode环境中的矢量,ios,swift,vector,scenekit,scnnode,Ios,Swift,Vector,Scenekit,Scnnode,我有我的相机的位置和方向,屏幕上的CGPoint触摸位置,我需要在我的3d SCNNode环境中我在屏幕上触摸的方向上的线(最好是矢量),我如何才能得到它? 代码片段将非常有用。您可以使用此方法 此方法由SCNView实现,将点的坐标作为SCNVector3。在视图的坐标空间中设置前两个图元。Apple介绍了第三个元素的使用: “点”参数的z坐标描述相对于渲染器视锥台的近剪裁平面和远剪裁平面(由其定义)取消投影点的深度 观点 节点)。取消投影z坐标为0.0的点将返回近剪裁平面上的点;取消投影z坐
代码片段将非常有用。您可以使用此方法 此方法由
SCNView
实现,将点的坐标作为SCNVector3
。在视图的坐标空间中设置前两个图元。Apple介绍了第三个元素的使用:
“点”参数的z坐标描述相对于渲染器视锥台的近剪裁平面和远剪裁平面(由其定义)取消投影点的深度
观点
节点)。取消投影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)
}