1

我正在使用 google cardboard SDK 为 Android 开发简单的 VR 应用程序以实现统一。我正在使用 unity 5(免费)和最新版本的统一纸板包(0.4.9),我正在索尼 xperia z3 compact(lolipop)和三星 Galaxy Note 3(kitkat)上进行测试

我遇到的问题是,我无法打开抗锯齿,或者更确切地说是 google sdk 包,似乎禁用了它。我不介意有点锯齿状的角落,但问题是当它们足够远时,这些角落会闪烁。我尝试将纹理分开(因为闪烁可能是重叠的结果),但问题仍然存在。

这不可能是针对 android 的统一导出的问题,因为如果我使用统一提供的库存相机构建相同的项目(谷歌纸板统一包中提供的测试示例),插入 Cardboard 主要游戏对象),AA 正在工作。它不能比这更简单,一旦立方体和一个相机......我尝试在播放器设置中打开和关闭 32 位显示缓冲区选项,尝试在统一提示中强制打开 GL ES 2.0 和各种其他勾选/取消勾选复选框通过网络,没有成功。

所以我的问题是,还有其他人有同样的问题吗?以及如何解决?

我希望我的问题和对问题的描述足够详细。

干杯

4

4 回答 4

4

Cardboard.cs 类包含一个 RenderTexture,它是相机渲染的对象,然后通过镜头的失真校正将其重新渲染到手机屏幕。这绕过了 Unity 对屏幕的正常渲染,因此项目的 AA 设置不会有任何影响。

要查看 Unity 中的 AA 设置会产生什么影响,您可以执行以下几项不同的操作:

  1. 关闭 Cardboard.SDK.nativeDistortionCorrection,以便 Unity 直接绘制到屏幕上,或者
  2. 编辑 Cardboard.CreateStereoScreen() 并更改在那里分配的 RenderTexture 的设置。

但是,用于失真的本机代码重新渲染不会在帧缓冲区中使用抗锯齿,因此我不确定您会在 #2 中看到多少效果。无论哪种方式,肯定会有性能损失。

于 2015-04-15T03:40:18.167 回答
0

关闭失真校正可解决此问题。然后您可以将 Unity 项目的抗锯齿设置设置为 4x 或 8x。现在看起来很棒 - 在 iPhone 6+ 上观看时不再出现锯齿。

Unity 5 运行 Google Cardboard SDK v0.5 --

要关闭失真校正:转到层次结构 | 纸板主要 | 在 Inspector 中取消选中失真校正

要在 Unity 中启用 4x 或 8x 抗锯齿:转到编辑 | 项目设置 | 质量 | 在 Inspector 中将 Anti Aliasing 设置为 4x 或 8x Multi Sampling。

于 2015-06-06T06:26:21.973 回答
0

如果您不想关闭失真校正,则需要将纹理的深度从 16 位更改为 32 位,并将纹理的格式更改为 ARGB32。为此,请转到文件BaseVRDevice.cs,然后找到CreateStereoScreen函数并将其更改为

public virtual RenderTexture CreateStereoScreen() {
    Debug.Log("Creating new default cardboard screen texture.");
    return new RenderTexture(Screen.width, Screen.height,32, RenderTextureFormat.ARGB32);
  }
于 2015-07-09T15:45:41.983 回答
0

我遵循了 serg hov 的建议,但是即使在应用该修复程序之后,AA 也无法处理失真问题。

关闭失真没有意义,所以我想知道让失真和 AA 都工作的解决方案是什么。它适用于 Gear VR,所以必须有办法让它适用于 Cardboard VR。

于 2015-08-25T01:49:35.673 回答