Unity+Vuforia ar 摄像机自动对焦

本文介绍了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);

        }

    }

}

你可能感兴趣的:(Unity+Vuforia ar 摄像机自动对焦)