【问题标题】:Change camera FOV (or zoom out) in ARSKView?在 ARSKView 中更改相机 FOV(或缩小)?
【发布时间】:2022-01-03 22:18:27
【问题描述】:

我正在使用ARSKView,它将 2D SpriteKit 与 3D ARKit 混合在一起。当它显示相机 AR 体验时,我注意到相机的视野有点窄(在纵向模式下)。相当于内置相机应用中的 1.5 倍变焦。

我想缩小或扩大视野......即使它只是内置相机应用程序允许的 1 倍分辨率。

有什么办法吗?

【问题讨论】:

    标签: ios camera sprite-kit arkit


    【解决方案1】:

    如果视频在 ARSKView 中显示为放大,很可能是因为它的帧尺寸在一个维度上太大,并且它本质上是在尝试做一个方面填充效果,这会导致其中一个维度被放大。


    确保scene.scaleMode.resizeFill1。接下来,确保 ARSKView width / height 的比例与 configuration.videoFormat.imageResolution 完全相同(如果在纵向模式下交换宽度和高度)。

    就我而言,我在纵向模式下使用手机并使用后置摄像头。 configuration.videoFormat.imageResolution 是 1920 x 1440。因为它是纵向的,所以我记下尺寸为 1440 x 1920(即我把它颠倒了)。接下来我计算了比率:1440 / 1920 = 0.75。因此,在水平方向为 414 像素的 iPhone 11 上,我需要确保 ARSKView 的高度为 552。因为414 / 552 = 0.75

    如果我的 ARSKView 高度太小(例如 207),这会使比率太大(例如414 / 207 = 2)。在这种情况下,可以正常看到视频的整个宽度,但视频的顶部和底部会被裁剪掉。

    如果我的 ARSKView 高度太大(例如 828),这会使比例太小(例如 414 / 828 = 0.5)在这种情况下,我最终会看到视频的整个垂直部分,但水平部分会被缩放以保持纵横比。


    1.fill.aspectFill 等其他填充纵横比可能也适用于您的用例,但您可能不惜一切代价避免使用 .aspectFit行为非常奇怪,无论视图大小如何,都不会向您显示完整的视频分辨率。当您将 ANSKView 的高度从 0 调整为更大时,您会注意到它会裁剪视频的垂直和水平部分,一旦达到 552,它将停止显示(从未达到完整的视频分辨率),并且而是进行缩放,然后添加一个奇怪的黑条以进一步覆盖垂直维度。它还几乎一直在垂直和水平维度上都有黑条,导致用户体验不佳。

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 2017-10-17
      相关资源
      最近更新 更多