Vuforia开发AR模块 关于控制手机摄像头自动变焦功能多种方式实现

在做AR项目时,手机摄像头不对焦的,导致摄像头在对照物体时不清晰,不易识别。先将各种变焦模式进行总结。希望大家在用到时,能够有所收获。

###### 代码如下:
using UnityEngine;
using System.Collections;
using Vuforia;

public class ChangeCameraFocus : MonoBehaviour {

    /// 
    /// 
    /// 
    /// Sum
    ///     The different focus modes for the active camera
    ///     概要:
    ///         相机的不同变焦模式
    ///         
    ///public enum FocusMode
    ///{
    ///
    ///    FOCUS_MODE_NORMAL = 0,   // 寻常变焦模式
    ///    FOCUS_MODE_TRIGGERAUTO = 1,  // 自动触发 变焦模式
    ///    FOCUS_MODE_CONTINUOUSAUTO = 2,   //  连续自动变焦模式
    ///    FOCUS_MODE_INFINITY = 3, //  无穷即无限变焦模式
    ///    FOCUS_MODE_MACRO = 4 //  宏变焦模式
    ///}
    /// 
    /// 
    void Start () {
        CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
    }

    void Update () {
        //判断执行  相机设备  自动连续变焦模式
        CameraFocusContinuousa();
    }
    /// 
    /// 函数实现:相机变焦模式 为 连续自动变焦模式
    /// 
    /// 功能实现方式:
    ///             当 判断 触屏抬起时, 再次 判断 触屏的次数大于1 且 同时满足 触屏阶段 为 刚开始时,执行 相机设备的 连续自动变焦模式 ; 否则 不执行
    ///    注:
    ///         phase   阶段 、时期
    ///         Began   开始,创建
    /// 
 private void CameraFocusContinuousa() {
        if(Input.GetMouseButtonUp(0))
            if (Input.touchCount >0 && Input.GetTouch(0).phase == TouchPhase.Began)
            {
                CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_CONTINUOUSAUTO);
            }
    }

    /// 
    /// 函数实现:相机设备 为常规变焦模式
    /// 
    /// 函数功能实现:
    ///             同上(常规 Normal)
    /// 
    private void CameraFocusNormal() {
        if (Input.GetMouseButtonUp(0))
            if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
            {
                CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_NORMAL);
            }
    }

    /// 
    /// 函数实现: 相机设备为触发式 变焦模式
    /// 
    /// 函数功能实现:
    ///             同上(触发 Trigger)
    /// 
    private void CameraFocusTriggerAuto() {
        if (Input.GetMouseButtonUp(0))
            if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
            {
                CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_TRIGGERAUTO);
            }
    }

    /// 
    /// 函数实现: 无限变焦模式
    ///         
    /// 函数功能实现:
    ///             同上(无限 Infinity)
    /// 
    private void CameraFocusInfinity() {
        if (Input.GetMouseButtonUp(0))
            if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
            {
                CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_INFINITY);
            }
    }

    /// 
    /// 函数实现: 宏变焦模式
    ///         
    /// 函数功能实现:
    ///             同上(宏  Macro)
    /// 
    private void CameraFocusMacro()
    {
        if (Input.GetMouseButtonUp(0))
            if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
            {
                CameraDevice.Instance.SetFocusMode(CameraDevice.FocusMode.FOCUS_MODE_MACRO);
            }
    }
}

你可能感兴趣的:(Vuforia开发AR模块 关于控制手机摄像头自动变焦功能多种方式实现)