2016-11-07 87 views
1

我正在开发一款使用Unity3d和Google Cardboard SDK的应用程序。我一直在试图获得单个Cardboard相机的视野属性。这在编辑器中工作正常,但是,当我将它构建到Android时,相机的fieldOfView属性似乎返回错误的值。如何获得谷歌纸板相机FOV?

Camera cam = GameObject.FindWithTag("Camera_Left").GetComponent<Camera>(); 
float fov = cam.fieldOfView; 

这是访问它的正确方法吗?

任何建议非常感谢!

编辑

为了说明我不需要改变视角。我只需要访问相当准确的垂直FOV值。我正在尝试计算游戏对象在使用FOV时会出现在相机上的大小。

回答

2

使用VR时,有很多值决定了fieldOfView。这不仅仅是Camera.fieldOfView属性。应该使用StereoController类来消除这种情况。

StereoController stereoCtrl = GvrViewer.Controller; 
Debug.Log("Fov: "+stereoCtrl.matchMonoFOV); 

还有其他变量来看待,如stereoCtrl.stereoMultiplierstereoCtrl.matchByZoom

+0

嗨,我看看这个。但是,除非我错误matchMonoFOV范围介于0和1之间,并设置VR摄像机匹配单声道摄像机的FOV的程度。 为了说明我不需要更改FOV。我只需要一个相当准确的垂直FOV值。我正在尝试计算游戏对象对相机的尺寸,具体取决于相机和FOV之间的距离。 – Matt

+0

**“为了澄清我不需要更改FOV”**我没有更改我的代码中的任何内容。 'StereoController stereoCtrl = GvrViewer.Controller'将获得当前实例'StereoController',以便我们可以通过'stereoCtrl.matchMonoFOV'访问它的属性。所以,你的评论和编辑在你的问题没有意义。 – Programmer

+0

你只需要找到一种方法来将'0和1'转换成一个角度。 'matchMonoFOV'就是你要找的。 – Programmer