我正在尝试将 SCNCylinder 节点放在触摸点上的场景中。我总是想显示面向相机的圆柱形状直径。它适用于水平场景,但在垂直场景中存在问题。在垂直场景中,我可以看到圆柱体侧面,但无论相机方向如何,我都想显示面向相机的全直径。我知道根据相机变换需要应用一些变换,但不知道如何。我没有使用平面检测,它是直接添加到场景中的简单节点。
插入节点的代码如下,
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touch = touches.first else {
return
}
let result = sceneView.hitTest(touch.location(in: sceneView), types: [ARHitTestResult.ResultType.featurePoint])
guard let hitResult = result.last else {
print("returning because couldn't find the touch point")
return
}
let hitTransform = SCNMatrix4(hitResult.worldTransform)
let position = SCNVector3Make(hitTransform.m41, hitTransform.m42, hitTransform.m43)
let ballShape = SCNCylinder(radius: 0.02, height: 0.01)
let ballNode = SCNNode(geometry: ballShape)
ballNode.position = position
sceneView.scene.rootNode.addChildNode(ballNode)
}
任何帮助,将不胜感激。