How to I turn off the ambient light in Scene Kit (with Swift)?

scenekit, swift

Solution

It looks like you are seeing the "default" lighting.

You can explicitly disable it by calling

gameView.autoenablesDefaultLighting = false

It will also be disables as soon as you add your own lights to the scene.

Problem

When I create a new Scene Kit Game using the Swift language, there is already some come which gives this result : I want to turn off the ambient light which is lighting the cube but I don't get how to do that since there isn't any light explicitly attached to any node. Her's the Game View Controller code : ``` import SceneKit import QuartzCore class GameViewController: NSViewController { @IBOutlet var gameView: GameView override func awakeFromNib(){ // create a new scene let scene = SCNScene() // create and add a camera to the scene let cameraNode = SCNNode() cameraNode.camera = SCNCamera() scene.rootNode.addChildNode(cameraNode) // place the camera cameraNode.position = SCNVector3(x: 0, y: 0, z: 2) // create and add a 3d box to the scene let boxNode = SCNNode() boxNode.geometry = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.02) scene.rootNode.addChildNode(boxNode) // create and configure a material let material = SCNMaterial() material.diffuse.contents = NSImage(named: "texture") material.specular.contents = NSColor.whiteColor() material.specular.intensity = 0.2 material.locksAmbientWithDiffuse = true // set the material to the 3d object geometry boxNode.geometry.firstMaterial = material // animate the 3d object let animation: CABasicAnimation = CABasicAnimation(keyPath: "rotation") animation.toValue = NSValue(SCNVector4: SCNVector4(x: 1, y: 1, z: 0, w: M_PI*2)) animation.duration = 5 animation.repeatCount = MAXFLOAT //repeat forever boxNode.addAnimation(animation, forKey: "") // set the scene to the view self.gameView!.scene = scene // allows the user to manipulate the camera self.gameView!.allowsCameraControl = true // show statistics such as fps and timing information self.gameView!.showsStatistics = true // configure the view self.gameView!.backgroundColor = NSColor.blackColor() } } ```

Original source