忘記allowsCameraControl
和默認攝像頭和燈,如果你想控制你的場景。
let sceneView = SCNView()
let cameraNode = SCNNode() // the camera
var baseNode = SCNNode() // the basic model-root
let keyLight = SCNLight() ; let keyLightNode = SCNNode()
let ambientLight = SCNLight() ; let ambientLightNode = SCNNode()
func sceneSetup() {
let scene = SCNScene()
// add to an SCNView
sceneView.scene = scene
// add the container node containing all model elements
sceneView.scene!.rootNode.addChildNode(baseNode)
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3Make(0, 0, 50)
scene.rootNode.addChildNode(cameraNode)
keyLight.type = SCNLightTypeOmni
keyLightNode.light = keyLight
keyLightNode.position = SCNVector3(x: 10, y: 10, z: 5)
cameraNode.addChildNode(keyLightNode)
ambientLight.type = SCNLightTypeAmbient
let shade: CGFloat = 0.40
ambientLight.color = UIColor(red: shade, green: shade, blue: shade, alpha: 1.0)
ambientLightNode.light = ambientLight
cameraNode.addChildNode(ambientLightNode)
// view the scene through your camera
sceneView.pointOfView = cameraNode
// add gesture recognizers here
}
移動或旋轉cameraNode
以實現視圖中的動作。或者,移動或旋轉baseNode
。無論哪種方式,您的光線相對於相機保持固定。
如果你想讓你的燈相對於模型固定,讓他們的孩子baseNode
而不是相機。
這裏的訣竅是將你的新燈光添加到相機節點或它的一個孩子。這樣,當相機移動時,光線也會移動。嘗試通過['scnView.pointOfView'屬性]訪問默認相機節點(https://developer.apple.com/library/mac/documentation/SceneKit/Reference/SCNSceneRenderer_Protocol/index.html#//apple_ref/occ/intfp/ SCNSceneRenderer/pointOfView)。 – lock
讓你的燈光成爲相機的孩子,讓相機成爲根的孩子。將幾何節點放入容器中,使其成爲根的子項。保持幾何獨立於相機。 (切勿移動根!)默認照明和相機在選項中是基本的。創建你自己的更好,並不那麼困難。 – bpedit
謝謝!我會試試看! –