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轴上用负值和正值改变相机位置,但仍然没有结果。有人能解释我为什么吗?
答案 0 :(得分:2)
您可能希望将SCNView的pointOfView属性设置为cameraNode。我认为应该修复它,假设相机定位正确。
关于移除cameraNode代码时它的工作原理,这是因为如果场景中不存在默认摄像机(并且也设置了pointOfView),则会自动添加默认摄像机。如果场景中没有灯也是一样的。