摄像机移动时光源没有跟随移动 - SceneKit

3

我的灯光不跟随我的相机。

在将相机添加到场景之前,我已经将灯光作为相机的子节点添加了进去,但这仍然无法解决问题。

    override func viewDidLoad()
    {
        super.viewDidLoad()

        let scene = SCNScene()

        let shipScene = SCNScene(named: "merchant.scn")

        guard let shipNode = shipScene?.rootNode.childNode(withName: "merchant", recursively: true)
        else
        {
            fatalError("ShipModel is not found!")
        }

        shipNode.position = SCNVector3(x:0, y:0, z:0)

        scene.rootNode.addChildNode(shipNode)


        let lightNode = SCNNode()
        lightNode.light = SCNLight()
        lightNode.light?.type = .omni
        lightNode.position = SCNVector3(x:0, y:2, z:10)

        let cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()
        cameraNode.position = SCNVector3(x:0, y:1, z:8)

        cameraNode.addChildNode(lightNode)

        scene.rootNode.addChildNode(cameraNode)


        let sceneView = self.view as! SCNView
        sceneView.scene = scene

        sceneView.showsStatistics = true
        sceneView.backgroundColor = UIColor.gray
        sceneView.allowsCameraControl = true

    }

无论相机的位置如何,灯光仍然只照亮模型的正面。

你确定选定的答案解决了这个问题吗?我也遇到同样的问题,但是在我的情况下,设置“pointOfView”并不是解决方案。我设法让它工作的唯一方法是在每一帧中使用“SCNSceneRendererDelegate”来对齐光和相机。然而,这种策略会导致光/阴影闪烁,所以不好。请参见https://dev59.com/xXEOtIcB2Jgan1znDfwb - West1
1个回答

1
完美。唯一缺少的行如下。
sceneView.pointOfView = cameraNode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接