屏幕截图#1显示了一个简单的SceneKit场景,只有一个环境光(显式添加,而不是默认的)。
屏幕截图#2显示了添加光点后发生的事情。整层楼变黑了。在SceneKit编辑器中添加光点灯后,此光点灯具有默认属性。
这也发生在一个定向光。
为了清楚起见,了解到场景默认包含环境照明。但是,在添加光斑/方向光之前,我们显式地添加了环境光(甚至用两个环境光进行了测试)。因此,这个问题中提到的默认光理论不再适用。因此产生了混乱。
光点灯和定向灯应该把光添加到场景的特定区域,这是可以理解的。但是他们不应该把他们范围之外的区域变黑,对吧?
新的三维图形和SceneKit,所以任何建议都非常感谢。
截图#1:

截图#2:

发布于 2020-03-04 16:50:23
有什么问题
空SceneKit的场景(没有任何添加的光线)有一个默认的全向光,您可以轻松地打开或关闭:
sceneView.autoenablesDefaultLighting = true让我们看看苹果的文档是怎么说的:
如果该属性的值为false (默认值),则SceneKit用于呈现场景的唯一光源是场景图中包含的光源。如果将值更改为true,则在呈现c不含灯光或只包含环境灯的场景时,SceneKit会自动添加和放置全方位光源。
当你在你的场景中添加灯光时,它们的行为也相应的。主要原则是
rays are parallel to any 3D surface,那么表面将是黑色的。- This behavior is true for **Directional Light** or **Spot Light** with a narrow light-cone.
- That occurs because SceneKit has no [Global Illumination](https://en.wikipedia.org/wiki/Global_illumination) option (or secondary light rays).,这就是为什么你的场景中的地板变成黑色的。
记住-你可以很容易地打开或关闭任何灯:
@IBAction func turnLight(_ sender: NSButton) {
if counter % 2 == 0 {
ambientLightNode.isHidden = true
} else {
ambientLightNode.isHidden = false
}
counter += 1
}解决方案
当你点亮你的场景时,你需要使用几种灯光类型。如果你只使用定向光,你的场景中的一些物体的表面将是黑色的,所以使用低强度的附加环境光-- 200到500流明--来减轻这些黑色表面。不要使用太多的点灯,因为每个点灯是一套6点灯与90度锥。因此,每一个点灯与打开阴影是计算密集型!
附注:
如果您对RealityKit照明感兴趣,请使用读我的故事中档。
https://stackoverflow.com/questions/38624883
复制相似问题