Scenekit 默认摄像机位置没有改变?

Scenekit 默认摄像机位置没有改变?,scenekit,Scenekit,所以我试图理解AllowCameraControl是如何工作的 我有一个场景,我将AllowCameraControl设置为true。当我四处平移,场景旋转或平移(两个手指…)时,我不明白场景工具包对我来说真正改变了什么 我希望摄影机节点更改位置或旋转。事实并非如此。 我还记录了场景根节点的位置和旋转…没有变化 因此,为了清楚起见,在为每个帧更新调用的渲染代理中,我记录了我为场景设置的摄影机节点的位置和旋转,我记录了根节点的位置和旋转,我还记录了我添加到场景中的节点的te位置和旋转。这些都没有显

所以我试图理解AllowCameraControl是如何工作的

我有一个场景,我将AllowCameraControl设置为true。当我四处平移,场景旋转或平移(两个手指…)时,我不明白场景工具包对我来说真正改变了什么

我希望摄影机节点更改位置或旋转。事实并非如此。 我还记录了场景根节点的位置和旋转…没有变化

因此,为了清楚起见,在为每个帧更新调用的渲染代理中,我记录了我为场景设置的摄影机节点的位置和旋转,我记录了根节点的位置和旋转,我还记录了我添加到场景中的节点的te位置和旋转。这些都没有显示位置和/或旋转的任何变化


有人能解释一下,当使用标准摄影机控件旋转或平移场景时,场景工具包会发生什么变化吗?

将创建一个新摄影机,而保留原始摄影机不变

如果使用
showsStatistics
属性显示检查器,您将注意到视角从您拥有的摄影机(即使它是“无标题”)更改为
kSCNFreeViewCameraName

遗憾的是,关于这种行为的文档并不多,但您可以在节点层次结构中找到它


让我们知道你发现了什么

确实创建了一个新的摄影机,而保留了原来的摄影机。场景图也保持不变。新相机不是场景图的一部分,可以通过
scnView.pointOfView刚刚发现了一种简单的方法,可以检测SceneKit使用KVO切换新摄像头的时刻

斯威夫特5 在类中声明observer属性:

var povObserver: NSKeyValueObservation?
然后,设置观察者:

povObserver = defaultCameraController.observe(\.pointOfView, options: [.new]) {  (cameraController, change) in
    if let newPov = cameraController.pointOfView {
        // Access new camera here
    }
}

完成后,您可以将
povObserver
设置为nil

,这是正确的。我可以看到一个新的相机创建。这是日志。POV=POV=POV=。