【发布时间】:2019-09-18 02:19:46
【问题描述】:
我尝试通过.autoenablesDefaultLighting 实例属性在 SCNView 中打开和关闭默认照明,但不起作用(无论是在 UI 中还是以编程方式)。
当没有光的时候,我需要所有的物体都是黑色的。
如何关闭默认照明?
这是一个代码:
import SceneKit
import QuartzCore
class GameViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let scnView = SCNView(frame: NSRect(x: 0,
y: 0,
width: 450,
height: 300))
view.addSubview(scnView)
scnView.autoenablesDefaultLighting = false // DOESN'T WORK
scnView.allowsCameraControl = true
scnView.backgroundColor = NSColor.blue
let scene = SCNScene()
scnView.scene = scene
let sphereGeo = SCNSphere(radius: 2)
sphereGeo.segmentCount = 4
sphereGeo.materials.first?.diffuse.contents = NSColor.lightGray
let sphereNode = SCNNode(geometry: sphereGeo)
sphereNode.name = "Sphere Node"
scene.rootNode.addChildNode(sphereNode)
}
}
【问题讨论】:
-
我的问题是关于默认照明属性——而不是其他灯具(例如定向光、全方位、环境等)
-
这些是完全不同的问题。
-
该答案解释的是,如果您的场景中没有灯光,
autoenablesDefaultLighting = false将无效。 -
是的,我的场景中没有灯光,只有无法关闭的默认灯光。请检查代码。