ARKit:更改呈现内容的FOV

时间:2018-06-13 16:58:05

标签: arkit

我正在寻找改变AR会话中渲染内容的视野。显然我们不能改变原始相机FOV,但我认为应该可以改变渲染的SceneKit内容的视野。

在原始SceneKit SCNCamera中更改摄像机视野是微不足道的...但我不知道如何在ARSCNView中执行此操作。

3 个答案:

答案 0 :(得分:0)

您可以访问pointOfView的{​​{1}}属性(然后检索有效ARSCNView)。

如果这不起作用(ARKit每帧都更改相机属性等),您可以随时使用SCNCamera直接使用ARSession来自行编写代码。< / p>

请注意,除非您的3D场景覆盖整个相机流,否则更改虚拟相机的FoV会破坏AR注册(对齐)。

答案 1 :(得分:0)

developer documentation for ARSession建议“如果您为AR内容构建自己的渲染器,则需要自己实例化并维护一个ARSession对象。”

此仓库执行此操作:https://github.com/hanleyweng/iOS-ARKit-Headset-View

答案 2 :(得分:0)

如果有以下代码,此代码将从ARSCNView中检索照相机:

sceneView.scene.rootNode.childNodes.first(where: { $0.camera != nil})

请注意,这将返回相机的关联节点,如果要直接控制其位置或角度,则可能需要该节点。 SCNCamera本身存储在节点的camera属性中。

如果可以避免,最好不要触摸AR相机,因为它会弄乱世界模型和场景之间的关联。如果我想要一个控制系统,可以选择使用AR来跟踪设备的运动和角度,但又不必转换为实际坐标(即不显示相机供稿的VR应用),则偶尔会使用此技术。

基本上,只有在您使用AROrientationTrackingConfiguration或类似的软件时,我才会这样做。

EDIT 我可能应该提到ARKit会覆盖相机的projectionTransform属性,因此您可能无法手动设置fieldOfView。我在设置xFovyFov方面取得了一些成功,但是由于不推荐使用这些设置,因此您不应该依赖它们。