默认相机位置没有改变?
Default camera position not changing?
所以我想了解 allowsCameraControl 的真正工作原理。
我有一个场景,我设置了 allowsCameraControl = true。当我四处平移并且场景旋转或平移(两个手指......)时,我不明白场景套件对我来说真正改变了什么。
我原以为相机节点会改变位置或旋转。不是这样的。
我还记录了场景根节点的位置和旋转...没有变化。
所以为了清楚起见,在为每个帧更新调用的渲染委托中,我记录了我为场景设置的相机节点的位置和旋转,我记录了根节点的位置和旋转,我也记录了我添加到场景中的节点的位置和旋转。 None 其中显示位置和/或旋转的任何变化。
任何人都可以向我解释当使用标准相机控件旋转或平移场景时场景套件会发生什么变化?
新相机创建完成,原相机不变。
如果您使用 showsStatistics
属性 向检查员展示,您会注意到视角从您拥有的相机(即使它是 "Untitled")变为 kSCNFreeViewCameraName
.
遗憾的是,关于此行为的文档不多,但您可以在节点层次结构中找到它。
让我们知道您发现了什么!
确实创建了一个新相机,原相机没有改变。场景图也没有改变。新相机不是场景图的一部分,可以使用
scnView.pointOfView
刚刚发现一种简单的方法来检测 SceneKit 使用 KVO 切换新相机的时刻。
Swift 5
在您的 class 中声明观察者 属性:
var povObserver: NSKeyValueObservation?
然后,设置观察者:
povObserver = defaultCameraController.observe(\.pointOfView, options: [.new]) { (cameraController, change) in
if let newPov = cameraController.pointOfView {
// Access new camera here
}
}
完成后,您可以将 povObserver
设置为 nil
所以我想了解 allowsCameraControl 的真正工作原理。
我有一个场景,我设置了 allowsCameraControl = true。当我四处平移并且场景旋转或平移(两个手指......)时,我不明白场景套件对我来说真正改变了什么。
我原以为相机节点会改变位置或旋转。不是这样的。 我还记录了场景根节点的位置和旋转...没有变化。
所以为了清楚起见,在为每个帧更新调用的渲染委托中,我记录了我为场景设置的相机节点的位置和旋转,我记录了根节点的位置和旋转,我也记录了我添加到场景中的节点的位置和旋转。 None 其中显示位置和/或旋转的任何变化。
任何人都可以向我解释当使用标准相机控件旋转或平移场景时场景套件会发生什么变化?
新相机创建完成,原相机不变。
如果您使用 showsStatistics
属性 向检查员展示,您会注意到视角从您拥有的相机(即使它是 "Untitled")变为 kSCNFreeViewCameraName
.
遗憾的是,关于此行为的文档不多,但您可以在节点层次结构中找到它。
让我们知道您发现了什么!
确实创建了一个新相机,原相机没有改变。场景图也没有改变。新相机不是场景图的一部分,可以使用 scnView.pointOfView
刚刚发现一种简单的方法来检测 SceneKit 使用 KVO 切换新相机的时刻。
Swift 5
在您的 class 中声明观察者 属性:
var povObserver: NSKeyValueObservation?
然后,设置观察者:
povObserver = defaultCameraController.observe(\.pointOfView, options: [.new]) { (cameraController, change) in
if let newPov = cameraController.pointOfView {
// Access new camera here
}
}
完成后,您可以将 povObserver
设置为 nil