在SCNScene中添加摄像头

时间:2015-02-12 14:58:48

标签: swift scenekit

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)
    }  
}

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

1 个答案:

答案 0 :(得分:2)

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

关于移除cameraNode代码时它的工作原理,这是因为如果场景中不存在默认摄像机(并且也设置了pointOfView),则会自动添加默认摄像机。如果场景中没有灯也是一样的。