如何获取SCNCamera正在查看的网格点(SCNNode)的局部坐标和局部法线?

问题描述 投票:0回答:1

我有一个 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
}

如何获取相机正在查看的网格上某个点的 localCoordinateslocalNormal

swift scenekit scnnode scncamera
1个回答
0
投票

您可以使用

[SCNNode hitTestWithSegmentFromPoint:toPoint:options:]
来实现这一点。

© www.soinside.com 2019 - 2024. All rights reserved.