使用Android和Android的相机方向错误Vuforia

时间:2017-01-24 09:42:07

标签: android unity3d camera vuforia android-hardware

我们正在开发自己的基于Android的硬件,我们希望将Vuforia(通过Unity3D开发)用于某些应用程序。但是,我们在使用当前的相机方向设置使Vuforia正常工作时遇到了问题。

在我们的硬件上,当相机水平放置时 - 一切正常。也就是说,当相机与显示器的放置平行时。但是,我们需要将摄像机垂直放置,换句话说,与显示器的位置有90度的差异。这些都是硬件设置。我们的内核根据这些设置进行编程,并且利用相机的所有其他程序与所有设备兼容,包括我们的IMU传感器。但是,使用Vuforia开发的应用程序在垂直放置相机时表现得非常奇怪。

我们假设问题与Vuforia处理原始相机数据的算法有关,但我们不确定。而且,我们不知道如何解决这个问题。有关详细信息,我可以列出:

- 当"启用视频背景"如果打开,投影图像会失真,并且没有可用的视频输入。 AR投影出现在黑色背景上,尺寸扭曲。

- 当"启用视频背景"打开并且设备旋转,黑色背景被闪烁的纯色替换。

- 当"启用视频背景"如果关闭,AR投影具有正常尺寸(无失真),但是使用错误的轴设置进行跟踪。例如,当目标在现实世界中向左移动时,投影会向上移动。

- 当"启用视频背景"关闭并且设备旋转,与设备处于默认状态时的外观相比,AR投影更大。

我很乐意提供您需要的更多信息。

非常感谢,祝你有愉快的一天。

PS:我们发现使用相机作为主要用途的应用程序(相机应用程序,条形码扫描仪等)工作正常,而相机使用额外质量的应用程序(如某些游戏)则存在同样的问题作为Vuforia。这让我觉得访问摄像头的应用程序可以正常工作,而那些使用Android API和类的用户出于某种原因会失败。

1 个答案:

答案 0 :(得分:1)

首先要了解每个平台处理相机的方式不同,除此之外,Android手机制造商也会以不同的方式处理这些问题。在我的测试中没有vuforia我必须改变飞机我将视频输入转换为0,-90,90用于android / iphone和-270,-90,90用于windows平板电脑。过去这款iPhone后置摄像头被镜像,Android前置摄像头和镜面前置摄像头都被镜像了。这很容易解释,但一个令人讨厌的问题是,谷歌Pixel和三星前置摄像头是镜像的(与后置摄像头上的所有iOS一样),但Nexus 6p镜像在x上。我在这里得到的是有很多设备可以用android来解释,所以尝试不仅仅是那个设备。到目前为止,Vuforia处理了我的像素和我的4台iOS设备。

至于如何解决问题:

进入您的播放器设置以获得统一并查看方向。这里有一些选项,我的应用程序只使用肖像,所以我强制肖像,它似乎工作正常(没有我必须考虑上述情况的问题)。 Vuforia之前不支持自动旋转,因此您需要确保拥有最新版本,因为它听起来就像您需要的那样。如果设置了自动旋转并且它无法正常工作,则可能需要考虑该特定设备(在测试这些设备之前,不要对所有设备执行此操作)。要考虑该设备,请使用if(如果您有不同设备的此问题的多个实例,则构造一个case语句),然后根据需要进行反映或翻译。跨平台开发系统(如统一)并不总能让一切都完美,因为基本上没有标准。在这些情况下,您必须通过在其中创建方法和案例语句来直接解释它们,以便您可以干净地和模块化地操作所有必要的设备。这是一种痛苦,但它会分别为所有设备进行开发。

还有一件事是确保你查看了vuforia配置文件,因为它有一些设置,如相机镜像和方向设置。这些似乎是公共设置,因此如果您需要为一部手机使用“水平翻转”而不是另一部手机,您还应该能够在案例陈述中编写脚本。