我希望在AR会话中更改渲染内容的视野。显然,我们不能改变原始的相机视野,但我认为应该可以改变渲染的SceneKit内容的视野。
在原始的SceneKit SCNCamera中,更改摄像机的视野是微不足道的。但我不知道如何在ARSCNView中做到这一点。
发布于 2018-06-14 15:51:33
您也许能够访问ARSCNView的pointOfView属性(然后检索active SCNCamera)。
如果这样做不起作用(ARKit每帧更改一次相机属性等),您可以直接使用ARSession和SCNView来自己编写代码。
请注意,除非您有覆盖整个摄影机流的3D场景,否则更改虚拟摄影机的FoV会破坏AR注册(对齐)。
发布于 2018-06-22 07:26:17
developer documentation for ARSession建议“如果您为AR内容构建自己的渲染器,则需要自己实例化和维护ARSession对象。”
此存储库执行以下操作:https://github.com/hanleyweng/iOS-ARKit-Headset-View
发布于 2019-04-02 15:31:55
此代码将从ARSCNView检索摄像机(如果有):
sceneView.scene.rootNode.childNodes.first(where: { $0.camera != nil})
请注意,这将返回摄影机的关联节点,如果要直接控制其位置或角度,则可能需要该节点。SCNCamera本身存储在节点的camera属性中。
如果可以避免,最好不要触摸AR相机,因为它会扰乱世界模型和场景之间的关联。如果我想要一个控制系统,可以选择使用AR来跟踪设备的运动和角度,但不需要转换为真实世界的坐标(即不显示摄像头视频的VR应用程序),我偶尔会使用这种技术。
从本质上讲,我只有在你使用AROrientationTrackingConfiguration或类似的时候才会这么做。
编辑我应该提到的是,ARKit覆盖了摄像机的projectionTransform属性,因此您可能无法手动设置fieldOfView。我在设置xFov和yFov方面取得了一些成功,但由于它们已被弃用,因此您不应该依赖它们。
https://stackoverflow.com/questions/50842573
复制相似问题