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