本文介绍了Vuforia可用(1.5版及以上)不同的对焦模式。
在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).");
}
示范代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Vuforia;
public class AutoCameraDevice : MonoBehaviour {
void Start()
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
void Update()
{
//自动对焦
//if (m_bIsFocus)
#if UNITY_EDITOR
if (Input.GetMouseButtonUp(0))
#elif UNITY_ANDROID || UNITY_IPHONE
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
#endif
{
CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
}
}
}