SceneKit:向相机节点添加定向光没有效果
SceneKit: adding directional light to camera node has no effect
根据建议 ,目标是向场景添加环境光以及向相机添加定向光。
这适用于 Xcode 场景编辑器,定向光设置为 70% 白色,环境光设置为 50% 白色。定向光的欧拉角使用默认值。
编码此排列失败。就好像没有添加定向光一样。对现场没有影响;好像只有环境光存在。
欧拉角 x
分量的不同值没有区别 -- PI/2、PI 和其他值已尝试但仍然没有变化。
但是,将定向光添加到场景的根节点 (scene.rootNode.addChildNode(directionalLightNode)
) 确实会将光添加到场景中。
fileprivate func addLightNode() {
// Create ambient light
let ambientLightNode = SCNNode()
ambientLightNode.light = SCNLight()
ambientLightNode.light!.type = .ambient
ambientLightNode.light!.color = UIColor(white: 0.70, alpha: 1.0)
// Add ambient light to scene
scene.rootNode.addChildNode(ambientLightNode)
// Create directional light
let directionalLight = SCNNode()
directionalLight.light = SCNLight()
directionalLight.light!.type = .directional
directionalLight.light!.color = UIColor(white: 1.0, alpha: 1.0)
directionalLight.eulerAngles = SCNVector3(x: 0, y: 0, z: 0)
// Add directional light to camera
let cameraNode = sceneView.pointOfView!
cameraNode.addChildNode(directionalLight)
}
创建一个 SCNNode,例如名称为 cameraNode。
创建一个SCNCamera,赋值给cameraNode的camera属性。
将 cameraNode 添加到场景中(作为 rootNode 的子节点)。
之后,您可以将灯光节点添加为 cameraNode 的子节点,或者假设它是唯一的相机,作为 pointOfView 节点(现在代表您创建并添加到场景中的 cameraNode)的子节点。默认相机及其 pointOfView 节点不是场景对象层次结构的一部分。
根据建议
这适用于 Xcode 场景编辑器,定向光设置为 70% 白色,环境光设置为 50% 白色。定向光的欧拉角使用默认值。
编码此排列失败。就好像没有添加定向光一样。对现场没有影响;好像只有环境光存在。
欧拉角 x
分量的不同值没有区别 -- PI/2、PI 和其他值已尝试但仍然没有变化。
但是,将定向光添加到场景的根节点 (scene.rootNode.addChildNode(directionalLightNode)
) 确实会将光添加到场景中。
fileprivate func addLightNode() {
// Create ambient light
let ambientLightNode = SCNNode()
ambientLightNode.light = SCNLight()
ambientLightNode.light!.type = .ambient
ambientLightNode.light!.color = UIColor(white: 0.70, alpha: 1.0)
// Add ambient light to scene
scene.rootNode.addChildNode(ambientLightNode)
// Create directional light
let directionalLight = SCNNode()
directionalLight.light = SCNLight()
directionalLight.light!.type = .directional
directionalLight.light!.color = UIColor(white: 1.0, alpha: 1.0)
directionalLight.eulerAngles = SCNVector3(x: 0, y: 0, z: 0)
// Add directional light to camera
let cameraNode = sceneView.pointOfView!
cameraNode.addChildNode(directionalLight)
}
创建一个 SCNNode,例如名称为 cameraNode。 创建一个SCNCamera,赋值给cameraNode的camera属性。 将 cameraNode 添加到场景中(作为 rootNode 的子节点)。
之后,您可以将灯光节点添加为 cameraNode 的子节点,或者假设它是唯一的相机,作为 pointOfView 节点(现在代表您创建并添加到场景中的 cameraNode)的子节点。默认相机及其 pointOfView 节点不是场景对象层次结构的一部分。