【问题标题】:Unable to change FOV of the google card board camera无法更改谷歌纸板相机的 FOV
【发布时间】:2017-02-15 18:57:45
【问题描述】:

我正在使用 Google Card Board Unity SDK 为 Android 开发一款狙击游戏。现在需要调整相机的 FOV,这导致我与 CardBoard.cs 中名为“mockFieldOfView”的变量进行交互。在 Unity 编辑器中调整该值很好,但一旦我为 Android 构建了它,它根本不会生效。我无法弄清楚这个问题。任何想法或建议将不胜感激。

为迟到的回复道歉,所以你可以在这里看到完整的 Cardboard.cs Cardboard.cs

【问题讨论】:

  • 我们需要看一些代码才能做出初步的猜测。

标签: android unity3d google-cardboard


【解决方案1】:

您不想更改“mockFieldOfView”。这只影响编辑器内的 FOV。您要更改的值是 StereoController 上的“matchMonoFOV”。您还必须在 StereoController 上设置一个“CenterOfInterest”游戏对象。它使立体 FOV 尝试匹配主摄像机(或具有 StereoController 脚本的任何摄像机)上的 FOV。

StereoController.cs

更新:Cardboard SDK v0.4.5 支持您的用例。使用“matchByZoom”并在 StereoController 的相机上设置所需的 FOV。不需要兴趣中心。

【讨论】:

  • 嗨,smd,我尝试更改“matchMonoFOV”,似乎它与更改 FOV 非常相似,这很好,但是当我旋转头部时,我发现了非常奇怪的行为。现在发生的事情是在“matchMonoFOV”中发生变化,翻译作为 Player 的孩子的相机。当玩家旋转它的头部时,摄像机会转向观众并因为它的平移而离开并穿过地形。我将如何解决它(如何避免相机平移而不是我们需要旋转)?
  • 单镜头的FOV是多少? CenterOfInterest 游戏对象在哪里?
  • 啊,既然你提到这是一个狙击游戏,我猜问题是看瞄准镜的时候?我认为 matchMonoFOV 方法不是解决这种情况的方法。通过示波器观看不是 VR 情况。
  • 你能做个实验吗?编辑 CardboardEye.cs 并注释掉这两行:“camera.projectionMatrix = proj;”和“camera.fieldOfView = [复杂的数学];”这将使每个立体眼睛的 FOV 与父摄像机相同。当您将父相机设置为“通过范围查看”FOV 时,它的效果会更好吗?
【解决方案2】:

我遇到了同样的问题,在我的情况下,它有助于将 MainCamera 更靠近对象,在我的情况下是汽车的驾驶舱。

为了使 MainCamera 与对象的距离小于 1 米,您必须更改 Cardboard.cs 中的默认最小值 - 我使用以下设置:

private readonly Vector2 defaultComfortableViewingRange = new Vector2(0.0f, 100000.0f);

【讨论】:

  • 您可以通过清除 StereoController 的“检查立体声舒适度”框来禁用舒适度范围检查。这将完全绕过查看范围矢量的检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-13
  • 2014-04-08
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多