6

根据此答案中的建议,目标是向场景添加环境光以及向相机添加定向光。

这适用于 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)
}
4

1 回答 1

4

创建一个 SCNNode,例如名称为 cameraNode。创建一个 SCNCamera 并将其分配给 cameraNode 的camera属性。将 cameraNode 添加到场景中(作为 rootNode 的子节点)。

之后,您可以将灯光节点添加为 cameraNode 的子节点,或者,如果它是唯一的相机,则作为 pointOfView 节点的子节点(它现在代表您创建并添加到场景中的 cameraNode)。默认相机及其 pointOfView 节点不是场景对象层次结构的一部分。

于 2018-02-27T19:47:16.763 回答