我有一个 SCNScene。在它里面,我有一个网格(SCNNode)和另一个带有 SCNCamera 的 SCNNode。
let sceneView = SCNView()
let scene = SCNScene()
let meshNode: SCNNode()
lazy var cameraNode: SCNNode = {
let node = SCNNode()
let camera = SCNCamera()
node.camera = camera
return node
}()
用户可以旋转相机来查看周围。 无论何时,我都需要能够获取网格点的坐标、相机正在查看的坐标以及该点的法线向量。
我想更简单地解释一下。想象一下,相机将激光束指向自身前方(沿着它看起来的方向)。这条射线击中了网格。我需要该点的坐标(光线击中网格的位置)。此时是一个法向量。
基本上,我需要的信息与 SCNHitTestResult 提供的信息类似:
let hitResults = sceneView.hitTest(touchPoint, options: [:])
if let result: SCNHitTestResult = hitResults.first {
let localCoordinates = result.localCoordinates
let localNormal = result.localNormal
}
如何获取相机正在查看的网格上某个点的 localCoordinates 和 localNormal?