arkit - ARKit:更改渲染内容的 FOV
问题描述
我希望在我的 AR 会话中更改渲染内容的视野。显然我们无法更改原始相机 FOV,但我认为应该可以更改渲染的 SceneKit 内容的视野。
在原始 SceneKit SCNCamera 中更改相机视野是微不足道的......但我不知道如何在 ARSCNView 中执行此操作。
解决方案
此代码将从以下位置检索相机(ARSCNView
如果有):
sceneView.scene.rootNode.childNodes.first(where: { $0.camera != nil})
请注意,这将返回相机的关联节点,如果您想直接控制其位置或角度,您可能需要该节点。SCNCamera
本身存储在节点的属性camera
中。
如果可以避免的话,最好不要触摸 AR 相机,因为它会打乱世界模型和场景之间的关联。如果我想要一个可以选择性地使用 AR 来跟踪设备运动和角度但不必转换为真实世界坐标的控制系统(即不显示摄像头馈送的 VR 应用程序),我偶尔会使用这种技术。
本质上,我只会在您使用AROrientationTrackingConfiguration
或类似的情况下这样做。
编辑我可能应该提到 ARKit 会覆盖相机的projectionTransform
属性,因此您可能无法fieldOfView
手动设置。我已经取得了一些成功的设置xFov
和yFov
,但由于这些已被弃用,你不应该依赖它们。
推荐阅读
- erlang - 为什么在 Erlang 中会显示 badarg?
- php - 有没有办法使用未设置的会话
- c - 如何创建一个函数来读取用户插入到 c 中的数组中的数字?
- matlab - 我无法得到 y 的结果
- html - 轻量级网站:使用延迟加载和锚点
- python - 修改一个两字字符串函数以在 Python 中获取 **kwargs?
- wordpress - 产品价格对齐 WooCommerce
- json - Vue根据另一个数组自动选择复选框
- node.js - 当我尝试“npm install firebase-tools -g”时如何修复“publish-please can't be installed global”错误
- mysql - 将 NULL 替换为 mysql 结果中的 \N