在利用Unity3D以及Vuforia开发AR项目
问题:
摄像头无法聚焦
前提知识:
在Vuforia焦点模式下的行为(1.5版以上),描述如下:
FOCUS_MODE_NORMAL -通过设备提供的默认的对焦模式
FOCUS_MODE_TRIGGERAUTO -设置此对焦模式将触发一个自动对焦操作。
FOCUS_MODE_CONTINUOUSAUTO -首发的Android 2.3和iOS设备这一对焦模式下可切换式驱动级的连续自动对焦的摄像头。这是AR的应用程序的最佳对焦模式,因为它保证了相机聚焦在目标上,从而产生最佳的跟踪结果。
FOCUS_MODE_INFINITY -设置相机为“无穷大”,通过摄像头驱动程序的实现提供。(不支持IOS)。
FOCUS_MODE_MACRO -设置相机“微距”模式,由相机驱动程序的实现提供。这提供了特写(APPX。15厘米),在AR调校很少使用的距离急剧摄像机图像。(不支持IOS)。
我们鼓励使用FOCUS_MODE_CONTINUOUSAUTO在你的应用程序时,它可以在设备上。当设置该模式时,如果返回值setFocusMode()为TRUE时应用程序将提供锋利的照相机图像的两个上级渲染,以及超棒跟踪性能。
如果FOCUS_MODE_CONTINUOUSAUTO不可用,接下来最好的选择是实现“触摸聚焦”在你的应用程序的行为。要做到这一点,引发setFocusMode()与FOCUS_MODE_TRIGGERAUTO值每个用户触摸屏幕的时间。这种行为的缺点是,大多数摄像头的驱动程序随机选择一个方向集中(或近或远),所以你有50%的几率使图像散焦,然后集中在目标上。由于在此焦点的逻辑一定条件下的跟踪可能会丢失了一会儿,直到清晰的图像是由相机再次提供。
FOCUS_MODE_INFINITY和FOCUS_MODE_MACRO是在某些应用场合可使用的,如上所述。
FOCUS_MODE_NORMAL设置相机在默认模式下的摄像头驱动程序定义。Setting Focus Mode with the Vuforia Unity Extension C# API
bool focusModeSet = CameraDevice.Instance.SetFocusMode(
CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
if (!focusModeSet) {
Debug.Log("Failed to set focus mode (unsupported mode).");
}
来自http://blog.csdn.net/liang_704959721/article/details/39227101
解决方式:
1.新建C#绑定ARCamera
unity C#
bool
focusModeSet = CameraDevice.Instance.SetFocusMode( CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
if
(!focusModeSet) { Debug.Log(
"Failed to set focus mode (unsupported mode)."
);
using Vuforia;