在 SCNScene 中添加相机

Adding camera in SCNScene

import UIKit
import SceneKit

class Scene: SCNScene {
    var cameraPosition = SCNVector3Make(0, 0, 10)
    var lightPosition =  SCNVector3Make(0, 0, 0)
    var ship = SCNNode()

    func setup() {
        createCameraNode()
        createShipNode()
        createAmbientLight()
        createLight()
    }

    func createCameraNode () {
        let cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()
        cameraNode.position = cameraPosition
        self.rootNode.addChildNode(cameraNode)
    }

    func createShipNode() {
        ship = self.rootNode.childNodeWithName("ship", recursively: true)!
    }

    func createAmbientLight() {
        let ambientLightNode = SCNNode()
        ambientLightNode.light = SCNLight()
        ambientLightNode.light!.type = SCNLightTypeAmbient
        ambientLightNode.light!.color = UIColor.darkGrayColor()
        self.rootNode.addChildNode(ambientLightNode)
    }

    func createLight() {
        let lightNode = SCNNode()
        lightNode.light = SCNLight()
        lightNode.light!.type = SCNLightTypeOmni
        lightNode.position = lightPosition
        self.rootNode.addChildNode(lightNode)
    }  
}

这就是我的代码的样子。我有以下问题。当我在场景中添加相机节点时,我的对象消失了。当我删除函数 createCameraNode 时,一切正常,我的飞船出现在屏幕上。我试图用 z 轴上的负值和正值更改相机位置,但仍然没有结果。有人可以解释一下为什么吗?

您可能希望将 SCNViewpointOfView 属性 设置为 cameraNode。我认为应该修复它,假设相机位置正确。

至于为什么在删除 cameraNode 代码后它会起作用,这是因为如果场景中存在 none(并且设置了 pointOfView,则会自动添加默认相机也)。如果场景中没有灯光也是一样的。