Unity gear VR 近距离物体对焦时十字线指针显示双倍

Unity gear VR reticle pointer shows double when focusing on close objects

我正在 Unity 中为 Samsung Gear VR 开发一个 VR 应用程序,我正在尝试实现一个指针,以便用户可以与场景中的对象进行交互。当你看远处的物体时它看起来很好,但是当你关注近处的物体时(这对应用程序机制来说是非常需要的)指针看起来是重复的,所以你需要将所需的物体放在点的中间:P

我试过的

-使用GoogleVR包中自带的GvrReticlePointer for cardboard

-通过向主摄像头添加一个 canvas 来创建我自己的指针,中间有一个图像

-更改一些相机设置,如视野、立体分离等

-通过二维码http://imgur.com/fVrNrQk

配置我的phone

重现步骤(canvas添加到相机)

1.- 在 Unity 中创建一个包含几个要查看的对象的简单场景

2.- 为 android

设置构建设置

3.- 配置播放器设置以启用 "Virtiual Reality Supported"

4.- 添加 Oculus 作为虚拟现实 SDK

5.- 设置包名和最低API级别

6.- 添加一个canvas到相机

7.- 将图像添加到 canvas,十字即可完成工作

观察结果 我正在使用 Unity 5.6.0b10,因为 google cardboard 的网站建议将此版本用于 GoogleVR 包。我正在使用 Samsung Gear VR 和 Samsung Galaxy S6 edge + phone.

已解决

显然,这是一个有据可查的问题,称为 自愿复视 ,这是一个人为错误,而不是软件错误(请阅读此处,Unity 的文档,第 The Reticle 部分 Interaction in VR).

问题是试图将标线放在用户界面的固定点上,就像传统的 3D 游戏一样。当在 VR 中查看更近的物体时,这将导致这种看到双重问题。

解决方案是将标线定位在 3D space 用户正在查看的点上。如果他看得更近,则标线会拉得更近。当然,现在您还必须相应地缩放十字线,这样用户无论从哪里看,都可以看到相同的大小。

Unity也提供了一些关于这个的示例脚本,你可以在assets store中找到它们,叫做VR Samples。

现在我遇到了性能问题(我在移动平台上工作):有时,当你快速转动头部时,你可以看到之前绘制的十字线。但是看起来比双十字线版本好多了。