1

初期化で次のようにカメラを宣言します。

defaultCameraNode.camera = SCNCamera()
defaultCameraNode.position = SCNVector3Make(0, 200, 500)
defaultCameraNode.camera?.zFar = 1000.0
defaultCameraNode.camera?.zNear = 10.0
defaultCameraNode.camera?.xFov = 30.0
defaultCameraNode.camera?.yFov = 30.0
scene.rootNode.addChildNode(defaultCameraNode)
sceneView.pointOfView = defaultCameraNode
defaultCameraNode.constraints = [SCNLookAtConstraint(target: rootNode)]

この後、tapGesture ブロックでヒット テストを行います。

let hitResults = sceneView.hitTest(sender.locationInView(sceneView), options: nil)

これは私が望むものを返し、ノードを取得しました。新しいカメラを追加してシーンの視点を変更した後

var cameraNode = SCNNode()
cameraNode.name = "cameraNode"
cameraNode.position = SCNVector3Make(position.x, position.y + 50.0, position.z + Float(radius * 3))
cameraNode.rotation = SCNVector4Make(1, 0, 0, -atan2f(20.0, 40.0))

var camera = SCNCamera()
camera.zNear = 0.0
camera.zFar = 1000.0
camera.xFov = 40.0
camera.yFov = 40.0
cameraNode.camera = camera    
node.addChildNode(cameraNode)

SCNTransaction.begin()
SCNTransaction.setAnimationDuration(animationDuration)
sceneView.pointOfView = cameraNode
SCNTransaction.commit()

カメラの位置が変更されると、以前に使用したのと同じヒット テストで長さ 0 の配列が返され、コンソールで次のエラーが発生しました。

SceneKit: error, error in _C3DUnProjectPoints

誰でもこれを解決するのを手伝ってくれますか? ありがとう

4

2 に答える 2

0

別のノード (カメラが接続されていないノード) をシーンの視点に設定しているようです。

コードを見てください。カメラ ノードを接続するノードはcameraNodeで、視点を作成するノードはnode(カメラ ノードを追加するノード) です。

于 2015-04-09T14:25:11.750 に答える